Android è il nuovo sistema operativo open source per dispositivi mobili e realizzato da Google che si è posta la missione di rendere l’internet mobile accessibile a tutti tramite dispositi a basso costo.
Durante questo intervento mostrerò come sia possibile sviluppare per questo sistema operativo (e non solo) senza l’utilizzo di Java e come sia possibile utilizzare una versione light di Spring Framework nelle applicazioni mobili.
23. Cosa posso fare? ...e a breve: fotocamera, mappe e gestione file
24. Esempi assortiti //LOCALIZZAZIONE GEOGRAFICA var getLocation = function () { var suc = function ( p ){ alert ( p . coords . latitude + " " + p . coords . longitude ); }; var fail = function (){ alert ( "Location not available!" );}; navigator . geolocation . getCurrentPosition ( suc , fail , undefined ); } //VIBRAZIONE navigator . notification . vibrate ( 0 ); //BEEEEEEP navigator . notification . beep ( 2 );
25. Esempi assortiti //ACCELLEROMETRO var watchAccel = function () { var s = function ( a ){ document . getElementById ( 'x' ). innerHTML = roundNumber ( a . x ); document . getElementById ( 'y' ). innerHTML = roundNumber ( a . y ); document . getElementById ( 'z' ). innerHTML = roundNumber ( a . z ); }; var d = function (){}; var opt = {}; opt . frequency = 100 ; Timer = navigator . accelerometer . watchAcceleration ( s , f , opt ); } //FOTOCAMERA navigator . camera . getPicture ( dump_pic , fail , { quality : 50 }); function dump_pic ( data) { ... document . getElementById ( "test" ). src = "data:image/jpeg;base64," + data ; }
26. Dove è il trucco? PhoneGap mette a disposizione un progetto di partenza per ogni dispositivo supportato. Ogni progetto è una semplice applicazione costituita da un browser web che gira a tutto schermo ed in cui sono state iniettate degli oggetti javascript che corrispondono alle API native del dispositivo. Per ogni dispositivo per cui vogliamo distribuire il nostro applicativo dovremmo copiare i file html, css, javascript e le immagini dentro una cartella del progetto e modificare le configurazioni necessarie, ad esempio il nome del progetto, l'autore, etc.. Nel caso di Android dovremmo copiare i file in: ../my-android/assets/www/
27. Per capirci meglio... ...osserviamo questo pezzo di codice tratto dalla classe DroidGap.java contenuta nel progetto di partenza per Android: private void bindBrowser(WebView appView) { gap = new PhoneGap( this , appView); geo = new GeoBroker(appView, this ); accel = new AccelListener( this , appView); launcher = new CameraLauncher(appView, this ); // This creates the new javascript interfaces for PhoneGap appView.addJavascriptInterface( gap , "DroidGap" ); appView.addJavascriptInterface( geo , "Geo" ); appView.addJavascriptInterface( accel , "Accel" ); appView.addJavascriptInterface( launcher , "GapCam" ); }
45. Nato per J2ME ma utilizzabile anche con GWT e Android
46.
47. SpringME genera automaticamente il codice tramite un plugin per Apache Maven Person instance = new Person(); instance.setName("Wilfred Springer"); --------------------------------------------------------- BeanFactory factory = new BeanFactory(); Person frank1 = (Person)factory.getBean(“frank”); Person frank2 = factory.getFrank();
63. Modifichiamo la classe MavenAndroidActivity.java, es.: public void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); TextView tv = new TextView( this ); tv.setText(((Greeting)new BeanFactory().getBean( "ciao" )) .to( "MavenAndroidActivity" )); //oppure: tv.setText(((Greeting)new BeanFactory().getCiao()).to(...)); }
64. Ripetiamo il passo 8 e 9 mvn com.jayway.maven.plugins.android.generation2:maven-android-plugin:deploy