Change section order
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Raffaele Mignone 2020-07-22 19:05:15 +02:00
parent 0554f432b1
commit e3b7e75072
Signed by: norangebit
GPG Key ID: F5255658CB220573

View File

@ -173,7 +173,7 @@ L'ultima modalità, la ***C***, è quella che tutela maggiormente la privacy deg
- Rotazione dei *tcn* - Rotazione dei *tcn*
- Matching locale - Matching locale
La generazione degli *tcn* avviene attraverso una derivazione deterministica come visto nella @sec:tcn-protocol, in modo tale da avere lo stesso livello di privacy di una soluzione randomica, ma con una migliore scalabilità. La generazione dei *tcn* avviene attraverso una derivazione deterministica come visto nella @sec:tcn-protocol, in modo tale da avere lo stesso livello di privacy di una soluzione randomica, ma con una migliore scalabilità.
Mentre il matching locale permette di condividere il minor numero di informazioni possibili e solo quando questo è strettamente necessario. Mentre il matching locale permette di condividere il minor numero di informazioni possibili e solo quando questo è strettamente necessario.
Infatti in questa modalità l'applicazione carica le informazioni sul server solo in seguito alla richiesta delle autorità sanitarie. Infatti in questa modalità l'applicazione carica le informazioni sul server solo in seguito alla richiesta delle autorità sanitarie.
Inoltre a differenza delle prime due modalità è previsto l'upload unicamente dei *tcn* che il dispositivo ha assunto nel tempo, in questo modo il server non è in grado di conoscere o ricavare i contatti avuti dall'utente. Inoltre a differenza delle prime due modalità è previsto l'upload unicamente dei *tcn* che il dispositivo ha assunto nel tempo, in questo modo il server non è in grado di conoscere o ricavare i contatti avuti dall'utente.
@ -194,7 +194,7 @@ Questa caratteristica, unita alle regole stringenti di utilizzo imposte della li
[^regole-api-apple-google]: Le due società californiane consentono lo sviluppo di applicazioni che fanno uso della loro API solo ad enti governativi e impongo un numero massimo di applicazioni per nazione pari ad uno. [^regole-api-apple-google]: Le due società californiane consentono lo sviluppo di applicazioni che fanno uso della loro API solo ad enti governativi e impongo un numero massimo di applicazioni per nazione pari ad uno.
Dalla documentazione ufficiale non è ben chiaro se questi vincoli riguardino solo la pubblicazione sugli store o anche lo sviluppo. Dalla documentazione ufficiale non è ben chiaro se questi vincoli riguardino solo la pubblicazione sugli store o anche lo sviluppo.
## Interazione via bluetooth ## Interazione via Bluetooth
L'interazione tra l'hardware bluetooth del dispositivo e l'applicazione è stata gestita attraverso l'impiego della libreria *Android Beacon Library* [@AndroidBeaconLibrary] che permette di gestire più facilmente le operazioni con beacon bluetooth. L'interazione tra l'hardware bluetooth del dispositivo e l'applicazione è stata gestita attraverso l'impiego della libreria *Android Beacon Library* [@AndroidBeaconLibrary] che permette di gestire più facilmente le operazioni con beacon bluetooth.
Inoltre per rendere l'applicazione più funzionale, e quindi garantirne il funzionamento anche in background o a schermo spento è stato utilizzato un *foreground service* [@ServicesOverview], che consente di mantenere in *primo piano* le operazioni di trasmissione e scansione anche quando l'applicazione non lo è. Inoltre per rendere l'applicazione più funzionale, e quindi garantirne il funzionamento anche in background o a schermo spento è stato utilizzato un *foreground service* [@ServicesOverview], che consente di mantenere in *primo piano* le operazioni di trasmissione e scansione anche quando l'applicazione non lo è.
@ -292,27 +292,6 @@ $TxPower$ è la potenza di trasmissione nominale che si misurerebbe alla distanz
Il valore di $TxPower$ deve essere precedentemente ricavato per ogni emettitore e deve essere inviato all'interno del beacon bluetooth. Il valore di $TxPower$ deve essere precedentemente ricavato per ogni emettitore e deve essere inviato all'interno del beacon bluetooth.
Lavorando con dispositivi eterogenei tra di loro non è stato possibile calcolare in modo esatto questo valore, ma si è scelto di utilizzare il valore $-59$ poiché si adattava mediamente a tutti i dispositivi utilizzati in fase di test. Lavorando con dispositivi eterogenei tra di loro non è stato possibile calcolare in modo esatto questo valore, ma si è scelto di utilizzare il valore $-59$ poiché si adattava mediamente a tutti i dispositivi utilizzati in fase di test.
## Interfaccia utente
L'applicazione opera prevalentemente in background, ma comunque è dotata di una serie di elementi grafici che consentono all'utente di interagire con essa.
Quando l'applicazione viene avviata per la prima volta l'utente ha la possibilità di scegliere la modalità di funzionamento che desidera utilizzare (si veda @fig:ui-welcome).
Una volta compiuta questa scelta viene chiesto all'utente di concedere l'accesso alla posizione.
Sebbene l'applicazione non utilizzi il GPS o altri strumenti di posizionamento ciò si rende necessario al fine di abilitare la scansione dei beacon BLE anche in background.
![Schermata di benvenuto.](fig/welcome.jpg){#fig:ui-welcome width=130}
La schermata principale dell'applicazione, riportata in @fig:ui-main, si compone di tre elementi:
- `TextView` che indica la modalità di funzionamento.
- `Button` *start/stop* che consente di avviare o stoppare il servizio bluetooth.
Questo pulsante viene abilitato unicamente se sono stati concessi i permessi di accesso alla posizione.
- `Button` *exposed* consente all'utente di raggiungere l'activity, @fig:ui-upload, attraverso la quale è possibile comunicare al server il proprio stato di contagiato.
Nel caso della modalità *B* e *C* vengono caricati sul server anche i dati di contatto presenti sul dispositivo.
![Schermata principale.](fig/main.jpg){#fig:ui-main width=130}
![Schermata per l'upload.](fig/upload.jpg){#fig:ui-upload width=130}
## Memorizzazione ID ## Memorizzazione ID
In base alla modalità di funzionamento l'applicazione deve memorizzare diversi tipi di dati. In base alla modalità di funzionamento l'applicazione deve memorizzare diversi tipi di dati.
@ -378,7 +357,7 @@ interface TCNDataDao {
## Comunicazione report ## Comunicazione report
La comunicazione con il server avviene mediante un brocker MQTT fornito da un altro gruppo di studenti. La comunicazione con il server avviene mediante un broker MQTT fornito da un altro gruppo di studenti.
Come implementazione del client MQTT si è scelto di utilizzare *Paho* [@EclipsePahoMQTT], un client realizzato da Eclipse. Come implementazione del client MQTT si è scelto di utilizzare *Paho* [@EclipsePahoMQTT], un client realizzato da Eclipse.
Questa libreria oltre a fornire un client MQTT per la JVM fornisce anche un *service* per Android che permette di sollevare lo sviluppatore da alcuni dettagli implementativi. Questa libreria oltre a fornire un client MQTT per la JVM fornisce anche un *service* per Android che permette di sollevare lo sviluppatore da alcuni dettagli implementativi.
@ -445,4 +424,25 @@ fun publish(
Le funzionalità di rete sono state testate attraverso l'impiego di un broker pubblico (`tcp://broker.hivemq.com:1883`) ed un'istanza locale di *ActiveMQ Artemis* inoltre è stato utilizzato il topic `exposed-test-topic` per la pubblicazione dei messaggi. Le funzionalità di rete sono state testate attraverso l'impiego di un broker pubblico (`tcp://broker.hivemq.com:1883`) ed un'istanza locale di *ActiveMQ Artemis* inoltre è stato utilizzato il topic `exposed-test-topic` per la pubblicazione dei messaggi.
Entrambi i parametri sono stati settati tramite delle costanti e quindi possono essere modificati facilmente. Entrambi i parametri sono stati settati tramite delle costanti e quindi possono essere modificati facilmente.
## Interfaccia utente
L'applicazione opera prevalentemente in background, ma comunque è dotata di una serie di elementi grafici che consentono all'utente di interagire con essa.
Quando l'applicazione viene avviata per la prima volta l'utente ha la possibilità di scegliere la modalità di funzionamento che desidera utilizzare (si veda @fig:ui-welcome).
Una volta compiuta questa scelta viene chiesto all'utente di concedere l'accesso alla posizione.
Sebbene l'applicazione non utilizzi il GPS o altri strumenti di posizionamento ciò si rende necessario al fine di abilitare la scansione dei beacon BLE anche in background.
![Schermata di benvenuto.](fig/welcome.jpg){#fig:ui-welcome width=130}
La schermata principale dell'applicazione, riportata in @fig:ui-main, si compone di tre elementi:
- `TextView` che indica la modalità di funzionamento.
- `Button` *start/stop* che consente di avviare o stoppare il servizio bluetooth.
Questo pulsante viene abilitato unicamente se sono stati concessi i permessi di accesso alla posizione.
- `Button` *exposed* consente all'utente di raggiungere l'activity, @fig:ui-upload, attraverso la quale è possibile comunicare al server il proprio stato di contagiato.
Nel caso della modalità *B* e *C* vengono caricati sul server anche i dati di contatto presenti sul dispositivo.
![Schermata principale.](fig/main.jpg){#fig:ui-main width=130}
![Schermata per l'upload.](fig/upload.jpg){#fig:ui-upload width=130}
# Riferimenti # Riferimenti