Riccardo Solimena, Java Italian Portal - Stefano Sanna, JUG Sardegna Javaday Roma III Edizione – 24 gennaio 2009 Lo sbarco di Google nel pianeta Mobile Internet: primo impatto ed esempi pratici. Riccardo Solimena (Java Italian Portal) Stefano Sanna (JUG Sardegna Onlus)
42
Embed
Lo sbarco di Google nel pianeta Mobile Internet: primo impatto ed esempi pratici.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Riccardo Solimena, Java Italian Portal - Stefano Sanna, JUG SardegnaJavaday Roma III Edizione – 24 gennaio 2009
Lo sbarco di Google nel pianeta Mobile Internet: primo impatto ed esempi pratici.
Riccardo Solimena(Java Italian Portal)
Stefano Sanna (JUG Sardegna Onlus)
Riccardo Solimena, Java Italian Portal - Stefano Sanna, JUG SardegnaJavaday Roma III Edizione – 24 gennaio 2009
Outline
● Who we are● Android: brevissima introduzione● Code, please!
DEMO!
● Architecture, library, tools● Android vs Java ME vs iPhone● Conclusioni
Riccardo Solimena, Java Italian Portal - Stefano Sanna, JUG SardegnaJavaday Roma III Edizione – 24 gennaio 2009
Riccardo Solimena, Java Italian Portal - Stefano Sanna, JUG SardegnaJavaday Roma III Edizione – 24 gennaio 2009
Stefano Sanna
● Java ME Tech Lead @ beeweeb technologies
● Professional developer @ JME, iPhone, Android
● Technical writer @– Book “Java Micro Edition” (Hoepli, 2007)
– DEV, Java Journal, Computer Programming
● Blogger @ http://www.gerdavax.it
Riccardo Solimena, Java Italian Portal - Stefano Sanna, JUG SardegnaJavaday Roma III Edizione – 24 gennaio 2009
Android
● Android è una piattaforma open source per la telefonia mobile basata su Linux e Java
● Dal blog ufficiale:
“Android is the first truly open and comprehensive platform for mobile devices. It includes an operating system, user-interface and applications -- all of the software to run a mobile phone, but without the proprietary obstacles that have hindered mobile innovation”
Riccardo Solimena, Java Italian Portal - Stefano Sanna, JUG SardegnaJavaday Roma III Edizione – 24 gennaio 2009
Non solo Google...
Riccardo Solimena, Java Italian Portal - Stefano Sanna, JUG SardegnaJavaday Roma III Edizione – 24 gennaio 2009
Caratteristiche principali
● Android è una piattaforma ricca e moderna:– Componenti di sistema riusabili e sostituibili
MPEG4, WAV, MIDI, REAL AUDIO, OGG● Video: H.264, streaming, 3GPP, MPEG4, 3GP● Email: POP, IMAP, SMTP, AOL e GMail● IM: AIM, MSN, Yahoo!, GTalk● Android Market + OTA application delivery
Riccardo Solimena, Java Italian Portal - Stefano Sanna, JUG SardegnaJavaday Roma III Edizione – 24 gennaio 2009
Cominciamo dai link!
● SDK e documentazione:– http://code.google.com/android
● Sorgente della piattaforma:– http://source.android.com/
● Open Handset Alliance:– http://www.openhandsetalliance.com
● Android Market:– http://www.android.com/market/
Riccardo Solimena, Java Italian Portal - Stefano Sanna, JUG SardegnaJavaday Roma III Edizione – 24 gennaio 2009
Code, please!
● Anziché partire dalla teoria, dall'architettura, dalla documentazione, dalle classi...
PARTIAMO DAL CODICE
● Vogliamo realizzare una applicazione di supporto al Java Day, con la lista dei talk, i dettagli di ciascun intervento e la mappa di Roma centrata sulla sede dell'evento
Riccardo Solimena, Java Italian Portal - Stefano Sanna, JUG SardegnaJavaday Roma III Edizione – 24 gennaio 2009
DEMO
Riccardo Solimena, Java Italian Portal - Stefano Sanna, JUG SardegnaJavaday Roma III Edizione – 24 gennaio 2009
Struttura dell'applicazione
ListaTalk(Activity)
JavaDayMap(Activity)
Geocoder
MapController
MapView
ListView
ItemAdapter
SQLiteDatabase
Riccardo Solimena, Java Italian Portal - Stefano Sanna, JUG SardegnaJavaday Roma III Edizione – 24 gennaio 2009
Progetto Android
Delizioso sorgente Java!
Descrittore dell'applicazione
File di supporto
Immagini
XML di layout della UI
Stringhe, vettori...
Riccardo Solimena, Java Italian Portal - Stefano Sanna, JUG SardegnaJavaday Roma III Edizione – 24 gennaio 2009
Modelliamo il talk
public class Talk { // getter e setter omessi per brevità...
private int keyId;private String talkName;private int numRoom;private String abstractTalk;private String speech;private String time;
public Talk(int keyId, String talkName, int numRoom, String abstractTalk, String speech, String time) {
Riccardo Solimena, Java Italian Portal - Stefano Sanna, JUG SardegnaJavaday Roma III Edizione – 24 gennaio 2009
Tutto inizia con un'Activity...
public class ListaTalk extends Activity {private ArrayList<Talk> talkItems;private ListView talkList; private TalkItemAdapter adapter; private TalkDAO talkDAO; private Cursor talkCursor;
public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);talkList = (ListView)findViewById(R.id.talkList);talkItems = new ArrayList<Talk>();
int resID = R.layout.talk_item;adapter = new TalkItemAdapter(this, resID, talkItems);talkList.setAdapter(adapter);
// inizializzazione popup (next slide)
talkDAO = new TalkDAO(this);talkDAO.open();populateTodoList();
}
Riccardo Solimena, Java Italian Portal - Stefano Sanna, JUG SardegnaJavaday Roma III Edizione – 24 gennaio 2009
Creiamo la popup
final Builder builder = new AlertDialog.Builder(this);
talkList.setOnItemClickListener(new OnItemClickListener() {//@Overridepublic void onItemClick(AdapterView<?> a, View v, int pos,
String talkName = item.getTalkName();String time = item.getTime();
Riccardo Solimena, Java Italian Portal - Stefano Sanna, JUG SardegnaJavaday Roma III Edizione – 24 gennaio 2009
Riempire l'elemento della lista
if (convertView == null) {todoView = new LinearLayout(getContext());String inflater = Context.LAYOUT_INFLATER_SERVICE;LayoutInflater vi = (LayoutInflater)
Riccardo Solimena, Java Italian Portal - Stefano Sanna, JUG SardegnaJavaday Roma III Edizione – 24 gennaio 2009
Location-based Service
● Android è equipaggiato con una ricca libreria per la realizzazione di applicazioni georeferenziate integrate con i servizi di Google:
– LocationManager: per determinare la posizione corrente con GPS o sistemi alternativi
– Geocoder: per la trasformazione di indirizzi in coordinate geografiche e viceversa
– MapView: per la visualizzazione di mappe, complete di controlli di zoom, scrolling e sovrapposizione di layer personalizzati e interattivi
Riccardo Solimena, Java Italian Portal - Stefano Sanna, JUG SardegnaJavaday Roma III Edizione – 24 gennaio 2009
Visualizzare una mappa
● Per visualizzare una mappa (centrata su un indirizzo noto) all'interno di una applicazione occorre:
– includere la libreria com.google.android.maps e richiedere la user-permission INTERNET
– scrivere una nuova Activity che estenda MapView
– ottenere le Android Maps API Key associate ai propri certificati di sviluppo e di pubblicazione (maggiori dettagli sul sitohttp://code.google.com/android)
Riccardo Solimena, Java Italian Portal - Stefano Sanna, JUG SardegnaJavaday Roma III Edizione – 24 gennaio 2009
Mappe nell'applicazione
● Nel Manifest occorre specificare l'uso della libreria e ottenere i permessi per la localizzazione (se si usa il GPS) e la connettività:
Riccardo Solimena, Java Italian Portal - Stefano Sanna, JUG SardegnaJavaday Roma III Edizione – 24 gennaio 2009
Architettura di Android
Riccardo Solimena, Java Italian Portal - Stefano Sanna, JUG SardegnaJavaday Roma III Edizione – 24 gennaio 2009
Quattro entità fondamentali
● Activity: moduli applicativi visuali e componibili con cui interagisce l'utente (una mappa, una lista di messaggi...)
● Service: logiche applicative prive di UI, invocabili da Activity ed eseguibili in background
● Broadcast Intent Receiver: consente l'interazione dell'applicazione con gli eventi del telefono, ricevendo e inviando notifiche
● Content Provider: consentono salvataggio, ricerca e condivisione dati tra applicazioni
Riccardo Solimena, Java Italian Portal - Stefano Sanna, JUG SardegnaJavaday Roma III Edizione – 24 gennaio 2009
View e widget
● Android dispone di una ricca libreria di viste e widget, altamente configurabili e personalizzabili
Riccardo Solimena, Java Italian Portal - Stefano Sanna, JUG SardegnaJavaday Roma III Edizione – 24 gennaio 2009
Ambiente di sviluppo
● SDK dedicato che comprende compilatore per il formato .dex (Dalvik Executable) ed emulatore
● Plug-in per Eclipse che consente la gestione di progetti Android all'interno dell'ambiente di sviluppo
Riccardo Solimena, Java Italian Portal - Stefano Sanna, JUG SardegnaJavaday Roma III Edizione – 24 gennaio 2009
Android Market
● Sulla scia dell'App Store dell'iPhone, Android dispone di un sistema integrato di distribuzione delle applicazioni: l'Android Market
● Attualmente dispone di poco meno di 1000 applicazioni (contro le 15000 dell'App Store) ed è limitato a software gratuito
● Attivo in USA e UK, in primavera arriverà in altre nazioni (Italia inclusa!) e consentirà la vendita di applicazioni.
Riccardo Solimena, Java Italian Portal - Stefano Sanna, JUG SardegnaJavaday Roma III Edizione – 24 gennaio 2009
Android vs Java ME
● Java ME è la tecnologia di mobile computing più diffusa in assoluto, ma soffre di alcuni problemi:
– il disegno originale è del 2001: la retrocompatibilità comincia a pesare
– la frammentarietà delle implementazioni rende difficoltoso il porting e precaria la compatibilità
● Android è stato progettato per dispositivi moderni: un confronto con Java ME è quasi fuori luogo. D'altro canto, però, Android gira su un solo telefono: probabilmente tra 1-2 anni la situazione cambierà...
Riccardo Solimena, Java Italian Portal - Stefano Sanna, JUG SardegnaJavaday Roma III Edizione – 24 gennaio 2009
Android vs iPhone OS
● Android e iPhone OS hanno caratteristiche simili, anche se:
– Android sembra pensato per i programmatori: l'architettura modulare di Android consente mash-up tra applicazioni; è possibile interazione a basso livello e esecuzione in background;
– iPhone OS è evidentemente pensato per gli utenti: il look & feel di CocoaTouch, l'interfaccia multitouch e le guideline di iPhone OS sono estremamente innovativi e hanno segnato un punto di svolta per il mondo della telefonia mobile
Riccardo Solimena, Java Italian Portal - Stefano Sanna, JUG SardegnaJavaday Roma III Edizione – 24 gennaio 2009
G1 o iPhone?
● Questo è ciò che si chiedono tutti: Google o Apple? iPhone o anti-iPhone?
● Il presente è certamente iPhone: oltre 10M di terminali, 15K applicazioni, 500M download
● Android sarà protagonista (?) del 2009, con la commercializzazione di nuovi dispositivi e l'allargamento a nuovi mercati
Riccardo Solimena, Java Italian Portal - Stefano Sanna, JUG SardegnaJavaday Roma III Edizione – 24 gennaio 2009
Conclusioni
● Android è una piattaforma di sviluppo potente, flessibile e innovativa: il futuro della telefonia mobile passerà certamente per questa strada
● L'architettura modulare e l'integrazione con i servizi di Google consente lo sviluppo di applicazioni Mobile Internet avanzate
● L'Android Market potrà essere una buona opportunità per gli sviluppatori indipendenti
Riccardo Solimena, Java Italian Portal - Stefano Sanna, JUG SardegnaJavaday Roma III Edizione – 24 gennaio 2009