Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
laboratoare:laborator10 [2015/05/12 01:24]
Andrei Roșu-Cojocaru [Activitate de Laborator]
laboratoare:laborator10 [2017/02/20 20:55] (current)
Line 15: Line 15:
 ===== Configurare ===== ===== Configurare =====
  
-**1.** În cadrul [[https://code.google.com/​apis/​console/​|Consolei Google API]], se activează API-ul //Google Maps for Android//, generându-se totodată și o cheie Android prin care aplicația care rulează pe dispozitivul mobil va putea să acceseze o astfel de funcționalitate.+**1.** În cadrul [[https://console.developers.google.com|Consolei Google API]], se activează API-ul //Google Maps Android ​API//, generându-se totodată și o cheie Android prin care aplicația care rulează pe dispozitivul mobil va putea să acceseze o astfel de funcționalitate.
  
 <note important>​Trebuie să fiți autentificați folosind numele de utilizator și parola contului Google, altfel va trebui să vă creați un astfel de cont.</​note>​ <note important>​Trebuie să fiți autentificați folosind numele de utilizator și parola contului Google, altfel va trebui să vă creați un astfel de cont.</​note>​
  
-<note important>​În situația în care nu a fost creat un proiect Google API în prealabil, trebuie realizat acest lucru, prin selectarea opțiunii //Create Project...//​.</note>+<note important>​ 
 +În situația în care nu a fost creat un proiect Google API în prealabil, trebuie realizat acest lucru, prin selectarea opțiunii //Create Project...// ​din meniul ​//Select a Project//.
  
-  * În secțiunea //APIs & auth// → //APIs//, în categoria //Google Maps APIs//, se accesează opțiunea //Google Maps Android APIs//, activându-se acest serviciu.\\ \\ {{ :​laboratoare:​laborator10:​configurare01.png?​nolink&​600 }}\\ {{ :​laboratoare:​laborator10:​configurare02.png?​nolink }}\\ Ulterior, vor putea fi vizualizate statistici cu privire la gradul de utilizare al acestui serviciu (numărul de solicitări pe o perioadă de 28 de zile, defalcate pe țări / teritorii, metode, utilizatori,​ indicându-se și numărul de erori înregistrate precum și referințele prin intermediul altor legături Internet).\\ \\ {{ :​laboratoare:​laborator10:​configurare03.png?​nolink }}\\ {{ :​laboratoare:​laborator10:​configurare04.png?nolink&​600 ​}}+{{ :​laboratoare:​laborator10:​createproject01.png?nolink }}
  
-  ​* În secțiunea //APIs & auth// → //Credentials//, se generează o cheie publică care va fi utilizată ​la procesul ​de autentificare, ​în vederea accesării funcționalității puse la dispoziție de serviciul de localizare. +Pentru fiecare proiect trebuie să se precizeze următorii parametri:​ 
-    ​* Folosind ​utilitarul Java ''​keytool'',​ se generează semnătura digitală a mașinii de pe care se va dezvolta aplicația Android. Pentru ​a putea utiliza acest utilitar, calea căte Java trebuie să se găsească în variabila de mediu ''​$PATH'',​ respectiv ''​%PATH''​. +  * denumirea (se generează în mod automat un identificator pentru proiect); 
-      * Linux <​code>​ +  * locația în care este găzduit motorul de aplicații;​ 
-student@pdsd2015:~$ export PATH=$PATH:/​usr/​local/​java/​jdk1.8.0_31/bin +  * acordul pentru transmiterea de mesaje electronice cu privire la actualizări despre funcționalități,​ sugestii de performanță,​ sondaje în vederea precizării de opinii despre serviciile oferite, oferte speciale; 
-student@pdsd2015:~$ keytool -list -v -keystore ~/​.android/​debug.keystore -alias androiddebugkey -storepass android -keypass android +  * acordul pentru folosirea serviciilor și a API-urilor asociate în acord cu termenii și condițiile specifice. 
-</​code>​ + 
-      * Windows <​code>​ +{{ :​laboratoare:​laborator10:​createproject02.png?​nolink }} 
-C:​\Users\Student>​ set PATH=%PATH%;​C:​\Program Files\Java\jdk_1.8.0_31\bin+ 
 +În cazul în care există un singur proiect, acesta este selectat în mod implicit. 
 + 
 +{{ :​laboratoare:​laborator10:​createproject03.png?​nolink }} 
 +</​note>​ 
 + 
 +  ​* În secțiunea //API Manager// → //Overview//, în categoria //Google Maps APIs//, se accesează opțiunea //Google Maps Android API//, activându-se acest serviciu. 
 + 
 +{{ :​laboratoare:​laborator10:​configurare01.png?​nolink&​600 }} 
 + 
 +{{ :​laboratoare:​laborator10:​configurare02.png?​nolink }} 
 + 
 +Acest API nu va putea fi însă ​utilizat ​în situația în care nu sunt create credențialele (o cheie pentru API), necesare pentru a putea accesa orice serviciu Google. 
 + 
 +{{ :​laboratoare:​laborator10:​configurare09.png?​nolink }} 
 + 
 +  * Credențialele pot fi obținute:​ 
 +    *  prin accesarea butonului //Go to Credentials//,​ care implică următoarele etape:\\ **1.** indicarea tipului ​de API folosit (în cazul de față //Google Maps Android API//) și a locației din care va fi accesat API-ul (în cazul de față //​Android//​),​ pentru a se identifica tipul de cheie care va fi generată\\ {{ :​laboratoare:​laborator10:​configurare04.png?nolink }}\\ **2.** specificarea unei denumiri asociate cheii pentru API;\\ {{ :​laboratoare:​laborator10:​configurare05.png?​nolink }}\\ se va indica și comanda care va trebui rulată pentru generarea cheii respective; folosind ​utilitarul Java ''​keytool'',​ se generează semnătura digitală a mașinii de pe care se va dezvolta aplicația Android ​(pentru ​a putea utiliza acest utilitar, calea căte Java trebuie să se găsească în variabila de mediu ''​$PATH'',​ respectiv ''​%PATH''​).\\ Linux <​code>​ 
 +student@eim2016:~$ export PATH=$PATH:/​usr/​local/​java/​jdk1.8.0_92/bin 
 +student@eim2016:~$ keytool -list -v -keystore ~/​.android/​debug.keystore -alias androiddebugkey -storepass android -keypass android 
 +</​code>​\\ Windows <​code>​ 
 +C:​\Users\Student>​ set PATH=%PATH%;​C:​\Program Files\Java\jdk_1.8.0_92\bin
 C:​\Users\Student>​ keytool -list -v -keystore "​%USERPROFILE%\.android\debug.keystore"​ -alias androiddebugkey -storepass android -keypass android C:​\Users\Student>​ keytool -list -v -keystore "​%USERPROFILE%\.android\debug.keystore"​ -alias androiddebugkey -storepass android -keypass android
-</​code>​ +</​code>​\\ Vor fi furnizate mai multe tipuri de amprente digitale, pentru cheia publică de tip Android fiind necesară cea de tip SHA-1 <​code>​
-    * Vor fi furnizate mai multe tipuri de amprente digitale, pentru cheia publică de tip Android fiind necesară cea de tip SHA-1 <​code>​+
 Alias name: androiddebugkey Alias name: androiddebugkey
-Creation date: 25.02.2012+Creation date: Mar 5, 2015
 Entry type: PrivateKeyEntry Entry type: PrivateKeyEntry
 Certificate chain length: 1 Certificate chain length: 1
Line 41: Line 62:
 Owner: CN=Android Debug, O=Android, C=US Owner: CN=Android Debug, O=Android, C=US
 Issuer: CN=Android Debug, O=Android, C=US Issuer: CN=Android Debug, O=Android, C=US
-Serial number: ​3995d730 +Serial number: ​4a38a96a 
-Valid from: Sat Feb 25 00:31:37 EET 2012 until: ​Mon Feb 17 00:31:37 EET 2042+Valid from: Thu Mar 05 13:17:44 EET 2015 until: ​Sat Feb 25 13:17:44 EET 2045
 Certificate fingerprints:​ Certificate fingerprints:​
-         ​MD5:  ​88:5B:9A:C8:7A:1A:C9:BD:3D:90:2E:CF:93:CF:C3:51 +         ​MD5:  ​FC:1F:95:45:78:ED:50:C6:EE:8E:02:0A:3D:A5:80:D3 
-         ​SHA1: ​ED:A8:BA:A9:70:5E:0A:B2:8E:3C:73:AF:4C:69:35:E8:AA:C9:79:5E +         ​SHA1: ​C7:02:98:BB:AD:1C:6E:D1:3A:35:50:8B:88:78:B6:D3:B7:9F:66:C0 
-         ​SHA256: ​5E:CF:7A:86:FC:D9:39:93:EE:92:D6:06:EA:32:E7:06:7A:9C:48:38:D7: +         ​SHA256: ​B3:D9:98:33:92:71:2D:CE:65:19:89:73:2A:64:3C:97:B9:37:A1:93:8C: 
-85:D6:56:EF:C2:F6:9F:3A:84:CF:4D+50:4F:E1:13:C4:21:C7:08:94:AC:A5
          ​Signature algorithm name: SHA256withRSA          ​Signature algorithm name: SHA256withRSA
          ​Version:​ 3          ​Version:​ 3
Line 56: Line 77:
 SubjectKeyIdentifier [ SubjectKeyIdentifier [
 KeyIdentifier [ KeyIdentifier [
-0000: 71 51 CC 58 87 D2 D3 91   ​D0 D2 89 67 F2 C7 E1 B7  qQ.X.......g.... +0000: 99 78 63 24 A0 64 DF A8   67 45 8E 82 C6 8E 53 D1  .xc$.d..gE....S. 
-0010: 2A AF DB DF                                        *...+0010: B8 C1 89 75                                        ...u
 ] ]
 ] ]
-</​code>​ +</​code>​\\ se accesează butonul //Add package name and fingerprint// pentru a se specifica denumirea pachetului corespunzător aplicației Android care va accesa ​API-ul respectiv și certificatul SHA-1\\ {{ :​laboratoare:​laborator10:​configurare06.png?nolink }}\\ **3.** se vizualizează cheia pentru API generată care poate fi utilizată pentru accesarea serviciilor Google\\ {{ :laboratoare:​laborator10:​configurare07.png?​nolink }}\\ În secțiunea ​//Credentials// pot fi vizualizate cheile pentru API generate anterior\\ {{ :​laboratoare:​laborator10:​configurare08.png?nolink }} 
-    * Se selectează butonul //Create New Key// din secțiunea //​Public ​API access//​.\\ ​\\ {{ :​laboratoare:​laborator10:​configurare05.png?nolink }} +    * în secțiunea //​Credentials//​, prin accesarea opțiunii //Create credentials//​ din care este selectat tipul de cheie necesar (în cazul de față //API key//); dacă nu se cunoaște tipul de cheie necesar, se poate selecta valoarea //Help me choose//\\ {{ :​laboratoare:​laborator10:​configurare10.png?nolink }}\\ se indică tipul de cheie necesar, în funcție de locația pe care se găsește aplicația din care va fi accesat API-ul (în cazul de față //Android key//)\\ {{ :​laboratoare:​laborator10:​configurare11.png?nolink }}
-    ​* Se specifică proprietățile cheii publice ce se dorește a fi generată: +
-      * tipul cheii publice - //Android Key//\\ \\ {{ :​laboratoare:​laborator10:​configurare06.png?nolink }} +
-      * parametrii de conectare - semnătura digitală și pachetul corespunzător aplicației Android (separate prin caracterul '';''​), astfel încât să fie acceptate solicitări numai pe baza acestor valori, în caz contrar permițându-se accesul indiferent ​de certificatul ​deținut sau de aplicația Android de pe care provine\\ ​\\ {{ :​laboratoare:​laborator10:​configurare07.png?nolink&​600 ​}} +
-    * Se identifică valoarea cheii publice ​care va putea fi utilizată.\\ \\ {{ :​laboratoare:​laborator10:​configurare08.png?nolink&​800 ​}}+
  
 **2.** Pe dispozitivul mobil (fizic sau virtual) pe care se va rula aplicația care accesează serviciul de localizare, trebuie să se găsească cea mai recentă versiune de //Google Play Services//, asociindu-se totodată contul de utilizator Google pentru care s-a generat cheia publică. **2.** Pe dispozitivul mobil (fizic sau virtual) pe care se va rula aplicația care accesează serviciul de localizare, trebuie să se găsească cea mai recentă versiune de //Google Play Services//, asociindu-se totodată contul de utilizator Google pentru care s-a generat cheia publică.
Line 72: Line 89:
  
   * Linux <​code>​   * Linux <​code>​
-student@pdsd2015:~$ cd /​opt/​android-sdk-linux/​tools +student@eim2016:~$ cd /​opt/​android-sdk-linux/​tools 
-student@pdsd2015:/​opt/​android-sdk-linux/​tools$ sudo ./android+student@eim2016:/​opt/​android-sdk-linux/​tools$ sudo ./android
 </​code>​ </​code>​
   * Windows - se deschide un terminal cu drepturi de administrator <​code>​   * Windows - se deschide un terminal cu drepturi de administrator <​code>​
Line 80: Line 97:
 </​code>​ </​code>​
  
-{{ :​laboratoare:​laborator10:​configurare09.png?​nolink&​600 }}+{{ :​laboratoare:​laborator10:​configurare12.png?​nolink&​600 }}
  
 Astfel, se instalează următoarele pachete: Astfel, se instalează următoarele pachete:
Line 88: Line 105:
 Biblioteca pentru accesarea funcționalității oferite de serviciul de localizare se găsește la ''<​android-sdk>/​extras/​google/​google_play_services/​libproject/​google-play-services_lib''​. Biblioteca pentru accesarea funcționalității oferite de serviciul de localizare se găsește la ''<​android-sdk>/​extras/​google/​google_play_services/​libproject/​google-play-services_lib''​.
  
-În mediul integrat de dezvoltare Eclipse ​Luna SR1a (4.4.1), se realizează o referință către biblioteca //Google Play Services//, astfel descărcată. +În mediul integrat de dezvoltare Eclipse, se realizează o referință către biblioteca //Google Play Services//, astfel descărcată. 
-  * se accesează //File// → //Import// → //Android// → //Existing Android Code Into Workspace//​\\ \\ {{ :​laboratoare:​laborator10:​configurare10.png?​nolink&​500 }} +  * se accesează //File// → //Import// → //Android// → //Existing Android Code Into Workspace//​\\ \\ {{ :​laboratoare:​laborator13:​configurare10.png?​nolink&​500 }} 
-  * se indică locația unde se găsește instalată biblioteca //Google Play Services//, creându-se o copie a acestuia în spațiul de lucru (se bifează opțiunea //Copy projects into workspace//​)\\ \\ {{ :​laboratoare:​laborator10:​configurare11.png?​nolink&​800 }}+  * se indică locația unde se găsește instalată biblioteca //Google Play Services//, creându-se o copie a acestuia în spațiul de lucru (se bifează opțiunea //Copy projects into workspace//​)\\ \\ {{ :​laboratoare:​laborator10:​configurare14.png?​nolink&​800 }}
  
-**4.** În mediul integrat de dezvoltare ​Eclipse Luna SR1a (4.4.1), se creează un proiect corespunzător unei aplicații Android, având următoarele proprietăți:​+**4.** În mediul integrat de dezvoltare ​preferat ​(Android Studio sau Eclipse), se creează un proiect corespunzător unei aplicații Android, având următoarele proprietăți:​
  
   * denumirea pachetului care identifică aplicația Android în mod unic trebuie să fie aceeași cu cea precizată în momentul în care a fost generată cheia publică;   * denumirea pachetului care identifică aplicația Android în mod unic trebuie să fie aceeași cu cea precizată în momentul în care a fost generată cheia publică;
  
-  * trebuie să existe o referință către biblioteca //Google Play Services// (click dreapta pe denumirea proiectului în //Package Explorer// → //​Properties//​),​ se accesează opțiunea //Android// și se specifică referința către aceasta respectivă în secțiunea //Library// (accesând butonul //Add//)\\ \\ {{ :​laboratoare:​laborator10:​configurare12.png?​nolink&​800 }}+  * pentru **Android Studio**, trebuie ca în fișierul ''​build.gradle''​ să se specifice dependința către biblioteca Google Play Services (''​com.google.android.gms:​play-services''​),​ în secțiunea ''​dependencies'':​ <file build.gradle>​ 
 +... 
 +dependencies { 
 +  ... 
 +  compile '​com.google.android.gms:​play-services:​8.4.0'​ 
 +} 
 +</​file>​ 
 + 
 +  * pentru **Eclipse**, ​trebuie să existe o referință către biblioteca //Google Play Services// (click dreapta pe denumirea proiectului în //Package Explorer// → //​Properties//​),​ se accesează opțiunea //Android// și se specifică referința către aceasta respectivă în secțiunea //Library// (accesând butonul //Add//)\\ \\ {{ :​laboratoare:​laborator15:​configurare12.png?​nolink&​800 }}
  
   * în fișierul ''​AndroidManifest.xml''​   * în fișierul ''​AndroidManifest.xml''​
Line 128: Line 153:
 <​metadata <​metadata
   android:​name="​com.google.android.maps.v2.API_KEY"​   android:​name="​com.google.android.maps.v2.API_KEY"​
-  android:​value="​AIzaSyA650lJNGrJFLQ1Ns5L0FHY90XnHhO-P5s" />+  android:​value="​AIzaSyACwBefUuAjtvG3Xi8kOD97Nrrzb2b1FrM" />
 </​code>​ </​code>​
       * versiunea folosită pentru biblioteca Google Play Services (preluată din cadrul proiectului referit) <code xml>       * versiunea folosită pentru biblioteca Google Play Services (preluată din cadrul proiectului referit) <code xml>
Line 137: Line 162:
     * pentru a se asigura faptul că funcționalitatea nu va putea fi accesată decât prin intermediul aplicației Android, se va defini o permisiune, definindu-se o protecție la nivel de semnătură:<​code xml>     * pentru a se asigura faptul că funcționalitatea nu va putea fi accesată decât prin intermediul aplicației Android, se va defini o permisiune, definindu-se o protecție la nivel de semnătură:<​code xml>
 <​permission <​permission
-  android:​name="​ro.pub.cs.systems.pdsd.lab10.googlemaps.permission.MAPS_RECEIVE"​+  android:​name="​ro.pub.cs.systems.eim.lab10.googlemaps.permission.MAPS_RECEIVE"​
   android:​protectionLevel="​signature"​ />   android:​protectionLevel="​signature"​ />
 <​uses-permission <​uses-permission
-  android:​name="​ro.pub.cs.systems.pdsd.lab10.googlemaps.permission.MAPS_RECEIVE"​ />+  android:​name="​ro.pub.cs.systems.eim.lab10.googlemaps.permission.MAPS_RECEIVE"​ />
 </​code>​ </​code>​
  
Line 174: Line 199:
 ==== Dispozitiv Fizic ==== ==== Dispozitiv Fizic ====
  
-Pentru accesarea funcționalităților legate de locație pe dispozitivul fizic este necesar să se activeze opțiunea //​Location// ​(care trebuie să aibă valoarea //​On//​) ​din secțiunea de configurări (//​Settings//​ → //​Personal//​).+Pentru accesarea funcționalităților legate de locație pe dispozitivul fizic este necesar să se activeze opțiunea //​Location//​ din secțiunea de configurări (//​Settings//​ → //​Personal//​).
  
 {{ :​laboratoare:​laborator10:​physical_device_01.png?​nolink&​400 }} {{ :​laboratoare:​laborator10:​physical_device_01.png?​nolink&​400 }}
 +
 +Valoarea configurației //​Location//​ trebuie să aibă valoarea //On//, pentru ca serviciile de localizare să poată fi utilizate. De asemenea, sunt indicate aplicațiile Android care au folosit serviciile de localizare.
 +
 +{{ :​laboratoare:​laborator10:​physical_device_02.png?​nolink&​400 }}
  
 Se poate controla acuratețea informațiilor furnizate, raportat la consumul de energie, prin intermediul opțiunilor disponibile în secțiunea //Location Mode// din secțiunea de configurări (//​Settings//​ → //​Personal//​ → //​Location//​ → //Mode//). Se poate controla acuratețea informațiilor furnizate, raportat la consumul de energie, prin intermediul opțiunilor disponibile în secțiunea //Location Mode// din secțiunea de configurări (//​Settings//​ → //​Personal//​ → //​Location//​ → //Mode//).
Line 183: Line 212:
   * //Device only// - locația este determinată folosind doar informațiile furnizate de sistemul global de poziționare GPS.   * //Device only// - locația este determinată folosind doar informațiile furnizate de sistemul global de poziționare GPS.
    
-{{ :​laboratoare:​laborator10:​physical_device_02.png?​nolink&​400 }}+{{ :​laboratoare:​laborator10:​physical_device_03.png?​nolink&​400 }}
  
 <note tip>Se recomandă ca determinarea locației să se realizeze folosind toate resursele disponibile la un moment dat de timp pentru o precizie cât mai mare (cu un consum de energie corespunzător).</​note>​ <note tip>Se recomandă ca determinarea locației să se realizeze folosind toate resursele disponibile la un moment dat de timp pentru o precizie cât mai mare (cu un consum de energie corespunzător).</​note>​
Line 205: Line 234:
 De asemenea, este implementată și funcționalitatea prin intermediul căreia poate fi vizualizată poziția precizată în cadrul unei hărți Google. De asemenea, este implementată și funcționalitatea prin intermediul căreia poate fi vizualizată poziția precizată în cadrul unei hărți Google.
  
-{{ :​laboratoare:​laborator10:​genymotion_mapping_service.png?​nolink&​600 }} +{{ :​laboratoare:​laborator10:​genymotion_gps_03.png?​nolink&​800 }}
- +
-Alte configurații legate de serviciul de localizate sunt disponibile în secțiunea //​Settings//​ → //Location Services//, unde este recomandat să se selecteze toate opțiunile existente:​ +
-  * //​Google'​s location service// - permite transmisia de informații anonime către Google și utilizarea rețelelor mobile și fără fir pentru determinarea locației aproximative,​ atunci când nu sunt disponibile alte resurse; +
-  * //GPS satellites//​ - oferă accesul la sistemul de poziționare globală GPS pentru determinarea locației;​ +
-  * //Location & Google Search// - determină utilizarea de către Google a locației curente pe baza căreia să își contextualizeze serviciile. +
-  +
-{{ :​laboratoare:​laborator10:​genymotion_location_services.png?​nolink&​400 }} +
- +
-<​note>​În cazul în care nu sunt selectate toate aceste opțiuni, este posibil ca serviciul Geocoder să nu fie disponibil. Dacă o astfel de situație persistă chiar și în condițiile în care configurațiile sunt corespunzătoare,​ dispozitivul virtual trebuie repornit, întrucât eroarea este determinată de o problemă cu serviciul Google Play Services, a cărui stare nu a fost actualizată.</​note>​ +
- +
 === AVD === === AVD ===
  
Line 226: Line 244:
 {{ :​laboratoare:​laborator10:​avd_configuration.png?​nolink&​600 }} {{ :​laboratoare:​laborator10:​avd_configuration.png?​nolink&​600 }}
  
-Controlul poziției curente poate fi realizat prin intermediul perspectivei //DDMS// din Eclipse ​Luna SR1a (4.4.1) ​(//Window// → //Open Perspective//​ → //DDMS//), unde, în secțiunea //Emulator Control// → //Location Control// se stabilesc valorile pentru latitudine și longitudine (în panoul //Manual//, în format decimal sau sexagesimal),​ după care se apasă butonul //Send//. Informații cu privire la locațiile disponibile pot fi precizate și sub forma unor fișiere gpx sau kml, care pot fi încărcate.+Controlul poziției curente poate fi realizat prin intermediul perspectivei ​//Android Debug Monitor// din Android Studio sau //DDMS// din Eclipse (//Window// → //Open Perspective//​ → //DDMS//), unde, în secțiunea //Emulator Control// → //Location Control// se stabilesc valorile pentru latitudine și longitudine (în panoul //Manual//, în format decimal sau sexagesimal),​ după care se apasă butonul //Send//. Informații cu privire la locațiile disponibile pot fi precizate și sub forma unor fișiere gpx sau kml, care pot fi încărcate.
  
 {{ :​laboratoare:​laborator10:​avd_emulator_control.png?​nolink&​600 }} {{ :​laboratoare:​laborator10:​avd_emulator_control.png?​nolink&​600 }}
 +
 ===== Gestiunea unei Hărți Google ===== ===== Gestiunea unei Hărți Google =====
  
Line 373: Line 392:
 API-ul Android pune la dispoziția utilizatorilor un [[http://​developer.android.com/​reference/​com/​google/​android/​gms/​location/​FusedLocationProviderApi.html|furnizor integrat de servicii de localizare]],​ prin care aceștia pot specifica anumiți parametrii de configurare,​ cum ar fi nivelul de precizie și gradul de utilizare al bateriei. API-ul Android pune la dispoziția utilizatorilor un [[http://​developer.android.com/​reference/​com/​google/​android/​gms/​location/​FusedLocationProviderApi.html|furnizor integrat de servicii de localizare]],​ prin care aceștia pot specifica anumiți parametrii de configurare,​ cum ar fi nivelul de precizie și gradul de utilizare al bateriei.
  
-Funcționalitatea legată de gestiunea locației curente (ca de altfel toate funcționalitățile legate de biblioteca Google Play Services) este disponibilă prin intermediul unui obiect de tip [[http://​developer.android.com/​reference/​com/​google/​android/​gms/​common/​api/​GoogleApiClient.html|GoogleApiClient]],​ a cărui instanță este obținută de regulă pe metoda ''​onCreate()''​ a aplicației Android, eliberarea resurselor corespunzătoare acesteia fiind făcută pe metoda ''​onDestroy()'' ​+Funcționalitatea legată de gestiunea locației curente (ca de altfel toate funcționalitățile legate de biblioteca Google Play Services) este disponibilă prin intermediul unui obiect de tip [[http://​developer.android.com/​reference/​com/​google/​android/​gms/​common/​api/​GoogleApiClient.html|GoogleApiClient]],​ a cărui instanță este obținută de regulă pe metoda ''​onCreate()''​ a aplicației Android, eliberarea resurselor corespunzătoare acesteia fiind făcută pe metoda ''​onDestroy()''​. 
 + 
 +{{ :​laboratoare:​laborator10:​clientul_google_api.png?​nolink&​600 }}
  
 <code java> <code java>
Line 1008: Line 1029:
 ===== Activitate de Laborator ===== ===== Activitate de Laborator =====
  
-**1.** Să se acceseze [[https://code.google.com/​apis/​console/​|Google Developer'​s Console]], după ce a fost realizată autentificarea cu datele contului Google (nume de utilizator, parolă):+**1.** Să se acceseze [[https://console.developers.google.com|Google Developer'​s Console]], după ce a fost realizată autentificarea cu datele contului Google (nume de utilizator, parolă):
   * se obține un număr de proiect (dacă această operație nu a fost realizată anterior);   * se obține un număr de proiect (dacă această operație nu a fost realizată anterior);
   * se activează serviciul //Google Maps Android API//;   * se activează serviciul //Google Maps Android API//;
Line 1020: Line 1041:
 **2.** În contul Github personal, să se creeze un depozit denumit '​Laborator10'​. Inițial, acesta trebuie să fie gol (nu trebuie să bifați nici adăugarea unui fișier ''​README.md'',​ nici a fișierului ''​.gitignore''​ sau a a fișierului ''​LICENSE''​). **2.** În contul Github personal, să se creeze un depozit denumit '​Laborator10'​. Inițial, acesta trebuie să fie gol (nu trebuie să bifați nici adăugarea unui fișier ''​README.md'',​ nici a fișierului ''​.gitignore''​ sau a a fișierului ''​LICENSE''​).
  
-**3.** Să se cloneze în directorul de pe discul local conținutul depozitului la distanță de la [[https://​www.github.com/​pdsd2015/​Laborator10|]]. ​+**3.** Să se cloneze în directorul de pe discul local conținutul depozitului la distanță de la [[https://​www.github.com/​eim2016/​Laborator10|]]. ​
  
 În urma acestei operații, directorul Laborator10 va trebui să se conțină directoarele ''​labtasks''​ și ''​solutions''​. ​ În urma acestei operații, directorul Laborator10 va trebui să se conțină directoarele ''​labtasks''​ și ''​solutions''​. ​
  
 <​code>​ <​code>​
-student@pdsd2015:~$ git clone https://​www.github.com/​pdsd2015/​Laborator10+student@eim2016:~$ git clone https://​www.github.com/​eim2016/​Laborator10
 </​code>​ </​code>​
  
 **4.** Să se încarce conținutul descărcat în cadrul depozitului '​Laborator10'​ de pe contul Github personal. <​code>​ **4.** Să se încarce conținutul descărcat în cadrul depozitului '​Laborator10'​ de pe contul Github personal. <​code>​
-student@pdsd2015:~$ cd Laborator10 +student@eim2016:~$ cd Laborator10 
-student@pdsd2015:​~/​Laborator10$ git remote add Laborator10_perfectstudent https://​github.com/​perfectstudent/​Laborator10 +student@eim2016:​~/​Laborator10$ git remote add Laborator10_perfectstudent https://​github.com/​perfectstudent/​Laborator10 
-student@pdsd2015:​~/​Laborator10$ git push Laborator10_perfectstudent master+student@eim2016:​~/​Laborator10$ git push Laborator10_perfectstudent master
 </​code>​ </​code>​
  
Line 1038: Line 1059:
   * în cazul în care se utilizează un dispozitiv fizic, acesta trebuie să ruleze un sistem de operare Android cu o versiune ulterioară 2.2, având asociat un cont Google.   * în cazul în care se utilizează un dispozitiv fizic, acesta trebuie să ruleze un sistem de operare Android cu o versiune ulterioară 2.2, având asociat un cont Google.
  
-<​note>​În situația în care nu se reușește configurarea unui dispozitiv virtual, se poate folosi [[http://pdsd2015.andreirosucojocaru.ro/​resources/​Genymobile.tar.gz|o imagine Nexus S (API 16)]] care trebuie plasată în directorul ''​$HOME''​.</​note>​+<​note>​În situația în care nu se reușește configurarea unui dispozitiv virtual, se poate folosi [[http://eim2016.andreirosucojocaru.ro/​resources/​Genymobile.tar.gz|o imagine Nexus S (API 16)]] care trebuie plasată în directorul ''​$HOME''​.</​note>​
  
-**6.** Să se importe în mediul integrat de dezvoltare ​Eclipse Luna SR1a (4.4.1) proiectele ''​google-play-service_lib''​ și ''​01-GoogleMapsPlaces''​ din directorul ''​labtasks'' ​(în această ordine).+**6.** Să se importe în mediul integrat de dezvoltare ​preferat ​(Android Studio sau Eclipse) proiectele ''​GoogleMapsPlaces''​ și ''​google-play-service_lib'' ​(doar pentru Eclipse) ​din directorul ''​labtasks''​.
  
 Se dorește să se implementeze o aplicație care să navigheze către o locație specificată prin intermediul coordonatelor GPS (latitudine / longitudine) și pentru care se dorește plasarea unui reper pe hartă, însoțit de o denumire. Se dorește să se implementeze o aplicație care să navigheze către o locație specificată prin intermediul coordonatelor GPS (latitudine / longitudine) și pentru care se dorește plasarea unui reper pe hartă, însoțit de o denumire.
Line 1070: Line 1091:
   - se șterg toate reperele din lista de locații (''​places''​),​ notificându-se și adaptorul corespunzător obiectului de tip ''​Spinner''​ (''​placesAdapter''​) de această modificare, astfel încât acesta să fie actualizat corespunzător.   - se șterg toate reperele din lista de locații (''​places''​),​ notificându-se și adaptorul corespunzător obiectului de tip ''​Spinner''​ (''​placesAdapter''​) de această modificare, astfel încât acesta să fie actualizat corespunzător.
  
-**7.** Să se importe în mediul integrat de dezvoltare ​Eclipse Luna SR1a (4.4.1) proiectele ''​google-play-service_lib''​ și ''​02-GoogleMapsLocationUpdate''​ din directorul ''​labtasks'' ​(în această ordine).+**7.** Să se importe în mediul integrat de dezvoltare ​preferat ​(Android Studio sau Eclipse) proiectele ''​GoogleMapsLocationUpdate''​ și ''​google-play-service_lib'' ​(doar pentru Eclipse) ​din directorul ''​labtasks''​.
  
 Se dorește să se implementeze o aplicație pentru care să se implementeze posibilitatea de actualizare periodică a poziției curente pe hartă, în funcție de starea unui buton, prin care se controlează pornirea / oprirea acestui serviciu. Se dorește să se implementeze o aplicație pentru care să se implementeze posibilitatea de actualizare periodică a poziției curente pe hartă, în funcție de starea unui buton, prin care se controlează pornirea / oprirea acestui serviciu.
Line 1110: Line 1131:
   - se activează controalele grafice ''​latitudeEditText'',​ ''​longitudeEditText'',​ ''​navigateToLocationButton'',​ acestea având un conținut vid.   - se activează controalele grafice ''​latitudeEditText'',​ ''​longitudeEditText'',​ ''​navigateToLocationButton'',​ acestea având un conținut vid.
  
-**8.** Să se importe în mediul integrat de dezvoltare ​Eclipse Luna SR1a (4.4.1) proiectele ''​google-play-service_lib''​ și ''​03-GoogleMapsGeocoding''​ din directorul ''​labtasks'' ​(în această ordine).+**8.** Să se importe în mediul integrat de dezvoltare ​preferat ​(Android Studio sau Eclipse) proiectele ''​GoogleMapsGeocoding''​ și  ''​google-play-service_lib'' ​(doar pentru Eclipse) ​din directorul ''​labtasks''​.
  
 Se dorește să se implementeze o aplicație care să realizeze procesul de codificare geografică inversă: dându-se un set de coordonate GPS, se dorește să se determine adresa poștală corespunzătoare. Se dorește să se implementeze o aplicație care să realizeze procesul de codificare geografică inversă: dându-se un set de coordonate GPS, se dorește să se determine adresa poștală corespunzătoare.
Line 1130: Line 1151:
   - se transmite rezultatul către activitatea principală (se apelează metoda ''​handleResult()''​ cu codul numeric de rezultat (''​Constants.RESULT_SUCCESS'',​ ''​Constants.RESULT_FAILURE''​) și rezultatul obținut, respectiv mesajul de eroare, după caz.   - se transmite rezultatul către activitatea principală (se apelează metoda ''​handleResult()''​ cu codul numeric de rezultat (''​Constants.RESULT_SUCCESS'',​ ''​Constants.RESULT_FAILURE''​) și rezultatul obținut, respectiv mesajul de eroare, după caz.
  
-**9.** Să se importe în mediul integrat de dezvoltare ​Eclipse Luna SR1a (4.4.1) proiectele ''​google-play-service_lib''​ și ''​04-GoogleMapsGeofencing''​ din directorul ''​labtasks'' ​(în această ordine).+**9.** Să se importe în mediul integrat de dezvoltare ​preferat ​(Android Studio sau Eclipse) proiectele ''​GoogleMapsGeofencing''​ și  ''​google-play-service_lib'' ​(doar pentru Eclipse) ​din directorul ''​labtasks''​.
  
 Se dorește să se implementeze o aplicație care să monitorizeze activitatea unui dispozitiv mobil raportat la o zonă de restricție geografică. ​ Se dorește să se implementeze o aplicație care să monitorizeze activitatea unui dispozitiv mobil raportat la o zonă de restricție geografică. ​
Line 1142: Line 1163:
 Notificările vor fi generate: Notificările vor fi generate:
  
- - când utilizatorul intră în zona de restricție geografică\\ {{ :​laboratoare:​laborator10:​google_maps_geofencing_02_03.png?​nolink&​600 }} +  ​- când utilizatorul intră în zona de restricție geografică\\ \\ {{:​laboratoare:​laborator10:​google_maps_geofencing_02.png?​nolink&​300}} {{:​laboratoare:​laborator10:​google_maps_geofencing_03.png?​nolink&​300}} 
- - când utilizatorul iese din zona de restricție geografică\\ {{ :​laboratoare:​laborator10:​google_maps_geofencing_04_05.png?​nolink&​600 }}+  - când utilizatorul iese din zona de restricție geografică\\ ​\\ {{:​laboratoare:​laborator10:​google_maps_geofencing_04.png?​nolink&​300}} ​{{:​laboratoare:​laborator10:​google_maps_geofencing_05.png?​nolink&​300}}
  
 Detaliile cu privire la evenimentul produs vor putea fi vizualizate în cadrul unei activități dedicate. Detaliile cu privire la evenimentul produs vor putea fi vizualizate în cadrul unei activități dedicate.
Line 1168: Line 1189:
  
 **10.** Să se încarce modificările realizate în cadrul depozitului '​Laborator10'​ de pe contul Github personal, folosind un mesaj sugestiv. <​code>​ **10.** Să se încarce modificările realizate în cadrul depozitului '​Laborator10'​ de pe contul Github personal, folosind un mesaj sugestiv. <​code>​
-student@pdsd2015:​~/​Laborator10$ git add * +student@eim2016:​~/​Laborator10$ git add * 
-student@pdsd2015:​~/​Laborator10$ git commit -m "​implemented taks for laboratory 10" +student@eim2016:​~/​Laborator10$ git commit -m "​implemented taks for laboratory 10" 
-student@pdsd2015:​~/​Laborator10$ git push Laborator10_perfectstudent master+student@eim2016:​~/​Laborator10$ git push Laborator10_perfectstudent master
 </​code>​ </​code>​
  
Line 1185: Line 1206:
 [[http://​developer.android.com/​reference/​com/​google/​android/​gms/​location/​package-summary.html|Package com.google.android.gms.location]]\\ ​ [[http://​developer.android.com/​reference/​com/​google/​android/​gms/​location/​package-summary.html|Package com.google.android.gms.location]]\\ ​
 [[http://​www.androidhive.info/​2013/​08/​android-working-with-google-maps-v2/​|Android Working with Google Maps v2]]\\ ​ [[http://​www.androidhive.info/​2013/​08/​android-working-with-google-maps-v2/​|Android Working with Google Maps v2]]\\ ​
-[[http://​javapapers.com/​android/​android-get-address-with-street-name-city-for-location-with-geocoding/​|Android Get Address with Street Name, City for Location with Geocoding]]+[[http://​javapapers.com/​android/​android-get-address-with-street-name-city-for-location-with-geocoding/​|Android Get Address with Street Name, City for Location with Geocoding]]\\  
 +[[https://​developers.google.com/​android/​guides/​setup#​add_google_play_services_to_your_project|Setting up Google Play Services in Android Studio]]
laboratoare/laborator10.1431383051.txt.gz · Last modified: 2017/02/20 20:44 (external edit)
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0