lunedì 2 gennaio 2012

Sensori su Android in Python

Un esempio di come leggere i sensori sul telefono mediante Python su Android

Attenzione : la lettura del sensore di luce, almeno per me, ha funzionato solo disattivando il gestore automatico dell'illuminazione dello schermo dal widget Risparmio energia
-------------------------------------------------------------------------------------------

import android, time
droid = android.Android()
droid.startSensingTimed(1,1000)
time.sleep(3)
for x in range(0,10):
#print "Accelorometro " + str(droid.sensorsReadAccelerometer().result)
print "Accelorometro asse X " + str(droid.sensorsReadAccelerometer().result[0])
print "Accelorometro asse Y " + str(droid.sensorsReadAccelerometer().result[1])
print "Accelorometro asse Z " + str(droid.sensorsReadAccelerometer().result[2])
#print "Magnetometro " + str(droid.sensorsReadMagnetometer().result)
print "Magnetometro asse X" + str(droid.sensorsReadMagnetometer().result[0])
print "Magnetometro asse Y" + str(droid.sensorsReadMagnetometer().result[1])
print "Magnetometro asse Z" + str(droid.sensorsReadMagnetometer().result[2])
#print "Orientazione "+ str(droid.sensorsReadOrientation().result)
print "Azinuth "+ str(droid.sensorsReadOrientation().result[0])
print "Pitch "+ str(droid.sensorsReadOrientation().result[1])
print "Roll "+ str(droid.sensorsReadOrientation().result[2])
# Azimuth e' l'orientazione rispetto al Nord come la bussola da 0 a 360 in senso orario
#Pitch e' l'inclinazione con la parte sinistra inclinata al massimo si ha +90, con la parte
#destra sollevata si ha -90
#Roll e' l'inclinazione del telefono in avanti ed indietro
print "Luce "+ str(droid.sensorsGetLight().result)
# Valore Luce
# 0 = luce stellare
# 1 = Luna piena
# 5 = scintillio
# 30 = luce da stanza
# 80 = corridoio
# 100 = giornata nuvolosa e coperta
# 400 = luce da ufficio
# 500 = Alba o tramonto
# 1000 =
# 25000 = pieno giorno non illuminato direttamente dal Sole
# 200000 = illuminazione diretta solare
print "Accuratezza "+ str(droid.sensorsGetAccuracy().result)
# 3 valore piu' alto di accuratezza

time.sleep(1)
droid.stopSensing()
---------------------------------------------------------------------------------

Orientamento degli assi