Loggy Project, digitalizza la tua giornata!

header

L'utilizzo della tecnologia al giorno d'oggi diventa sempre più essenziale. Chi di noi non utilizza lo smartphone per parlare con gli amici e condividere i propri contenuti con loro. Oggi vedremo come creare un connubio perfetto tra social network e la propria vita.

Questo elemento sono io! Sono io mentre utilizzo Loggy! Con questa foto non voglio mettermi in mostra sul web (anche se c'è davvero poco da mettere in mostra) ma voglio farvi vedere come potete indossare il vostro smartphone per digitalizzare la vostra vita! Come vedete sto utilizzando il famosissimo caschetto Mindset per la lettura delle onde cerbrali ed il mio Galaxy S III come collana.

Loggy è un progetto open source che permette di digitalizzare la propria vita! Esso utilizza il microfono e la fotocamera dello smartphone come hardware essenziale per la cattura dei fotogrammi. Alla fine di questo tutorial avremo un archivio con tutte le immagini e i video delle azioni che hanno attirato la nostra attenzione durante tutta la giornata!  Adesso, su le maniche e procediamo alla creazione dell'architettura!

 

Hardware e Software indispensabili:

Loggy non è semplicemente un software, ma un'architettura ovvero l'insieme di Hardware e Software necessari per l'implementazione del progetto. Quindi elenchiamo qui di seguito lo stretto necessario:

  1. Smartphone Android con fotocamera frontale
  2. Windows Seven – 8
  3. Headeset MindWave
  4. Loggy.apk
  5. FileZilla
  6. Raccolta Foto (pre installato su windows, se non prensente scaricare il pacchetto live_essential di Microsoft)
  7. Un porta cellulare da collo

Architettura complessa ma modulare:

Data la complessa architettura e l'interscambio delle informazioni tra i vari software occorre suddividere in moduli il progetto. 

  • Acquisizione dati multimediali: tutti i file multimediali sono salvati ed elaborati direttamente dal dispositivo Android. Tali file multimediali sono salvati sotto forma di foto e video. Questi dati vengono memorizzati sulla memoria esterna, evitando quindi un elevato carico ed usura della memoria interna del device.
  • FaceTagging e Organizzazione delle foto: tutte le foto vengono memorizzate attraverso una comunicazione FTP tra il device Android ed il server Windows. Questa procedura avviene al fine di alleggerire giornalmente il device Android. Una volta scaricate queste foto sul server occorrerà utilizzare il software Raccolta Foto per catalogarle in base alla data, al geo tagging ed infine al face tagging (vedremo dopo come fare).

 

Acquisizione dati multimediali:

Come detto nella descrizione precedente, tutti i file multimediali vengo catturati, processati e memorizzati momentaneamente sulla scheda esterna del device Android. Utilizzare questo tipo di approccio semplifica e alleggerisce notevolemente la velocità di gestione dei file. Effettuare un upload istantaneo del file multimediale sul server FTP comporterebbe un forte rallentamento del software, dato il lag di tempo per inviare il file e un consumo spropositato del basket delle connessioni UMTS.

Il salvataggio dei file avviene attraverso la lettura del livello di attenzione ricavato dal headset MindWave.

Analizziamo qui di seguito il flusso di lettura dal Mindset e il salvataggio del file:

Il flusso è abbastanza semplice, se il livello di attenzione è compreso tra 25 e 60 vengono vengono scattate delle foto in sequenza, altrimenti, vengono registrati dei video in sequenza ognuno di 10 secondi.

Qui di seguito troverete lo snippet code che implementa questa logica di acquisizione delle immagini:

case TGDevice.MSG_ATTENTION:
                    attentionBar.setProgress(msg.arg1/20);
                    if((msg.arg1 > 25)&&(msg.arg1<60) && (!pictureTaken) &&(!recording)){
                        sndUtility.playShortResource(R.raw.chimes);
                        camera.takePicture(null, null, jpegCallback);
                        pictureTaken = true;
                    }else if(msg.arg1<50){
                        pictureTaken = false;
                    }
                    if(msg.arg1 > 60){
                        if(!recording){
                            try{
                                InitMediaRecoder();
                                mediaRecorder.prepare();
                                mediaRecorder.start();
                                recording= true;
                            }catch (IOException e) {
                            // TODO: handle exception
                            }
                        }
                    }
                    break;

 

Inizializzazione delle classi:

La logica di business dell'applicazione utilizza 2 classi fondamentali del framework di Android per la cattura dei contenuti multimediali:

  • Camera: questa classe è usata per impostare la cattura delle immagini, avviare e bloccare l'anteprima, catturare le foto e ricavare ogni singolo frame per la registrazione e la codifica dei video. Per utilizzare correttamente la fotocamera del cellurare occorre seguire necessariamente i seguenti steps:
  1. Ricavare un'istanza di una classe attraverso il metodo statico open(int);
  2. Ricavare le impostazioni predefinite della camera selezionata attraverso il metodo precedente;
  3. Se necessario, modificare i parametri attraverso l'oggetto Camera.Parameters e richiamare il metodo setParameters(Camera.Parameters) passando la classe appena istanziata;
  4. Impostare il surfaceholder su cui visualizzare l'anteprima della camera;
  5. Avviare l'anteprima attraverso il metodo startPreview();

Dopo aver eseguito alla lettera questo tipo di inizializzazione della camera potremo scattare delle foto attraverso il metodo takePicture().

  • Mediarecorder: questa classe è utilizzata per registrare audio e video. Ovviamente necessita di una classe Camera per recuperare la sequenza di byte da memorizzare. Anche questa classe necessita di un'inizializzazione molto precisa come proprosta qui di seguito:
  1. Creare una nuova istanza della classe MediaRecorder;
  2. Impostare la sorgente audio da cui ricavare lo stream;
  3. Impostare il formato del file di output;
  4. Impostare la codifica audio con cui registrare i suoni;
  5. Impostare il path del file di output;
  6. Richiamare la funzione prepare() per settare le impostazioni precedentemente descritte
  7. Avviare la registrazione attraverso il metodo start();

Infine, terminata la registrazione richiamando il metodo stop(), dovremo necessariamente rilasciare le risorse occupate attraverso i metodi reset() e release().

FaceTagging e Organizzazione delle foto:

Terminata lo sviluppo del codice sorgente passiamo al modulo dell'architettura per inviare le foto al server. Il protocollo di communicazione che utilizzeremo è il famosissimo FTP (File Transfer Protocol).

Configurazione dello smartphone:

Attraverso il play store di Android, installare il software AndFTP (piccolo tool per interfacciarsi ad un server basato su FTP). Cliccare su questo link per installare l'app direttamente dal vostro pc.

Configurazione del server FTP:

Trattandosi di ambienti Windows utilizzeremo FileZilla Server per creare il nostro server FTP. Procediamo allora alla configurazione seguendo questi semplici steps:

  1. Scaricare il pacchetto FileZilla server da QUI
  2. Effettuare l'installazione come un qualsiasi applicativo
  3. Terminata l'installazione avviate il programma attraverso l'icona presente sul desktop
  4. Creare un utente con la relativa HOME_PATH. Questo path conterrà tutti i file multimediali inviati dal cellulare al server.
  5. Ridurre ad icona FileZilla Server 
  6. Effettuare una connessione di prova dal cellulare impostando Username e Password settati in precedenza sul server FTP

N.B.: La connessione verrà effettuata solo se i dispositivi si trovano nella stessa rete locale. Per effettuare una connessione remota occorrerà configurare un DNS e il relativo port mapping sul router.

Raccolta Foto:

Finalmente siamo arrivata alla fase piu divertente e curiosa. Dopo aver configurato il server FTP e scaricato tutte le foto dal cellulare possiamo catalogarle e ricercare le occasioni della giornata che hanno attirato la nostra attenzione!

Apriamo Raccolta Foto di Windows e clicchiamo sul tasto blu in alto a sinistra:

Aggiungiamo quindi la cartella contenente tutti i file elaborati da Loggy:

Terminata la mappatura della cartella iniziamo a taggare i volti che il software ha rilevato cliccando semplicemente sull'icona "Tag persona in blocco":

Come suggerisce il tooltip, il software riesce a riconoscere i volti campionando quelli già taggati manualmente, quindi, più volte una persona sarà taggata, più volte il software sarà in grado di riconoscere e catalogare automaticamente i volti.

Consiglio di selezionare solo la cartella contenente i file di Loggy, così facendo la ricerca ed il facetagging verranno effettuati solamente su di essa!

Terminato il tutto, possiamo ricostruire la nostra giornata! Se volessimo sapere quando abbiamo incontrato una determinata persona ed ascoltare per esempio il nostro dialogo, basterà cliccare sulla barra superiore il tasto "Trova" e digitare il nome!

Considerazioni Finali:

L'utilizzo di Loggy potrebbe farvi scoprire delle cose a cui voi non fate caso quotidianamente, come per esempio ricordare se avete chiuso la porta di casa o avete spendo le luci. Inoltre l'utilizzo del software potrebbe essere impiegato a pazienti affetti da alzheimer. Come tutti sappiamo questa patologia inibisce la memoria dell'ammalato e quindi ricostruire la sua giornata potrebbe in alcuni casi essere fondamentale! Infine ricodiamoci della prossima uscita sul mercato dei Google Glass, anch'essi sono basati su Android e quindi Loggy sarà completamente compatibile con essi!

Aspetto con ansia i vostri commenti!

Bye! 

 

One Response

  1. roberto.colella.77 7 novembre 2013

Leave a Reply