SlideShare a Scribd company logo
1 of 19
ROME 11-12 april 2014ROME 11-12 april 2014
Android & Internet of Things with Google
Cloud Messaging and AppEngine
GDG Roma L-AB
Antonino Orlando
Simone Pulcini e il GDG Roma L-AB
ROME 11-12 april 2014
Chi siamo: GDG Roma L-AB
http://goo.gl/QG40Os http://goo.gl/6QRlP9
http://goo.gl/cEF2Yn
Il nostro prossimo evento:
ROME 11-12 april 2014
• orlando.antonino@gmail.com
• http://it.linkedin.com/in/orlan
doantonino
• https://plus.google.com/+Anto
ninoOrlando
Chi siamo: Antonino Orlando
ROME 11-12 april 2014
• simone.pulcini@gmail.com
• http://www.linkedin.com/i
n/simonepulcini
• https://plus.google.com/+S
imonePulcini
Chi siamo: Simone Pulcini
ROME 11-12 april 2014
NFC
• RFID (Radio Frequency Identification)
• permette una comunicazione bidirezionale:
entro un raggio di 4 cm
• opera alla frequenza di 13,56 MHz e può
raggiungere una velocità di trasmissione
massima di 424 kbit/s.
ROME 11-12 april 2014
Google Cloud Messaging
1) Invio un messaggio a gcm
2) GCM inoltre al device
ROME 11-12 april 2014
Workflow del lab
1) Il dispositivo rileva un tag
2) il dispositivo notifica l'evento
al nostro backend
3) il backend chiede l'invio della
notifica a GCM
4) GCM inoltra la notifica
all'utente
ROME 11-12 april 2014
Stack software e sorgenti
• ADT Bundle più Plug-in Eclipse per GAE
• Google Play Services (da Android SDK Extras)
• Android Support Library (da Android SDK
Extras)
• github.com/orlando-antonino/GdGLAb_IoT-
AppEngine_TODO.git
• github.com/orlando-antonino/SendByNFC.git
• github.com/spulci/codemotion2014/tree/master/Co
demotionIOTLabBackend
ROME 11-12 april 2014
• All'interno del progetto
possiamo trovare i passi di
sviluppo usando la view
“tasks” di eclipse
• Abbiamo un tempo definito
per eseguire ogni “todo”
• siamo qui per sviluppare
insieme... fate domande
Lab How-to
ROME 11-12 april 2014
• Richiamiamo il metodo
all'interno dell'activity per
richiedere un
registrationID al server
GCM
• http://developer.android.com/
reference/com/google/androi
d/gms/gcm/GoogleCloudMess
aging.html
Step 1: registration ID
ROME 11-12 april 2014
• Inseriamo nelle S.P.:
1. property_reg_id
2. property_app_version
• recuperiamo dalle S.P. il
registrationID memorizzato
precedentemente:
1. property_reg_id
http://developer.android.com/referen
ce/android/content/SharedPreferenc
es.html
Step 2: Shared Preferences
ROME 11-12 april 2014
• inseriamo il codice necessario a
richiedere il registrationID al GCM
server
• richiamiamo il metodo all'interno
dell'activity per memorizzare
localmente il registrationID
• inviamo il registrationID al
backend AppEngine
http://developer.android.com/reference/co
m/google/android/gms/gcm/GoogleCloudM
essaging.html
Step 3: GCM
ROME 11-12 april 2014
• Entity: lightweight
persistence domain object
• Annotazioni JPA usate:
@Entity, @Id,
@GeneratedValue
• https://developers.google.com/a
ppengine/docs/java/datastore/jp
a/overview-dn2?hl=it
Step 4: creazione di un Entity Bean
ROME 11-12 april 2014
• Pattern DAO
• Diversi servizi già realizzati
• Il servizio da realizzare rende
persistente un ClientBean
• https://developers.google.co
m/appengine/docs/java/data
store/jpa/overview-dn2?hl=it
Step 5: servizio addClientBean
ROME 11-12 april 2014
• Esponiamo un servizio sul
web in modo da poterlo
chiamare da remoto (dal
client android)
• Annotazioni: @Api,
@ApiMethod (con attributi)
• https://developers.google.co
m/appengine/docs/java/endp
oints/
Step 6: creazione Cloud Endpoint
ROME 11-12 april 2014
• Radice progetto (tasto
destro): Google -> Generate
Cloud Endpoint Client
Library
• Innestiamo il codice nel
client Android sistemando i
jar generati e chiamando le
API (lo abbiamo fatto noi
per voi)
Step 7: generiamo e integriamo… (1/2)
ROME 11-12 april 2014
Step 7: generiamo e integriamo… (2/2)
• riempiamo la segnatura remota per l'operazione
addclient che prende un ClientBean popolato dal suo
registrationId e lo memorizza sul datastore
invocando il metodo remoto
• lanciamo l'operazione remota di cui abbiamo
preparato la segnatura di cui sopra: viene aperta una
connessione HTTP e viene effettuata la chiamata
ROME 11-12 april 2014
E per finire….GCM server side
• GCM può essere interrogato via HTTP o XMPP
• Lato server in HTTP abbiamo usato
l’implementazione del progetto
http://code.google.com/p/gcm/source/brows
e/#git%2Fgcm-server
• I formati della message request e altra
documentazione:
https://developer.android.com/google/gcm/ht
tp.html
ROME 11-12 april 2014
GRAZIE A TUTTI!

More Related Content

Viewers also liked

аппаратная реализация компьютера
аппаратная реализация компьютерааппаратная реализация компьютера
аппаратная реализация компьютера
klochkova
 
Music analysis
Music analysisMusic analysis
Music analysis
DWoodman48
 

Viewers also liked (16)

Blogopedia inspiracji
Blogopedia inspiracjiBlogopedia inspiracji
Blogopedia inspiracji
 
Infografik BestFewo: Urlaub in Schleswig-Holstein
Infografik BestFewo: Urlaub in Schleswig-HolsteinInfografik BestFewo: Urlaub in Schleswig-Holstein
Infografik BestFewo: Urlaub in Schleswig-Holstein
 
Bestfewo Infografik Urlaub in Nordfriesland und auf den Nordfriesischen Inseln
Bestfewo Infografik Urlaub in Nordfriesland und auf den Nordfriesischen InselnBestfewo Infografik Urlaub in Nordfriesland und auf den Nordfriesischen Inseln
Bestfewo Infografik Urlaub in Nordfriesland und auf den Nordfriesischen Inseln
 
Wirtualna Recepcja Prezentacja
Wirtualna Recepcja PrezentacjaWirtualna Recepcja Prezentacja
Wirtualna Recepcja Prezentacja
 
аппаратная реализация компьютера
аппаратная реализация компьютерааппаратная реализация компьютера
аппаратная реализация компьютера
 
Raport strategiczny IAB Polska Internet 2010 Polska - Europa - Świat
Raport strategiczny IAB Polska Internet 2010 Polska - Europa - ŚwiatRaport strategiczny IAB Polska Internet 2010 Polska - Europa - Świat
Raport strategiczny IAB Polska Internet 2010 Polska - Europa - Świat
 
BestFewo Infografik: Urlaub mit Hund 2016
BestFewo Infografik: Urlaub mit Hund 2016BestFewo Infografik: Urlaub mit Hund 2016
BestFewo Infografik: Urlaub mit Hund 2016
 
BestFewo Infografik Fahrradurlaub 2016
BestFewo Infografik Fahrradurlaub 2016BestFewo Infografik Fahrradurlaub 2016
BestFewo Infografik Fahrradurlaub 2016
 
Music analysis
Music analysisMusic analysis
Music analysis
 
A Journey into Google Cloud Messaging
A Journey into Google Cloud MessagingA Journey into Google Cloud Messaging
A Journey into Google Cloud Messaging
 
L@Fw2008 Dawn Foster
L@Fw2008 Dawn FosterL@Fw2008 Dawn Foster
L@Fw2008 Dawn Foster
 
L@Fw2008 Al Partridge
L@Fw2008 Al PartridgeL@Fw2008 Al Partridge
L@Fw2008 Al Partridge
 
2011.05.25 Raport strategiczny IAB Polska INTERNET 2010
2011.05.25 Raport strategiczny IAB Polska INTERNET 20102011.05.25 Raport strategiczny IAB Polska INTERNET 2010
2011.05.25 Raport strategiczny IAB Polska INTERNET 2010
 
Revamping Your Global Site Strategy
Revamping Your Global Site StrategyRevamping Your Global Site Strategy
Revamping Your Global Site Strategy
 
Innowacyjny trexy marketing
Innowacyjny trexy marketingInnowacyjny trexy marketing
Innowacyjny trexy marketing
 
Prototyping is an attitude
Prototyping is an attitudePrototyping is an attitude
Prototyping is an attitude
 

Similar to Codemotion Rome 2014: Codelab "Android & Internet of Things with Google Cloud Messaging and AppEngine"

Similar to Codemotion Rome 2014: Codelab "Android & Internet of Things with Google Cloud Messaging and AppEngine" (20)

WP04 -Sensori e hardware con Windows Phone 8.1
WP04 -Sensori e hardware con Windows Phone 8.1WP04 -Sensori e hardware con Windows Phone 8.1
WP04 -Sensori e hardware con Windows Phone 8.1
 
Internet of things: rendere facile il difficile attraverso l'utile - Guglielm...
Internet of things: rendere facile il difficile attraverso l'utile - Guglielm...Internet of things: rendere facile il difficile attraverso l'utile - Guglielm...
Internet of things: rendere facile il difficile attraverso l'utile - Guglielm...
 
Wp app studio_new
Wp app studio_newWp app studio_new
Wp app studio_new
 
Gae python gdg milano L03
Gae python gdg milano L03Gae python gdg milano L03
Gae python gdg milano L03
 
GAE python GDG Milano L06
GAE python GDG Milano L06GAE python GDG Milano L06
GAE python GDG Milano L06
 
GAE python GDG Milano L04
GAE python GDG Milano L04GAE python GDG Milano L04
GAE python GDG Milano L04
 
The Web as a Goldmine (for journalists)
The Web as a Goldmine (for journalists)The Web as a Goldmine (for journalists)
The Web as a Goldmine (for journalists)
 
Easymoove ITA
Easymoove ITAEasymoove ITA
Easymoove ITA
 
GAE python GDG Milano - L01
GAE python GDG Milano - L01GAE python GDG Milano - L01
GAE python GDG Milano - L01
 
Introduzione ad Android
Introduzione ad AndroidIntroduzione ad Android
Introduzione ad Android
 
Creare un tema Responsive per Magento con Bootstrap
Creare un tema Responsive per Magento con BootstrapCreare un tema Responsive per Magento con Bootstrap
Creare un tema Responsive per Magento con Bootstrap
 
12. Mobile internet
12. Mobile internet 12. Mobile internet
12. Mobile internet
 
Giacomo Barbieri - Tecnologia per lo Studio - Brescia, 19/02/2014
Giacomo Barbieri - Tecnologia per lo Studio - Brescia, 19/02/2014Giacomo Barbieri - Tecnologia per lo Studio - Brescia, 19/02/2014
Giacomo Barbieri - Tecnologia per lo Studio - Brescia, 19/02/2014
 
00 - VMUGIT - Lecce 2018 - Intro
00 - VMUGIT - Lecce 2018 - Intro00 - VMUGIT - Lecce 2018 - Intro
00 - VMUGIT - Lecce 2018 - Intro
 
Ebeacons attendence
Ebeacons attendenceEbeacons attendence
Ebeacons attendence
 
Google My Business - Sui social ti trovano, su Google ti cercano.
Google My Business - Sui social ti trovano, su Google ti cercano.Google My Business - Sui social ti trovano, su Google ti cercano.
Google My Business - Sui social ti trovano, su Google ti cercano.
 
Come fly with me - Minerva and Del Pino
Come fly with me - Minerva and Del PinoCome fly with me - Minerva and Del Pino
Come fly with me - Minerva and Del Pino
 
Web e Privacy
Web e PrivacyWeb e Privacy
Web e Privacy
 
Creare PWA con Angular
Creare PWA con AngularCreare PWA con Angular
Creare PWA con Angular
 
Market e Tools: Utility per la personalizzazione di applicazioni Android
Market e Tools: Utility per la personalizzazione di applicazioni AndroidMarket e Tools: Utility per la personalizzazione di applicazioni Android
Market e Tools: Utility per la personalizzazione di applicazioni Android
 

Codemotion Rome 2014: Codelab "Android & Internet of Things with Google Cloud Messaging and AppEngine"

  • 1. ROME 11-12 april 2014ROME 11-12 april 2014 Android & Internet of Things with Google Cloud Messaging and AppEngine GDG Roma L-AB Antonino Orlando Simone Pulcini e il GDG Roma L-AB
  • 2. ROME 11-12 april 2014 Chi siamo: GDG Roma L-AB http://goo.gl/QG40Os http://goo.gl/6QRlP9 http://goo.gl/cEF2Yn Il nostro prossimo evento:
  • 3. ROME 11-12 april 2014 • orlando.antonino@gmail.com • http://it.linkedin.com/in/orlan doantonino • https://plus.google.com/+Anto ninoOrlando Chi siamo: Antonino Orlando
  • 4. ROME 11-12 april 2014 • simone.pulcini@gmail.com • http://www.linkedin.com/i n/simonepulcini • https://plus.google.com/+S imonePulcini Chi siamo: Simone Pulcini
  • 5. ROME 11-12 april 2014 NFC • RFID (Radio Frequency Identification) • permette una comunicazione bidirezionale: entro un raggio di 4 cm • opera alla frequenza di 13,56 MHz e può raggiungere una velocità di trasmissione massima di 424 kbit/s.
  • 6. ROME 11-12 april 2014 Google Cloud Messaging 1) Invio un messaggio a gcm 2) GCM inoltre al device
  • 7. ROME 11-12 april 2014 Workflow del lab 1) Il dispositivo rileva un tag 2) il dispositivo notifica l'evento al nostro backend 3) il backend chiede l'invio della notifica a GCM 4) GCM inoltra la notifica all'utente
  • 8. ROME 11-12 april 2014 Stack software e sorgenti • ADT Bundle più Plug-in Eclipse per GAE • Google Play Services (da Android SDK Extras) • Android Support Library (da Android SDK Extras) • github.com/orlando-antonino/GdGLAb_IoT- AppEngine_TODO.git • github.com/orlando-antonino/SendByNFC.git • github.com/spulci/codemotion2014/tree/master/Co demotionIOTLabBackend
  • 9. ROME 11-12 april 2014 • All'interno del progetto possiamo trovare i passi di sviluppo usando la view “tasks” di eclipse • Abbiamo un tempo definito per eseguire ogni “todo” • siamo qui per sviluppare insieme... fate domande Lab How-to
  • 10. ROME 11-12 april 2014 • Richiamiamo il metodo all'interno dell'activity per richiedere un registrationID al server GCM • http://developer.android.com/ reference/com/google/androi d/gms/gcm/GoogleCloudMess aging.html Step 1: registration ID
  • 11. ROME 11-12 april 2014 • Inseriamo nelle S.P.: 1. property_reg_id 2. property_app_version • recuperiamo dalle S.P. il registrationID memorizzato precedentemente: 1. property_reg_id http://developer.android.com/referen ce/android/content/SharedPreferenc es.html Step 2: Shared Preferences
  • 12. ROME 11-12 april 2014 • inseriamo il codice necessario a richiedere il registrationID al GCM server • richiamiamo il metodo all'interno dell'activity per memorizzare localmente il registrationID • inviamo il registrationID al backend AppEngine http://developer.android.com/reference/co m/google/android/gms/gcm/GoogleCloudM essaging.html Step 3: GCM
  • 13. ROME 11-12 april 2014 • Entity: lightweight persistence domain object • Annotazioni JPA usate: @Entity, @Id, @GeneratedValue • https://developers.google.com/a ppengine/docs/java/datastore/jp a/overview-dn2?hl=it Step 4: creazione di un Entity Bean
  • 14. ROME 11-12 april 2014 • Pattern DAO • Diversi servizi già realizzati • Il servizio da realizzare rende persistente un ClientBean • https://developers.google.co m/appengine/docs/java/data store/jpa/overview-dn2?hl=it Step 5: servizio addClientBean
  • 15. ROME 11-12 april 2014 • Esponiamo un servizio sul web in modo da poterlo chiamare da remoto (dal client android) • Annotazioni: @Api, @ApiMethod (con attributi) • https://developers.google.co m/appengine/docs/java/endp oints/ Step 6: creazione Cloud Endpoint
  • 16. ROME 11-12 april 2014 • Radice progetto (tasto destro): Google -> Generate Cloud Endpoint Client Library • Innestiamo il codice nel client Android sistemando i jar generati e chiamando le API (lo abbiamo fatto noi per voi) Step 7: generiamo e integriamo… (1/2)
  • 17. ROME 11-12 april 2014 Step 7: generiamo e integriamo… (2/2) • riempiamo la segnatura remota per l'operazione addclient che prende un ClientBean popolato dal suo registrationId e lo memorizza sul datastore invocando il metodo remoto • lanciamo l'operazione remota di cui abbiamo preparato la segnatura di cui sopra: viene aperta una connessione HTTP e viene effettuata la chiamata
  • 18. ROME 11-12 april 2014 E per finire….GCM server side • GCM può essere interrogato via HTTP o XMPP • Lato server in HTTP abbiamo usato l’implementazione del progetto http://code.google.com/p/gcm/source/brows e/#git%2Fgcm-server • I formati della message request e altra documentazione: https://developer.android.com/google/gcm/ht tp.html
  • 19. ROME 11-12 april 2014 GRAZIE A TUTTI!