giovedì 22 dicembre 2011

Sviluppo Python su Android con SL4A

In questo articolo vi parlerò di come collegare un dispositivo Android al vostro PC windows per utilizzare da remoto SL4A, un programma che invia istruzioni in diversi linguaggi scripting (fra cui Python) ad Android tramite chiamate RPC e permette di scrivere programmi o pezzi di script direttamente sul dispositivo.

Per prima cosa scaricare e installare SL4A sul dispositivo Android. Lo potete trovare qui:
http://code.google.com/p/android-scripting/downloads/list
file: sl4a_r4.apk (o ultima versione)

Scarichiamo anche l'ultimo interprete del linguaggio Python:
http://code.google.com/p/python-for-android/downloads/list
file: PythonForAndroid_r6.apk (o ultima versione)

Sul PC installate Android SDK:
http://developer.android.com/sdk/index.html

Sul PC avviate Android SDK Manager e installate il driver USB:


Sul device andare in: "Impostazioni" -> "Applicazioni" -> "Sviluppo" -> e spuntare l'opzione "Debug USB"


Sul PC aggiungete "C:\Program Files (x86)\Android\android-sdk\tools\" alla variabile ambiente di windows PATH


Dal prompt di windows digitare "gestione dispositivi" e su "Altri dispositivi" tasto destro e "Aggiornamento software driver"
fare cerca nel computer nella cartella: "C:\Program Files (x86)\Android\android-sdk\extras\google\usb_driver" (o dove avete installato l'sdk)


Se il dispositivo non viene riconosciuto fate proprietà -> dettagli e annotardi le 2 righe con gli hardware id:


Aprite il file "android_winusb.inf" per inserire gli hardware id annotati in precedenza:.

Per il tablet iconia A500 come il mio aggiungete le seguenti righe:

(sia alla fine sella sezione [Google.NTx86] che di [Google.NTamd64])
;
;Iconia A500
%SingleAdbInterface% = USB_Install, USB\VID_0502&PID_3325
%CompositeAdbInterface% = USB_Install, USB\VID_0502&PID_3325&MI_01

ripetete il riconoscimento del driver, tramite aggiornamento ed ora verrà trovato:


fate una prova lanciando il comando dal prompt di windows (con privilegi di amministratore): adb devices
dovrebbe restituirvi una stringa che rappresenta l'id del dispositivo connesso

Avviamo SL4A dal dispositivo Android. Ora dal menu del programma selezionate: View -> Interpreters
premiamo di nuovo il bottone menu, selezioniamo "start server". Selezioniamo "private" (public è usato per la connessione via wifi).

Ora siamo pronti alla connessione:
per prima cosa dobbiamo creare la seguente variabile d'ambiente per utente: AP_PORT con valore di default: 9999, poi abilitare il port forwarding


Nel caso abbiate un tablet cliccate sull'icona di SL4A nella tray e poi nel riquadro nero che compare per vedere a video il numero della porta usata dal server del dispositivo:


Aggiungiamo alla variabile d'ambiente PATH anche il percorso del file della shell Python Es.: ";C:\Python26"

Nella cartella lib della cartella dove avete installato Python Es.: "C:\Python26\Lib" salviamo il file "android.py"

Sul PC lanciamo un prompt windows come amministratore e digitiamo:
set AP_PORT=9999
adb forward tcp:9999 tcp:[numero di porta server SL4A]
python
Ora la vostra shell Python esegue i comandi sul dispositivo Android.

Ecco il codice per una piccola prova che stampa sul video del dispositivo il messaggio "Ciao sono il PC!"
import android  # dal file android.py che abbiamo aggiunto sul PC
droid = android.Android()
droid.makeToast("Ciao sono il PC!")