venerdì 17 febbraio 2012

Aggiungere una libreria esterna ad un progetto Android

Nel caso in cui un comando non esista nel linguaggio di Android si puo' ricorrere alle librerie esterne disponibili....ma come inserirle in un progetto Eclipse??
L'esempio che segue prende come esempio AndroidPlot, una libreria gratuita per creare grafici su Android (link).
Una volta scaricato il file della libreria dal sito si puo' creare un nuovo progetto in Eclipse, cliccando destro sul progetto si deve selezionare New/Folder e si inserisce per esempio il nome lib.

Crea nuova directory nel progetto

giovedì 16 febbraio 2012

Option Menu

Per creare un Option menu, ovvero il menu che appare in basso allo schermo, si puo' procedere per due vie.
Prima di tutto si deve segnalare che non esiste un sistema unico per aprire un Option Menu. Sull'emulatore si deve premere il tasto Menu

Cerchiato in rosso il tasto di Option Menu

Localizzare una applicazione

Creare una versione localizzata, ovvero con le scritte tradotte nella lingua dell'utente, e' un processo piuttosto immediato in Android.
In generale e' buona abitudine non inserire le stringhe relative all'interfaccia grafica ed ai messaggi nel codice ma e' piu' conveniente scriverle nel file di default strings.xml che si trova nella cartella /res/values del progetto Android
un esempio di come vengono riferite le stringhe nel file strings.xml si puo' trovare nel codice sottostante
-----------------------------------------------------------------------------------------------
    <string name="hello">Hello World, GeocompassActivity!</string>
    <string name="app_name">Geocompass</string>
------------------------------------------------------------------------------------------------
per usare la stringa all'interno del codice del programma si puo' referenziare, per esempio, mediante R.strings.hello; in questo modo sara' stampata la stringa Hello World, GeocompassActivity!

Nel file strings.xml si puo' mettere il testo scritto nel linguaggio di default. Se si vuole effettuare una personalizzazione, per esempio in italiano, si deve creare sotto la directory /res/ una nuova cartella /values-it/ in cui copiare il file strings.xml che sara' poi editato per effettuare la traduzione delle stringhe.

Sara' il telefono, in base alle impostazioni contenute in Impostazioni/Impostazioni Lingua e Tastiera a scegliere quale elenco di stringhe utilizzare in modo del tutto trasparente



Tavoletta grafica Calcomp Drawing Board III


lunedì 13 febbraio 2012

Geocompass released on Android Market

Today the first release of Geocompass, a free and simple Geological Compass (Clinometer).


Available in Android Market

Il programma e' in fase di beta test su piattaforma Android 2.2  telefono Huawei Vodafone Ideos U8150 con firmware modificato (Dronix 0.4) e schermo 320x240

Uso
Il telefono Android deve essere posto sulla superficie piana dello strato con qualunque orientazione.
Se lo strato da misurare e' rovescio e' necessario cliccare sulla apposita checkbox. Si puo' anche selezionare la formazione su cui viene effettuata la misura (il controllo per la gestire le litologie e la formazioni e' configurabile; di default viene presentato un elenco di litologie ma puo' essere modificato creando sulla SD Card un file formazioni.txt con un elenco continuo di stringhe separate da punto e virgola senza ritorni a capo)
---------------------------------------- Esempio del file formazioni.txt -----------------------------
F.Monte Morello;A. Cervarola;A. Castel Guerino;A. Falterona;Marne Vicchio;Marne Pievepelago;Marne S.Polo;Macigno;A.Modino;Calcari Angulati;Rosso Ammonitico;C.Selc.Limano;Marne Posidonomya;C.Selc.Lima;Diaspri;Calcari Aptici;Maiolica
---------------------------------------- Esempio del file formazioni.txt -----------------------------

Misura orizzontale

La misura viene salvata cliccando sul pulsante "Salva" ed i dati sono inseriti in un file testo posto in /SdCard/geocompass.txt in un formato compatibile con l'importazione in Excel; sono registrati data ed ora dell'acquisizione, punto GPS (se disponibile), Strike, Dip, orientazione dello strato (N=Normale, R=Rovescia) e indicazione della formazione litologica misurata. Il telefono emette un suono per confermare l'avvenuta misura

Field Test
Le misure sono nettamente piu' speditive in quanto, al contrario dell'impiego di una bussola in cui si deve mettere in bolla, misurare lo Strike, inclinare la bussola e misurare il Dip con Geocompass non e' necessario orientare lo strumento e le due misure vengono effettuate istantaneamente.
-----------------------Esempio file delle misure /sdcard/geocompass.txt------------------

14:07:00 15/02/2012;0;0;293;40;N;A. Castel Guerino
14:07:10 15/02/2012;0;0;175;45;R;Marne Vicchio
14:07:18 15/02/2012;0;0;Dir: 197-17;90;R;Marne Vicchio
14:08:52 15/02/2012;43.7193124;10.95045389;19;37;N;F.Monte Morello
14:08:59 15/02/2012;43.71932407;10.95045727;117;54;N;Calcari Aptici
----------------------------------------------------------------------------------------------------------------------------------
I campi sono delimitati dal carattere ; (punto e virgola)
campo 1 : data e ora dell'acquisizione (hh:mm:ss dd/mm/yyyy)
campo 2 : latitudine punto GPS (gradi decimali punto come separatore decimale)
campo 3 : longitudine punto GPS (gradi decimali punto come separatore decimale)
campo 4 : strike (intero)
campo 5 : dip (intero)
campo 6 : orientamento N/R (normale/rovescia)
campo 6 : formazione (stringa)

Per gli angoli di inclinazioni vengono considerate come orizzontali tutte le misure inferiori a 5° di inclinazione e come verticali tutte le misure superiori a 80°. Nel caso di misura verticale non viene indicato lo strike ma la direzione

Se viene abilitato il sensore GPS del telefono viene inserita anche l'informazione per la georeferenziazione (disponibile solo se e' disponibile il fix gps indicato dalla scritta GPS in colore verde). Il programma funziona correttamente anche senza questa funzione abilitata



domenica 12 febbraio 2012

Geocompass su GitHub

Il progetto della bussola geologica e' stato pubblicato su GitHub

git@github.com:c1p81/Geocompass.git


al momento non e' funzionante

Log su Android (2)

In fase di debugging puo' essere utile non tracciare il programma con il DDMS ma anche inviando i dati al file di log da leggere in diretta mediante Logcat

Per stampare sul file di log il contenuto delle variabili da esaminare si deve aggiungere al programma la chiamata

if (Config.LOGD) Log.d("Nome_programma","Variabile 1 :"+variabile1);


In questo caso viene stampato il valore della variabile1. La prima stringa "Nome_programma" serve ad effettuare un filtro sul comando logcat come per esempio
adb logcat -s Nome_programma:*


In questo modo si vedono solo le parti del log relative al programma in debugging. Il log puo' essere stampato su un file del computer mediante piping
adb logcat -s Nome_programma:* > file_log.txt


Le stesse cose possono essere fatte, con maggiore semplicita' da dentro Eclipse, usando la finestra Logcat in basso nello schermo selezionando l'apposito tab ed impiegando il filtro











sabato 11 febbraio 2012

Screenshot su Android

per effettuare uno screenshot di una applicazione di propria scrittura in esecuzione sul telefono si puo' andare nel mene DDMS (in alto a destra in Eclipse insieme a Java e Debug)
si apre la finestra in cui si deve scegliere l'icona della macchina fotografica
Un esempio di cattura di schermo di una applicazione su cui sto lavorando adesso la potete trovare nella immagine sottoriportata

Force portrait

Per impostare lo schermo dell'applicazione in modo che non ruoti muovendo il telefono si deve impostare nel Manifest.xml il comando


<activity
            android:name=".GeocompassActivity"
            android:label="@string/app_name" 
            android:screenOrientation="portrait">

venerdì 10 febbraio 2012

Applet Wireless Netowork su Gnome


nel caso si cancellasse erroneamente l'applet che gestisce le connessioni Wi-Fi nella barra di Gnome, questa puo' essere ripristinata cliccando destro sulla barra/Aggiungi al Pannello/Area di Notifica

mercoledì 8 febbraio 2012

Bussola Geologica - Geological Compass

 Un utilizzo dei sensori del telefono Android per creare una bussola da rilevamento geologico

 da http://portal.tugraz.at/portal/page/portal/i_2720/Projects/diggc
 Al contrario del normale metodo per orientare la bussola con questo programma basta appoggiare il telefono sulla superficie piana da misurare e si ha direttamente la misura di strike/dip

-------------------------------------------------------------------------------------------
import android, time,math
droid = android.Android()
droid.startSensingTimed(1,1000)
time.sleep(2)
while True:
    azimuth = droid.sensorsReadOrientation().result[0]
    pitch = droid.sensorsReadOrientation().result[1]
    roll = droid.sensorsReadOrientation().result[2]
    pimezzi = math.pi/2


    cosalfa = math.cos(roll-pimezzi)
    cosbeta = math.cos(pitch-pimezzi)
   
    dir_maxpendenza = math.degrees(math.atan(cosalfa/cosbeta))
    if (pitch < 0):
                dir_maxpendenza = dir_maxpendenza + 180
        if ((pitch > 0) and (roll < 0)):
                dir_maxpendenza = dir_maxpendenza + 360
        dir_maxpendenza = (math.degrees(azimuth)+dir_maxpendenza)% 360
    print "Strike : " + str(dir_maxpendenza)
    ang_maxpendenza = 90-math.degrees(math.acos(math.sqrt((cosalfa*cosalfa)+(cosbeta*cosbeta))))
    print "Dip: "+ str(ang_maxpendenza)
droid.stopSensing()
-------------------------------------------------------------------------------------------

martedì 7 febbraio 2012

Git e GitHub

ho spostato il progetto su Git Hub e riporto di seguito un breve tutorial
prima di registrarsi su GitHub e' necessario configurare la propria Linux Box creando le proprie chiavi ssh con il comando
ssh-keygen -t rsa -C "your_email@youremail.com"
formulando la passphrase
successivamente ci si registra su GitHub e nel menu "Account Settings” > Click “SSH Public Keys” > Click “Add another public key” si deve inserire il contenuto del file rsa.pub contenuto nella directory .ssh della propria home.
Si puo' testare il corretto inserimento digitando ssh -T git@github.com

successivo passo importante e' quello di definire l'utente che usa Git
git config --global user.name "Firstname Lastname" 
git config --global user.email "your_email@youremail.com"
 la mail deve essere la stessa con cui e' stata firmata la chiave RSA

successivamete dall'interfaccia del sito si deve creare un repository

per iniziare ad usare il repository ci si deve poi porre nella root del progetto sul disco locale e scrivere
git init
questo comando crea una directory nascosta in cui vengono inseriti i file di configurazione di Git
Dopo di cio' per popolare il server remoto si deve

git add .

git commit -m 'commento al commit'
git remote add origin git@github.com:username/nome_repository.git

git push origin master


per effettuare gli aggiornamenti si puo' procedere,ponendosi nella directory di radice del progetto sottoposto a Git con
git diff per vedere le differenze con il progetto precedente


git commit  -m "stringa" per preparare l'aggiornamento del progetto su GitHub. Fino ad ora comunque non sono state fatte modifiche al sistema di GitHub e tutto rimane in locale. Nella stringa si puo' riassumere in modo stringato le modifiche effettuate

git push -u origin master effettua l'invio e la sincronizzazione con il database remoto

Attenzione: se si sono aggiunti dei file rispetto al commit precedente si deve in modo esplicito digitare il comando
git add nomefile  per includere il file nel progetto Git
per aggiungere invece in un colpo solo tutti i file che sono stati creati nel progetto si digita invece
git add .  (attenzione al punto finale..e' importante)

con git status si ha un elenco della situazione della sincronia del progetto

se si vuole invece copiare un progetto da git e creare una copia locale (clone) si puo' digitare
git clone git@github.com:c1p81/GpsTest.git

domenica 5 febbraio 2012

DGPS su GitHub

il codice del progetto per il GPS Differenziale e' stato pubblicato su GitHub
al link https://github.com/c1p81/GpsTest

per scaricare il codice si puo' utilizzare il link git@github.com:c1p81/GpsTest.git

HF WSPR Protocol

Il protocollo WSPR ( che ricorda Whisper ma in realta' significa Weak Signal Propagation Reporter) e' adatto ad inviare Callsign, G...