Differences

This shows you the differences between two versions of the page.

Link to this comparison view

eim:laboratoare:laborator04 [2020/03/11 15:23]
stefan.aldoiu [Gestiunea evenimentelor cu difuzare prin intermediul intențiilor (Optional)]
eim:laboratoare:laborator04 [2021/02/16 16:02] (current)
dragos.niculescu
Line 442: Line 442:
 <note important>​Este necesar ca metoda ''​onReceive()''​ să se termine în maximum 5 secunde, în caz contrar fiind afișată o fereastră de dialog pentru a determina oprirea sa forțată.</​note>​ <note important>​Este necesar ca metoda ''​onReceive()''​ să se termine în maximum 5 secunde, în caz contrar fiind afișată o fereastră de dialog pentru a determina oprirea sa forțată.</​note>​
  
-</​spoiler>​ 
  
 +</​spoiler>​
 === Tipuri particulare de intenții cu difuzare === === Tipuri particulare de intenții cu difuzare ===
 +<​spoiler>​
  
 Există și tipuri particulare de intenții cu difuzare: Există și tipuri particulare de intenții cu difuzare:
   - intenții cu difuzare **ordonate**,​ utile în situația în care o intenție cu difuzare trebuie să fie procesată secvențial de mai mulți ascultători,​ fiecare dintre aceștia având posibilitatea de a modifica intenția respectivă;​   - intenții cu difuzare **ordonate**,​ utile în situația în care o intenție cu difuzare trebuie să fie procesată secvențial de mai mulți ascultători,​ fiecare dintre aceștia având posibilitatea de a modifica intenția respectivă;​
   - intenții cu difuzare **persistente**,​ care mențin valoarea care a fost transmisă cel mai recent.   - intenții cu difuzare **persistente**,​ care mențin valoarea care a fost transmisă cel mai recent.
 +</​spoiler>​
 == Intenții cu difuzare ordonate == == Intenții cu difuzare ordonate ==
-<spoiler Opțional>​ 
  
 +<​spoiler>​
 Pentru ca o intenție cu difuzare să poate fi procesată de mai mulți ascultători într-o anumită ordine, ar trebui să fie transmisă prin intermediul metodei ''​sendOrderedBroadcast()''​ căreia i se poate atașa (opțional) și o anumită permisiune, pe care clasa ascultător trebuie să o dețină: Pentru ca o intenție cu difuzare să poate fi procesată de mai mulți ascultători într-o anumită ordine, ar trebui să fie transmisă prin intermediul metodei ''​sendOrderedBroadcast()''​ căreia i se poate atașa (opțional) și o anumită permisiune, pe care clasa ascultător trebuie să o dețină:
  
Line 480: Line 480:
  
 Frecvent, intențiile cu difuzare ordonate sunt folosite atunci când se dorește transmiterea unor rezultate înapoi, către aplicația Android care le-a transmis, după ce toți ascultătorii au realizat procesarea acestora. În acest sens, metoda ''​sendOrderedBroadcast()''​ va primi suplimentar ca parametrii și obiectul de tip ''​BroadcastReceiver''​ care va procesa ultimul intenția cu difuzare, un obiect de tip ''​Handler''​ care va primi rezultatul final (se transmite valoarea ''​null''​ dacă se dorește ca acesta să fie aplicația care a transmis intenția), rezultatul, secțiunile ''​data''​ / ''​extra''​ ale intenției pe care se poate opera. Frecvent, intențiile cu difuzare ordonate sunt folosite atunci când se dorește transmiterea unor rezultate înapoi, către aplicația Android care le-a transmis, după ce toți ascultătorii au realizat procesarea acestora. În acest sens, metoda ''​sendOrderedBroadcast()''​ va primi suplimentar ca parametrii și obiectul de tip ''​BroadcastReceiver''​ care va procesa ultimul intenția cu difuzare, un obiect de tip ''​Handler''​ care va primi rezultatul final (se transmite valoarea ''​null''​ dacă se dorește ca acesta să fie aplicația care a transmis intenția), rezultatul, secțiunile ''​data''​ / ''​extra''​ ale intenției pe care se poate opera.
-</​spoiler>​ 
  
 +</​spoiler>​
 == Intenții cu difuzare persistente == == Intenții cu difuzare persistente ==
-<​spoiler ​Opțional>+<​spoiler>​
 Pentru ca o intenție cu difuzare să își mențină cea mai recentă valoare, ar trebui să fie transmisă prin intermediul metodei ''​sendStickyBroadcast()''​. Pentru ca o intenție cu difuzare să își mențină cea mai recentă valoare, ar trebui să fie transmisă prin intermediul metodei ''​sendStickyBroadcast()''​.
  
Line 506: Line 506:
  
 <​note>​În Android, astfel de intenții sunt utilizate de sistemul de operare pentru a indica starea dispozitivului mobil (nivelul de încărcare al bateriei, conectivitatea la Internet) pentru a îmbunătăți eficiența.</​note>​ <​note>​În Android, astfel de intenții sunt utilizate de sistemul de operare pentru a indica starea dispozitivului mobil (nivelul de încărcare al bateriei, conectivitatea la Internet) pentru a îmbunătăți eficiența.</​note>​
 +
 </​spoiler>​ </​spoiler>​
- 
 === Gestiunea intențiilor cu difuzare native === === Gestiunea intențiilor cu difuzare native ===
 +<​spoiler>​
 Cele mai multe servicii de sistem transmit intenții cu difuzare pentru a semnala faptul că s-au produs anumite modificări la nivelul stării dispozitivului mobil sau al aplicațiilor (primirea unui apel telefonic / mesaj, schimbarea nivelului de încărcare al bateriei, conectivitatea la Internet). Cele mai multe servicii de sistem transmit intenții cu difuzare pentru a semnala faptul că s-au produs anumite modificări la nivelul stării dispozitivului mobil sau al aplicațiilor (primirea unui apel telefonic / mesaj, schimbarea nivelului de încărcare al bateriei, conectivitatea la Internet).
  
Line 538: Line 538:
 boolean isMobile = (networkInfo.getType() == ConnectivityManager.TYPE_MOBILE);​ boolean isMobile = (networkInfo.getType() == ConnectivityManager.TYPE_MOBILE);​
 </​code>​ </​code>​
 +</​spoiler>​
 <​hidden>​ <​hidden>​
 ===== Fragmente (opțional) ===== ===== Fragmente (opțional) =====
Line 953: Line 953:
 </​hidden>​ </​hidden>​
  
 +</​spoiler>​
  
 ===== Activitate de Laborator ===== ===== Activitate de Laborator =====
Line 970: Line 970:
  
 **2.** Să se cloneze într-un director de pe discul local conținutul depozitului la distanță astfel creat. În urma acestei operații, directorul Laborator04 va trebui să se conțină fișierele ''​README.md'',​ ''​.gitignore''​ care indică tipurile de fișiere (extensiile) ignorate și ''​LICENSE''​. <​code>​ **2.** Să se cloneze într-un director de pe discul local conținutul depozitului la distanță astfel creat. În urma acestei operații, directorul Laborator04 va trebui să se conțină fișierele ''​README.md'',​ ''​.gitignore''​ care indică tipurile de fișiere (extensiile) ignorate și ''​LICENSE''​. <​code>​
-student@eim2017:~$ git clone https://​www.github.com/​eim2017/​Laborator04+student@eim-lab:~$ git clone https://​www.github.com/​perfectstudent/​Laborator04.git
 </​code>​ </​code>​
  
Line 984: Line 984:
 {{ :​eim:​laboratoare:​laborator04:​04androidstudio.png?​nolink&​600 }} {{ :​eim:​laboratoare:​laborator04:​04androidstudio.png?​nolink&​600 }}
  
-Se indică platforma pentru care se dezvoltă aplicația Android (se bifează doar //Phone and Tablet//), iar SDK-ul Android (minim) pentru care se garantează funcționarea este API 16 (Jelly Bean, 4.1).+Se indică platforma pentru care se dezvoltă aplicația Android (se bifează doar //Phone and Tablet//), iar SDK-ul Android (minim) pentru care se garantează funcționarea este API 24 (Nougat).
  
 {{ :​eim:​laboratoare:​laborator04:​05androidstudio.png?​nolink&​600 }} {{ :​eim:​laboratoare:​laborator04:​05androidstudio.png?​nolink&​600 }}
Line 1075: Line 1075:
   * se înregistrează o instanță a clasei ascultător ca mecanism de tratare a evenimentelor de tip accesare a butoanelor din cadrul interfeței grafice, prin apelul metodei ''​setOnClickListener()''​.   * se înregistrează o instanță a clasei ascultător ca mecanism de tratare a evenimentelor de tip accesare a butoanelor din cadrul interfeței grafice, prin apelul metodei ''​setOnClickListener()''​.
  
-**5.** Să se modifice aplicația Android [[https://​github.com/​eim2017/​Laborator03.git|Phone Dialer]] astfel încât să conțină un buton suplimentar prin care este invocată aplicația //Contacts Manager// căreia îi transmite numărul de telefon format și așteptând un rezultat cu privire la stocarea contactului în agenda telefonică.+**5.** Să se modifice aplicația Android [[https://​github.com/​eim-lab/​Laborator03.git|Phone Dialer]] astfel încât să conțină un buton suplimentar prin care este invocată aplicația //Contacts Manager// căreia îi transmite numărul de telefon format și așteptând un rezultat cu privire la stocarea contactului în agenda telefonică.
  
 {{ :​eim:​laboratoare:​laborator04:​10phone_dialer_portrait.png?​nolink&​300 }} {{ :​eim:​laboratoare:​laborator04:​10phone_dialer_portrait.png?​nolink&​300 }}
Line 1155: Line 1155:
  
 **7.** ​ Să se încarce modificările realizate în cadrul depozitului '​Laborator04'​ de pe contul Github personal, folosind un mesaj sugestiv. <​code>​ **7.** ​ Să se încarce modificările realizate în cadrul depozitului '​Laborator04'​ de pe contul Github personal, folosind un mesaj sugestiv. <​code>​
-student@eim2017:​~/​Laborator04$ git add * +student@eim-lab:​~/​Laborator04$ git add * 
-student@eim2017:​~/​Laborator04$ git commit -m "​implemented taks for laboratory 04" +student@eim-lab:​~/​Laborator04$ git commit -m "​implemented taks for laboratory 04" 
-student@eim2017:​~/​Laborator04$ git push origin master+student@eim-lab:​~/​Laborator04$ git push origin master
 </​code>​ </​code>​
  
Line 1172: Line 1172:
 [[http://​www.coreservlets.com/​android-tutorial|Android Programming Tutorials - Core Servlets]] - secțiunile Intents - part I, II & III\\  [[http://​www.coreservlets.com/​android-tutorial|Android Programming Tutorials - Core Servlets]] - secțiunile Intents - part I, II & III\\ 
 [[http://​www.vogella.com/​tutorials/​AndroidIntent/​article.html|Android Intents - Tutorial]] [[http://​www.vogella.com/​tutorials/​AndroidIntent/​article.html|Android Intents - Tutorial]]
 +
 +===== Android Fundamentals =====
 +[[https://​docs.google.com/​presentation/​d/​1kjxsI9brdVRIx3rqoB0H-1-PmVlzJbiQNf4PyqzZKJM/​edit#​slide=id.g116e4ee7f0_0_171|Android Intents]]
 +[[https://​docs.google.com/​presentation/​d/​1DSl-LNN7Kp3gQ9ZadBe8clWNGhs_8xdcYQoxZbF5cRk/​edit#​slide=id.g116d7d9d49_3_13|Explicit and Implicit Intents]]
eim/laboratoare/laborator04.1583933025.txt.gz · Last modified: 2020/03/11 15:23 by stefan.aldoiu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0