Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
laboratoare:laborator10 [2015/05/12 00:07] Andrei Roșu-Cojocaru [Genymotion] |
laboratoare:laborator10 [2015/05/12 01:44] (current) Andrei Roșu-Cojocaru |
||
|---|---|---|---|
| Line 24: | Line 24: | ||
| * Î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. | * Î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. | ||
| - | * Folosind utilitarul Java ''keytool'', se generează amprenta 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''. | + | * 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> | * Linux <code> | ||
| student@pdsd2015:~$ export PATH=$PATH:/usr/local/java/jdk1.8.0_31/bin | student@pdsd2015:~$ export PATH=$PATH:/usr/local/java/jdk1.8.0_31/bin | ||
| Line 64: | Line 64: | ||
| * Se specifică proprietățile cheii publice ce se dorește a fi generată: | * Se specifică proprietățile cheii publice ce se dorește a fi generată: | ||
| * tipul cheii publice - //Android Key//\\ \\ {{ :laboratoare:laborator10:configurare06.png?nolink }} | * tipul cheii publice - //Android Key//\\ \\ {{ :laboratoare:laborator10:configurare06.png?nolink }} | ||
| - | * parametrii de conectare - amprenta 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 }} | + | * 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 }} | * Se identifică valoarea cheii publice care va putea fi utilizată.\\ \\ {{ :laboratoare:laborator10:configurare08.png?nolink&800 }} | ||
| Line 219: | Line 219: | ||
| === AVD === | === AVD === | ||
| - | Pentru accesarea funcționalităților legate de locație pe dispozitivul virtual AVD este necesar să se acceseze perspectiva //DDMS// din Eclipse Luna SR1a (4.4.1) - //Window// → //Open Perspective// → //DDMS// - și în secțiunea //Emulator Control// → //Location Control//, se stabilesc valorile pentru latitudine și longitudine, după care se apasă butonul //Send//. | + | Pentru accesarea funcționalităților legate de locație pe dispozitivul virtual AVD este necesar ca în secțiunea de configurări corespunzătoare (//Settings// → //Location access//) să se specifice următorii parametri: |
| + | * //Access to my location//: //On// - permite aplicațiilor Android să acceseze locația curentă, pe baza informațiilor furnizate din sursele disponibile; | ||
| + | * //GPS Sattelites//: activat - se utilizează sistemul de poziționare globală GPS pentru determinarea locației curente; | ||
| + | * //Wi-Fi & mobile network location//: activat - se utilizează o estimare pentru locația curentă pe baza serviciilor oferite de Google; totodată, vor fi transmise informații anonime în acest sens. | ||
| + | |||
| + | {{ :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. | ||
| {{ :laboratoare:laborator10:avd_emulator_control.png?nolink&600 }} | {{ :laboratoare:laborator10:avd_emulator_control.png?nolink&600 }} | ||
| Line 366: | Line 373: | ||
| 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 1038: | Line 1047: | ||
| {{ :laboratoare:laborator10:google_maps_places.png?nolink&400 }} | {{ :laboratoare:laborator10:google_maps_places.png?nolink&400 }} | ||
| + | |||
| + | Reperele vor fi stocate în cadrul unei liste (obiect de tip ''Spinner''), astfel încât la selecția unui element din cadrul acesteia, se va vizualiza obiectivul geografic marcat anterior. | ||
| Se cere să se implementeze funcționalitățile pentru adăugarea unui reper și ștergerea tuturor reperelor de pe hartă: | Se cere să se implementeze funcționalitățile pentru adăugarea unui reper și ștergerea tuturor reperelor de pe hartă: | ||
| Line 1064: | Line 1075: | ||
| 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. | ||
| - | - când serviciul este activat, se vizualizează pe hartă doar locația curentă; | + | - când serviciul este activat, se vizualizează pe hartă doar locația curentă, completându-se în mod automat informații precum latitudinea și longitudinea, actualizându-se corespunzător poziția; |
| - când serviciul este dezactivat, utilizatorul are posibilitatea de a controla poziția care se vizualizează pe hartă. | - când serviciul este dezactivat, utilizatorul are posibilitatea de a controla poziția care se vizualizează pe hartă. | ||
| Line 1075: | Line 1086: | ||
| Se cere să se implementeze metodele pentru pornirea și oprirea serviciului de actualizare periodică a locației de pe hartă: | Se cere să se implementeze metodele pentru pornirea și oprirea serviciului de actualizare periodică a locației de pe hartă: | ||
| - | **a)** metoda ''startLocationUpdates()'' din clasa ''GoogleMapsActivity'' | + | **a)** metoda ''startLocationUpdates()'' din clasa ''GoogleMapsActivity'': |
| - se apelează metoda ''requestLocationUpdates()'' din clasa ''FusedLocationProviderApi'' <code java> | - se apelează metoda ''requestLocationUpdates()'' din clasa ''FusedLocationProviderApi'' <code java> | ||
| LocationServices.FusedLocationApi.requestLocationUpdates( | LocationServices.FusedLocationApi.requestLocationUpdates( | ||
| Line 1123: | Line 1134: | ||
| **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 Eclipse Luna SR1a (4.4.1) proiectele ''google-play-service_lib'' și ''04-GoogleMapsGeofencing'' din directorul ''labtasks'' (în această ordine). | ||
| - | Se dorește să se implementeze o aplicație care să monitorizeze activitatea unui dispozitiv mobil raportat la o zonă de restricție geografică, raportând evenimentele de tip intrare, respectiv ieșire prin intermediul unor notificări. | + | Se dorește să se implementeze o aplicație care să monitorizeze activitatea unui dispozitiv mobil raportat la o zonă de restricție geografică. |
| - | Serviciul referitor la monitorizarea unei anumite locații poate fi activat sau dezactivat, specificându-se de fiecare dată coordonatele zonei față de care sunt realizate modificările. | + | Serviciul referitor la monitorizarea unei anumite locații poate fi activat sau dezactivat, specificându-se de fiecare dată coordonatele zonei față de care sunt realizate comparațiile. |
| Aplicația va afișa pe hartă în permanență locația curentă prin actualizările periodice care sunt transmise. | Aplicația va afișa pe hartă în permanență locația curentă prin actualizările periodice care sunt transmise. | ||
| - | {{:laboratoare:laborator10:google_maps_geofencing_01.png?nolink&400}} | + | {{ :laboratoare:laborator10:google_maps_geofencing_01.png?nolink&400 }} |
| - | {{:laboratoare:laborator10:google_maps_geofencing_02.png?nolink&400}} | + | |
| - | {{:laboratoare:laborator10:google_maps_geofencing_03.png?nolink&400}} | + | Notificările vor fi generate: |
| - | {{:laboratoare:laborator10:google_maps_geofencing_04.png?nolink&400}} | + | |
| - | {{:laboratoare:laborator10:google_maps_geofencing_05.png?nolink&400}} | + | - când utilizatorul intră în zona de restricție geografică\\ \\ {{ :laboratoare:laborator10:google_maps_geofencing_02_03.png?nolink&600 }} |
| - | {{:laboratoare:laborator10:google_maps_geofencing_06.png?nolink&400}} | + | - când utilizatorul iese din zona de restricție geografică\\ \\ {{ :laboratoare:laborator10:google_maps_geofencing_04_05.png?nolink&600 }} |
| + | |||
| + | Detaliile cu privire la evenimentul produs vor putea fi vizualizate în cadrul unei activități dedicate. | ||
| Se cere să se analizeze evenimentul legat de zona de restricție geografică în cadrul serviciului ''GeofenceTrackerIntentService'', pe metoda ''onHandleIntent()''. | Se cere să se analizeze evenimentul legat de zona de restricție geografică în cadrul serviciului ''GeofenceTrackerIntentService'', pe metoda ''onHandleIntent()''. | ||
| Line 1153: | Line 1166: | ||
| List<Geofence> triggeringGeofences = geofencingEvent.getTriggeringGeofences(); | List<Geofence> triggeringGeofences = geofencingEvent.getTriggeringGeofences(); | ||
| </code> | </code> | ||
| - | - se parcurge lista și pentru fiecare obiect se obține identificatorul unic (''gerRequestId()''); | + | - se parcurge lista și pentru fiecare obiect se obține identificatorul unic (''getRequestId()''); |
| - se transmite mesajul explicativ prin intermediul unei notificări (ca parametru al metodei ''sendNotification()''). | - se transmite mesajul explicativ prin intermediul unei notificări (ca parametru al metodei ''sendNotification()''). | ||
