11. Razreševanje intentov
Vrsti intentov
• Eksplicitni (namenjeni točno določeni komponenti)
• Implicitni (namenjeni katerikoli komponenti z določeno
lastnostjo)
Android storitve 11
12. Sprejemanje intentov
Intent filtri
Definirani z <intent-filter> v AndroidManifest.xml
Android storitve 12
13. Sprejemanje intentov
Broadcast receiverji
Definirani z <receiver> v AndroidManifest.xml
Implementirani kot podrazred BroadcastReceiver z onReceive()
Android storitve 13
15. Uporabni vgrajeni intenti
• ACTION_VIEW – odpri za ogled
• ACTION_DIAL – odpri telefonsko aplikacijo s številko
• ACTION_SEND – pošlji podatek
• za „share“ funkcionalnost s pomočjo createChooser()
• Broadcast dogodki za praktično vso dogajanje na sistemu
(http://developer.android.com/reference/android/content/Intent.html)
Android storitve 15
19. Vrste storitev
Zagnana Povezana (bound)
• Načeloma izvede eno operacijo / • Je povezana z drugo/imi
ukaz in se zaključi komponento/ami
• Ne vrača rezultata o zagonu • Teče samo dokler je povezana s
čimerkoli
• Lahko teče neomejeno časa
• Lahko uporablja mehanizme za
• Ponavadi se uporablja za komunikacijo z povezanimi
enkratne operacije – nalaganje komponentami
datotek na strežnik ipd.
• Implementacija onBind()
• Implementacija
onStartCommand() • Zagon z bindService()
• Zagon z startService()
Android storitve 19
25. Storitve
Storitve NE tečejo
na drugi niti
Potencialno lahko blokirajo glavno nit prikazane aktivnosti
Android storitve 25
26. Storitve
Komunikacija z toast-i
ali obvestili
Razreda Toast in Notification
Android storitve 26
27. Zagon storitev
• Z obstoječe aktivnosti – v odgovor na uporabniško akcijo
• Z broadcast receiver-ja – v odgovor na intent
• npr. android.intent.action.BOOT_COMPLETED
• uporaba AlarmManager za zagon po intervalu
• Uporabite setInexact… !
Android storitve 27
30. Pošiljanje obvestil
„Push“ na Android način – C2DM
http://code.google.com/intl/sl/android/c2dm/
Android storitve 30
31. Zahteve
Na strani storitve
• Sistem za registracijo naprav
• Sistem za pošiljanje posameznih obvestil
Na strani uporabnika
• Android 2.2+
• Naprava z nameščenim Android Marketom
• Na napravi registriran veljaven Google račun
Android storitve 31
33. Registracija
Na strani storitve
• Strežnik od Googla pridobi Client Auth Token
• Client Auth Token mora biti priložen vsej komunikaciji z Google
strežniki
Na strani Android naprave
• Android sproži intent com.google.c2dm.intent.REGISTER
• V odgovor dobi sprožen intent
com.google.android.c2dm.intent.REGISTRATION
• Z REGISTRATION intenta razbere svoj registration_id, ki ga
potem mora sporočiti storitvi
Android storitve 33
34. Pošiljanje obvestila
1. registration_id, GoogleLogin auth, data
Vaš strežnik Google strežnik
Android naprava
Android storitve 34
* http://code.google.com/intl/sl/apis/accounts/docs/AuthForInstalledApps.html
35. Pošiljanje obvestila
Na strani storitve
• Na googlov strežnik se pošlje POST zahtevek z naslednjo vsebino
• registration_id - ID naprave, ki je prejemnik
• collapse_key – identifikator za „prekrivanje“ sporočil
• data.<ključ> - podatki – data se lahko pojavi večkrat z večimi ključi
• Authorization: GoogleLogin auth=[AUTH] – Google registracijski ključ
Na strani Android naprave
• Dovoljenje com.google.android.c2dm.permission.RECEIVE
• Android sproži intent com.google.c2dm.intent.RECEIVE
• V extras intenta so podani poslani podatki
Android storitve 35
36. Staro in novo
Orodja za podporo večih različic
Android storitve 36
37. Staro in novo
Android Support Libray
Loaderji, Fragmenti, ViewPager na 1.6+
http://developer.android.com/sdk/compatibility-library.html
Android storitve 37
38. Staro in novo
ActionBarSherlock
Actionbar API na 2.0+
http://beta.abs.io/
Android storitve 38
39. Staro in novo
NineOldAndroids
Honeycomb animacije na 1.0+
http://nineoldandroids.com/
Android storitve 39