1. Trovare il file .aar di icarus (attualmente icarus-debug.aar, vedi più avanti per guida alla compilazione)
2. da Android Studio: File -> new -> new Module -> selezionare "Import .JAR/.AAR Package" -> selezionare il file del punto 1, dare un nome a come si vuole che venga chiamata la libreria all'interno dell'applicazione e fare finish.
3. Andare nel `settings.gradle` del progetto e guardare se è apparso il nome della libreria importata dato al punto 2.
...
...
@@ -9,31 +10,34 @@
6. Nella parte sx di Android Studio dove vedo la mia struttura del progetto dovrebbe essere apparso il modulo appena importato.
7. Sync gradle and fun!
###Eliminare dipendenza da icarus in un'app
### Eliminare dipendenza da icarus in un'app
1. Il modulo apparso nella struttura di progetto al punto 6 di "Importare Icarus in un'app" è una normale cartella eliminabile dal file system. Eliminarla dunque. *Tip: selezionare il modulo da Android Studio -> tasto dx del mouse -> reveal in finder (su Mac) -> eliminarla.*
2. Andare nel `build.gradle(module:app)` dell'app dalla quale si vuole eliminare la dipendenza a icarus e togliere le righe aggiunte ai punti 4 e 5 di "Importare Icarus in un'app"
3. Andare nel `settings.gradle` del progetto ed eliminare dagli `include` quello che si riferisce alla libreria che si vuole eliminare (in questo caso icarus).
4. Sync gradle and fun!
###Creare da un progetto libreria di Android studio un file .aar
### Creare da un progetto libreria di Android studio un file .aar
1. Seguire innanzitutto [questa guida](https://developer.android.com/studio/projects/android-library.html?#AddDependency) per creare un modulo di Android Studio esportabile come libreria .aar
2. Nel progetto di Android Studio selezionare il modulo corrispondente alla libreria
3. Nella barra degli strumenti di Android Studio -> Build -> Rebuild Project
4. Cambiando vista da quella di "Android" a quella di "Project" dove vedo la struttura del progetto in `<nome_lib>/build/outputs/aar/` dovrei trovare un file libreria del tipo `<nome_lib>-debug.aar`
###Aggiornare la versione della libreria in un'app
### Aggiornare la versione della libreria in un'app
1. Consiglio: eliminarla come nella sezione "Eliminare dipendenza da hermes in un'app", ma dal file `build.gradle(module:app)` commentare solo `implementation project("<nome libreria nel settings.gradle>")` e nel `settings.gradle` lasciare tutto così com'è.
2. Quando si procede all'"Importare Icarus in un'app" dare la path del file .aar aggiornato e avere l'accortezza di dargli lo stesso nome di prima. Basterà decommentare la riga commentata nel punto 1 e il gioco è fatto.
3. Questo anche per prevenire una cosa che spero venga fixata nelle successive versioni di Android Studio: nell'eliminazione del modulo libreria dal file system, esso resta visibile ancora nella struttura del progetto.. Chiamando allo stesso modo il modulo aggiornato, quello rimasto nel progetto si aggiornerà in automatico.
###Usare Icarus all'interno di un'app
###Usare Icarus all'interno di un'app
Con Icarus è possibile tracciare eventi generici, cambio di Activity e cambio di preference (settaggi). Icarus è un Singleton, perciò ogni metodo potrà essere invocato solo dopo aver chiamato `Icarus.getInstance(Context)` dove il Context è quello dell'Avtivity chiamante. Per ogni tracciamento si deve specificare, inoltre un flag che indica se si stanno facendo chiamate da un'app in debug o no.
####Tracciare cambio di Activity
####Tracciare cambio di Activity
`Icarus.getInstance(Context).trackScreen(ScreenTrackResource res boolean debug)`
dove ScreenTrackResource è un'`enum` che permette di specificare se si sta tracciando un ingresso in un'Ativity o un'uscita. Dal `Context` Icarus è in grado di capire che Activity è stata chiamata
####Tracciare cambio di Preference
####Tracciare cambio di Preference
Pensato per le `SharedPreference` è possibile tracciare i cambi di preferenze dei seguenti tipi:
1.`int`
...
...
@@ -49,7 +53,7 @@ Si usa nel seguente modo:
3. è possibile invocare metodi `add...` tutte le volte che si vuole. In automatico Icarus scarta le preference duplicate e quelle che dall'ultimo log non sono cambiate (per esempio se un utente con uno switch fa ON-OFF-ON e il log venisse chiamato dopo l'ultimo ON Icarus non loggherebbe quel cambio di settaggio)
4.`Icarus.getInstance(Context).logUserSettings(UserSettingsResource res, boolean debug)` per loggare al server
####Tracciare un evento
####Tracciare un evento
Pensato per loggare eventi app specific e invocabile in un qualunque punto dell'app richiede l'implementazione di un metodo ausiliario (per semplicità e per evitare di riscrivere mille volte le stesse cose) all'interno dell'app chiamante che aiuti nella creazione dell'oggetto `EventTrackResource` che conterrà tutte le informazioni relative all'evento da tracciare (che sono tante e tutte da passare all'interno del costruttore perchè tutte obbligatorie).
Altro pre-requisito è implementare l'`ActivityRecognition`, per esempio [quella di Google](https://www.androidhive.info/2017/12/android-user-activity-recognition-still-walking-running-driving-etc/) all'interno dell'app chiamante.