Commit 4f7b4368 authored by Qiwei Ni's avatar Qiwei Ni

Merge branch 'jordi' into 'master'

Revisió de l'apartat Android



See merge request !2
parents 61b9efaa 9e6d5612
Pipeline #1011 passed with stages
in 14 seconds
......@@ -697,31 +697,34 @@ Després de realitzar un commit, observem que el desplegament ha anat bé en la
El funcionament principal d'aquesta aplicació consisteix en: escanejar per trobar els emissors BLE i consultar la informació al servidor web. El servidor retorna la informació i la mostra a l'aplicació. L'aplicació té les següents característiques:
\begin{itemize}
\item Permet a l'usuari seleccionar categories per filtrar les notificacions.
\item Indica la distància que hi ha entre el punt d'interès i l'usuari.
\item Mostra eld emissors BLE pròxims a l'usuari i indica la distància en que es troben.
\item Notifica a l'usuari que s'ha detectat algun emissor BLE quan l'aplicació no està activa.
\end{itemize}
En els següents apartats, s'explicarà breument el sistema Android, els permisos d'Android, l'estructura de dades de l'aplicació, implementació de fer peticions a servidor web, la part d'escaneig d'aplicació i la integració en general.
En els següents apartats, s'explicarà breument el sistema Android, els permisos d'Android, l'estructura de dades de l'aplicació, la implementació per fer peticions web al servidor, l'escaneig d'emissors i la integració en general.
\subsection{Android}
Android \cite{android} és un conjunt de programari per a telèfons mòbils que inclou un sistema operatiu, programari intermediari i aplicacions. El sistema operatiu Android és la plataforma per a telèfons inte\l.ligents amb més vendes.
Android \cite{android} és una plataforma formada per un conjunt de programari per a telèfons mòbils que inclou un sistema operatiu (construït sobre el \textbf{kernel} de Linux), programari intermediari i aplicacions. Android és la plataforma per a telèfons inte\l.ligents amb més vendes.
% https://developer.android.com/training/basics/supporting-devices/platforms.html
Des de la primera versió comercial, Android 1.0, va ser llançada al setembre de 2008, hi hagut moltes versions més. Aquest setembre ja es van publicar la versió 7.0 anomenada Nougat. Actualment, no tots els dispositius Android tenen la ultima versió, per tant, les aplicacions acustomen suportar les versions inferiors fins arribar un punt que hi ha una minoria de gent amb aquestes versions. En general, és una bona pràctica per donar suport a al voltant del 90\% dels dispositius, mentre que l'aplicació sempre sigui compartible amb l'ultima versió.
La primera versió comercial, Android 1.0, va ser llançada al setembre de 2008. Des d'aleshores, s'han publicat moltes versions més. Aquest setembre es van publicar la versió 7.0 anomenada Nougat. Actualment, no tots els dispositius Android tenen la ultima versió, hi ha molta fragmentació. Les aplicacions acostumen a suportar les versions inferiors que tenen un percentatge d'usuaris superior al 5-10\%. En general, és una bona pràctica per donar suport a al voltant del 90\% dels dispositius, i alhora, que l'aplicació sempre sigui compartible amb l'ultima versió.
Les aplicacions Android s'executen sobre una màquina virtual de Java. Acostumen a estar escrits en Java, conjuntament amb l'Android SDK. Android SDK inclou, entre moltes biblioteques, Jack, un compilador de Java que s'encarrega de compilar tots els móduls amb els fitxers de recursos en un sol paquet, anomenat Android Application Package (APK). El fitxer \texttt{.apk} és un fitxer zip que conté totes les dependències de l'aplicació perquè un dispositiu Android pugui fer funcionar l'aplicació. Un cop l'APK està insta\l.lada en el dispositiu, cada aplicació està a la seva \textbf{sandbox}.
Característiques del \textbf{sandbox}:
Les aplicacions Android estan escrits en Java, Android SDK és qui s'encarrega de compilar el codi amb les dades i fitxers de recursos en un sol fitxer, un APK. El fitxer \texttt{.apk} conté tot perquè un dispositiu Android pugui insta\l.lar. Un cop insta\l.lat en el dispositiu, cada aplicació està el seu sandbox:
\begin{itemize}
\item El sistema operatiu Android és un sistema Linux de multi usuari, on cada aplicació és un usuari diferent.
\item Cada aplicació està instal·lada com a un usuari diferent.
\item Per defecte, el sistema operatiu assigna un ID d'usuari únic per cada aplicació. El sistema assigna permisos al fitxers d'aplicació d'manera que només l'usuari que té ID assignat pugui accedir-hi.
\item Per defecte, cada aplicació executa en el seu propi procés i cada procés està en el seu maquina virtual, per tant, les aplicacions s'executen aïllades de les altres.
\item Per defecte, cada aplicació s'executa en el seu propi procés i cada procés està a una instànciade la maquina virtual de Java, per tant, les aplicacions s'executen aïllades entre sí.
\end{itemize}
En la figura~\ref{fig:android_app} representa l'estructura de fitxers en un projecte de Android. Entre tots aquests directoris i fitxers cal destacar els següents:
La figura~\ref{fig:android_app} representa l'estructura de fitxers en un projecte de Android. Entre tots aquests directoris i fitxers cal destacar els següents:
\begin{description}
\item [AndroidManifest.xml] Aquest fitxer proporciona informació essencial sobre l'aplicació i els seus components.
\item [build.gradle] Fitxer de configuracions de construcció.
\item [java] Directori que conté codi font Java.
\item [res] Aquest directori conté els recursos de l'aplicació, com ara, fitxers dibuixables, fitxers de disseny, cadenes d'interfície d'usuari, etc.
\item [AndroidManifest.xml] proporciona informació essencial sobre l'aplicació i els seus components.
\item [build.gradle] definició de dependències i altres configuracions de construcció.
\item [java] directori que conté codi font Java.
\item [res] directori que conté els recursos de l'aplicació, com ara, fitxers dibuixables, fitxers de disseny, cadenes d'interfície d'usuari, etc.
\end{description}
\begin{figure}[H]
......@@ -757,13 +760,14 @@ En la figura~\ref{fig:android_app} representa l'estructura de fitxers en un proj
Els components d'aplicació són elements essencials d'una aplicació Android. Hi ha 4 tipus de components diferents:
\begin{description}
\item [Activitats] Una activitat és un component d'aplicació que proporciona una pantalla que permet a l'usuari interactuar amb la finalitat de fer alguna cosa, tal com marcar el telèfon, fer una foto, enviar un correu electrònic, o veure un mapa. En general, una activitat en una aplicació s'especifica com l'activitat "principal", que es presenta a l'usuari en iniciar l'aplicació per primera vegada.
\item [Serveis] Un servei és un component que s'executa en segon pla per aconseguir operació de llarga execusió o per aconseguir treballar per processos remots.
\item [Proveïdors de content] Un proveïdor de content administra un conjunt de dades compartides.
\item [Activitats] Element visual bàsic d'una aplicació que permet a l'usuari interactuar amb el dispositiu a través de la pantalla, per marcar un número de telèfon, enviar un correu electrònic, o veure un mapa. En general, totes les aplicacions tenen una activitat que s'especifica com l'activitat principal, que es presenta a l'usuari en iniciar l'aplicació.
\item [Serveis] Component que s'executa en segon pla per aconseguir operació de llarga execusió o per aconseguir treballar per processos remots.
\item [Proveïdors de content] Administra un conjunt de dades compartides entre aplicacions.
\item [Receptors de Broadcast] És un component que repon a anunciaments de broadcast de tot el sistema.
\end{description}
Cada activitat es pot iniciar una altra activitat per tal de realitzar diferents accions. Cada vegada que s'inicia una nova activitat, s'atura l'activitat anterior, però el sistema conserva l'activitat en una pila (el "stack"). Quan s'inicia una nova activitat, que s'insereix a la pila de nou i es porta l'atenció a l'usuari. La pila de nou roman en el "últim en entrar, primer a sortir" mecanisme de pila bàsica, de manera que, quan l'usuari es realitza amb l'activitat actual i pressiona el botó Enrere, que s'extreu de la pila (i destruït) i reprèn l'activitat anterior. (La pila de nou es discuteix més en les tasques i documents Tornar Pila).
% Afegit cita sobre el cicle de vida: https://developer.android.com/training/basics/activity-lifecycle/starting.html
Les activitats tenen un cicle de vida: creació, arrencada, pausa, aturada i destrucció. Quan s'inicia una nova activitat, es pausa l'activitat anterior i el sistema conserva l'activitat en una pila. Quan s'inicia una nova activitat, que s'insereix a la pila de nou i es porta l'atenció a l'usuari. Quan l'usuari es realitza amb l'activitat actual i pressiona el botó Enrere, s'extreu de la pila (i es destrueix) i reprèn l'activitat anterior. (La pila de nou es discuteix més en les tasques i documents Tornar Pila).
\subsection{Permisos} % https://developer.android.com/training/permissions/declaring.html
Android s'executa cada aplicació en un sandbox de accés limitat. Si l'aplicació vol utilitzar recursos i informació fora del seu sandbox, ha de so\l.licitar permís explícitament. Hi ha dos tipus de permisos:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment