per intercettare gli eventi di chiamate in ingresso al telefono si puo' usare la chiamata
----------------------------------------------------------------
import android
import time
droid = android.Android()
droid.startTrackingPhoneState()
while True:
time.sleep(5)
print droid.readPhoneState().result
droid.stopTrackingPhoneState()
----------------------------------------------------------------
readPhoneState.result riporta nella lista vari parametri; il quarto puo' essere "idle" quando il telefono e' in atteso oppure "ringing" quando il telefono squilla
venerdì 20 gennaio 2012
Gestione SMS su Py4A
per gestire gli SMS su un telefono Android mediante Py4A si puo' impiegare lo script seguente (visto qui)
------------------------------------------------
import android
droid = android.Android()
#conta gli SMS
print "Numero messaggi: " + str(droid.smsGetMessageCount(False,'inbox').result)
# estrae tutti i messaggi
messages = droid.smsGetMessages(False, "inbox", ["address", "body"])
for i in messages.result:
print i["address"].encode("utf-8")
print i["body"].encode("utf-8")
# estrae un messaggio dato il numero di ID
message = droid.smsGetMessageById(1, ["address", "body"]).result
print message["address"].encode("utf-8")
print message["body"].encode("utf-8")
------------------------------------------------
------------------------------------------------
import android
droid = android.Android()
#conta gli SMS
print "Numero messaggi: " + str(droid.smsGetMessageCount(False,'inbox').result)
# estrae tutti i messaggi
messages = droid.smsGetMessages(False, "inbox", ["address", "body"])
for i in messages.result:
print i["address"].encode("utf-8")
print i["body"].encode("utf-8")
# estrae un messaggio dato il numero di ID
message = droid.smsGetMessageById(1, ["address", "body"]).result
print message["address"].encode("utf-8")
print message["body"].encode("utf-8")
------------------------------------------------
martedì 17 gennaio 2012
Creare file .apk da Eclipse-ADT
il procedimento per creare i file di installazione e distribuzione .apk da Eclipse e' piuttosto banale
Una volta selezionato il progetto File/Export/Export Android Application
Selezionare il nome del progetto da esportare a cui segue la schermata del keystore (il file deve avere l'estensione keystore)
Una volta selezionato il progetto File/Export/Export Android Application
Selezionare il nome del progetto da esportare a cui segue la schermata del keystore (il file deve avere l'estensione keystore)
Una nuova schermata con parametri da inserire (25 anni e' il valore minimo suggerito da Android)
ed infine si sceglie dove scrivere il file .apk. Tale file puo' essere distribuito, copiato sul telefono ed installato
Creare progetti Android con Eclipse/ADT
Per creare un nuovo progetto Android con Eclipe/ADT si clicchi su File/New/Other/Android Project
Compare quindi la schermata sottostante
in cui Project Name si puo' inserire il nome UDPClient (meglio non usare spazi..non si mai)
in Application Name si puo' inserire il nome in formato libero (spazi,virgole)
in Package Name si deve utilizzare le convenzioni Java per cui il nome puo' essere com.udp.client
in Activity Name si deve inserire il nome della classe che verra' generata in questo caso udpclient
Compare quindi la schermata sottostante
in cui Project Name si puo' inserire il nome UDPClient (meglio non usare spazi..non si mai)
in Application Name si puo' inserire il nome in formato libero (spazi,virgole)
in Package Name si deve utilizzare le convenzioni Java per cui il nome puo' essere com.udp.client
in Activity Name si deve inserire il nome della classe che verra' generata in questo caso udpclient
Errori di Eclipse ADT nella creazione di un progetto
lasciando da parte Python sono tornato a rivedere un po' Eclipse e Java mi sono ritrovato con due errori nella fase di creazione di un nuovo progetto mi sono imbattuto in
Debug certificate expired in 03/01/2012.....
che si risolve cancellando il file /.android/debug.keystore (soluzione ripresa da qui) e probabilmente dovuta al fatto che non usavo piu' Eclipse da molto tempo
altro errore
Unable to open class file......R.java
la soluzione (qui) consiste nell'aprire e richiuedere Eclipse oppure cliccare sul progetto nel package explorer sulla sinistra con tasto destro/Source/Format
un altro problemino che0 ho riscontrato (forse a causa di una vecchia versione di ADT) e' che il plug-in cerca il file adb nella directory tools dell'SDK mentre nelle versioni piu' recenti e' stato spostato sotto platform-tools. Si puo' risolvere in modo un po' brutale copiando il file adb nella directory tools
Debug certificate expired in 03/01/2012.....
che si risolve cancellando il file /.android/debug.keystore (soluzione ripresa da qui) e probabilmente dovuta al fatto che non usavo piu' Eclipse da molto tempo
altro errore
Unable to open class file......R.java
la soluzione (qui) consiste nell'aprire e richiuedere Eclipse oppure cliccare sul progetto nel package explorer sulla sinistra con tasto destro/Source/Format
un altro problemino che0 ho riscontrato (forse a causa di una vecchia versione di ADT) e' che il plug-in cerca il file adb nella directory tools dell'SDK mentre nelle versioni piu' recenti e' stato spostato sotto platform-tools. Si puo' risolvere in modo un po' brutale copiando il file adb nella directory tools
lunedì 16 gennaio 2012
Pygame for Android - Trackpad
Un esempio per usare il telefono come trackpad.
Non ho trovato nell'installazione di Python una funzione si legasse agli eventi del touchscreen cosi' mi sono orientato alla versione di Pygame per Android
Non ho trovato nell'installazione di Python una funzione si legasse agli eventi del touchscreen cosi' mi sono orientato alla versione di Pygame per Android
sul cellulare ho fatto girare questo script
--------------------------------------------------------------------------------------------------
import pygame
import android
import socket
hostname = "192.168.0.1";
port = 21567;
data = "";
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM);
s.connect((hostname,port));
FPS = 10
TIMEREVENT = pygame.USEREVENT
pygame.init()
screen = pygame.display.set_mode((240, 320))
android.init()
android.map_key(android.KEYCODE_BACK, pygame.K_ESCAPE)
pygame.time.set_timer(TIMEREVENT, 1000 / FPS)
while True:
ev = pygame.event.wait()
if android.check_pause():
android.wait_for_resume()
if ev.type == pygame.MOUSEMOTION:
#print "pos (%d,%d)" % ev.pos
s.send(str(ev.pos[0])+";"+str(ev.pos[1]))
elif ev.type == pygame.KEYDOWN and ev.key == pygame.K_ESCAPE:
break
------------------------------------------------------------------------------------------
a differenza di Py4A, per Pygame si deve creare una directory pygame sulla SD e creare una directory per ognuno degli script che si devono testare. All'interno di questa directory si deve inserire un file icona, il file script che si deve necessariamente chiamare main.py ed un file denominato anrdroid.txt (per i dettagli consultare il sito)
A differenza di Py4A non e' possibile importare in modulo bluetooth per cui lo scambio dati e' avvenuta in UDP
Di seguito il programma server che replica a computer i movimenti del dito su telefono
-----------------------------------------------------------------------------------------
import string
from socket import *
import pygame
pygame.init()
size=[240,320]
screen=pygame.display.set_mode(size)
clock=pygame.time.Clock()
host = "192.168.0.1"
port = 21567
buf = 1024
addr = (host,port)
UDPSock = socket(AF_INET,SOCK_DGRAM)
UDPSock.bind(addr)
while 1:
data,addr = UDPSock.recvfrom(buf)
if not data:
print "Client has exited!"
break
else:
valori = string.split(data,";")
screen.set_at((int(valori[0]), int(valori[1])), (255,0,0))
pygame.display.flip()
UDPSock.close()
Conversione MOV to MPEG su Linux
per convertire i file filmato della fotocamera in un formato gestibile da Youtube si puo' fare
mencoder -of mpeg -ovc lavc -lavcopts vcodec=mpeg1video -nosound input.mov -o output.mpg
mencoder -of mpeg -ovc lavc -lavcopts vcodec=mpeg1video -nosound input.mov -o output.mpg
Iscriviti a:
Post (Atom)
Debugger integrato ESP32S3
Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede nell'ID USB della porta Jtag. Nel modulo...
-
In questo post viene indicato come creare uno scatterplot dinamico basato da dati ripresi da un file csv (nel dettaglio il file csv e' c...
-
Questo post e' a seguito di quanto gia' visto nella precedente prova Lo scopo e' sempre il solito: creare un sistema che permet...
-
La scheda ESP32-2432S028R monta un Esp Dev Module con uno schermo TFT a driver ILI9341 di 320x240 pixels 16 bit colore.Il sito di riferiment...