Differences
This shows you the differences between two versions of the page.
| 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]] | ||
