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 [2016/05/13 01:21]
Andrei Roșu-Cojocaru
laboratoare:laborator10 [2017/02/20 20:55] (current)
Line 97: 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 105: 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 145: 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 191: 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 200: 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 222: 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 243: 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 1027: 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 1059: Line 1061:
 <​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>​ <​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 1089: 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 1129: 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 1149: 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 1161: 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 1204: 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.1463091705.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