SlideShare una empresa de Scribd logo
1 de 40
Android storitve
             Jernej Virag



    Jernej Virag | @jernejv | http://www.virag.si   1
Nameni
                                Intents




http://developer.android.com/guide/topics/intents/intents-filters.html

    Android storitve                                              2
Zakaj?

                          Sporočila
               Sporočila med aktivnostmi, storitvami in sprejemniki




Android storitve                                                      3
Intent

    Instanca razreda Intent



Android storitve              4
Kaj je v intentu?

                    Ukaz (action)
              ACTION_CALL, ACTION_EDIT, ACTION_SCREEN_ON




Android storitve                                           5
Kaj je v intentu?

                    Podatki (data)



Android storitve                       6
Kaj je v intentu?

           Kategorija (category)
                   CATEGORY_BROWSABLE, CATEGORY_HOME




Android storitve                                       7
Kaj je v intentu?

                   Ime komponente
                      com.example.application




Android storitve                                8
Klicanje intenta
Vrste klicev

• startActivity()
• startService() / bindService()
• sendBroadcast() / sendOrderedBroadcast()




  Android storitve                           9
Klicanje intenta




Android storitve                      10
Razreševanje intentov
Vrsti intentov

• Eksplicitni (namenjeni točno določeni komponenti)

• Implicitni (namenjeni katerikoli komponenti z določeno
  lastnostjo)




  Android storitve                                         11
Sprejemanje intentov

                      Intent filtri
            Definirani z <intent-filter> v AndroidManifest.xml




Android storitve                                                 12
Sprejemanje intentov

            Broadcast receiverji
          Definirani z <receiver> v AndroidManifest.xml
 Implementirani kot podrazred BroadcastReceiver z onReceive()




Android storitve                                                13
Sprejemanje intentov




Android storitve                14
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
Storitve
                              Services




http://developer.android.com/guide/topics/fundamentals/services.html

   Android storitve                                              16
Storitve

                   Edine v ozadju
                      Najboljše za kratki čas




Android storitve                                17
Ustvarjanje storitve

Podrazred razreda Service
                   Implementacija onStartCommand() ali onBind()




Android storitve                                                  18
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
Vrste storitev




Android storitve                    20
Zagnana storitev
           onStartCommand()
             vrača vrednost
        START_STICKY, START_NOT_STICKY, START_REDELIVER_INTENT




Android storitve                                                 21
Zagnana storitev
         OBVEZNO mora biti
            ustavljena
                     Klic stopSelf() ali stopService()




Android storitve                                         22
Povezana storitev

  onBind() vrača vrednost
                       Instanco razreda IBinder




Android storitve                                  23
Povezana storitev

Komunikacija čez IBinder
transact() za pošiljanje informacij, Binder.onTransact() za sprejemanje




Android storitve                                                          24
Storitve

              Storitve NE tečejo
                 na drugi niti
         Potencialno lahko blokirajo glavno nit prikazane aktivnosti




Android storitve                                                       25
Storitve

       Komunikacija z toast-i
          ali obvestili
                   Razreda Toast in Notification




Android storitve                                   26
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
Storitve




Android storitve              28
Storitve




Android storitve              29
Pošiljanje obvestil
                    „Push“ na Android način – C2DM




http://code.google.com/intl/sl/android/c2dm/
Android storitve                                     30
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
Registracija

  Vaš strežnik



          3. registration_id

                                                                                Google strežnik




Android naprava


    Android storitve                                                                          32
                        * http://code.google.com/intl/sl/apis/accounts/docs/AuthForInstalledApps.html
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
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
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
Staro in novo
                   Orodja za podporo večih različic




Android storitve                                      36
Staro in novo

 Android Support Libray
                   Loaderji, Fragmenti, ViewPager na 1.6+




   http://developer.android.com/sdk/compatibility-library.html

Android storitve                                                 37
Staro in novo

             ActionBarSherlock
                     Actionbar API na 2.0+




                      http://beta.abs.io/

Android storitve                             38
Staro in novo

              NineOldAndroids
                    Honeycomb animacije na 1.0+




                    http://nineoldandroids.com/

Android storitve                                  39
?
                      Jernej Virag
                         @jernejv
                   http://www.virag.si




Android storitve                         40

Más contenido relacionado

Más de Jernej Virag

Más de Jernej Virag (8)

PSPDFKit on Android
PSPDFKit on AndroidPSPDFKit on Android
PSPDFKit on Android
 
Python simillar image search
Python simillar image searchPython simillar image search
Python simillar image search
 
Solr
SolrSolr
Solr
 
From Doom to Crysis
From Doom to CrysisFrom Doom to Crysis
From Doom to Crysis
 
Ip security
Ip securityIp security
Ip security
 
Java stereams
Java stereamsJava stereams
Java stereams
 
Pretty good privacy
Pretty good privacyPretty good privacy
Pretty good privacy
 
Jni – java native interface
Jni – java native interfaceJni – java native interface
Jni – java native interface
 

Android services

  • 1. Android storitve Jernej Virag Jernej Virag | @jernejv | http://www.virag.si 1
  • 2. Nameni Intents http://developer.android.com/guide/topics/intents/intents-filters.html Android storitve 2
  • 3. Zakaj? Sporočila Sporočila med aktivnostmi, storitvami in sprejemniki Android storitve 3
  • 4. Intent Instanca razreda Intent Android storitve 4
  • 5. Kaj je v intentu? Ukaz (action) ACTION_CALL, ACTION_EDIT, ACTION_SCREEN_ON Android storitve 5
  • 6. Kaj je v intentu? Podatki (data) Android storitve 6
  • 7. Kaj je v intentu? Kategorija (category) CATEGORY_BROWSABLE, CATEGORY_HOME Android storitve 7
  • 8. Kaj je v intentu? Ime komponente com.example.application Android storitve 8
  • 9. Klicanje intenta Vrste klicev • startActivity() • startService() / bindService() • sendBroadcast() / sendOrderedBroadcast() Android storitve 9
  • 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
  • 16. Storitve Services http://developer.android.com/guide/topics/fundamentals/services.html Android storitve 16
  • 17. Storitve Edine v ozadju Najboljše za kratki čas Android storitve 17
  • 18. Ustvarjanje storitve Podrazred razreda Service Implementacija onStartCommand() ali onBind() Android storitve 18
  • 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
  • 21. Zagnana storitev onStartCommand() vrača vrednost START_STICKY, START_NOT_STICKY, START_REDELIVER_INTENT Android storitve 21
  • 22. Zagnana storitev OBVEZNO mora biti ustavljena Klic stopSelf() ali stopService() Android storitve 22
  • 23. Povezana storitev onBind() vrača vrednost Instanco razreda IBinder Android storitve 23
  • 24. Povezana storitev Komunikacija čez IBinder transact() za pošiljanje informacij, Binder.onTransact() za sprejemanje Android storitve 24
  • 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
  • 32. Registracija Vaš strežnik 3. registration_id Google strežnik Android naprava Android storitve 32 * http://code.google.com/intl/sl/apis/accounts/docs/AuthForInstalledApps.html
  • 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
  • 40. ? Jernej Virag @jernejv http://www.virag.si Android storitve 40