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 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()''​).
  
laboratoare/laborator10.1431378472.txt.gz · Last modified: 2015/05/12 00:07 (external edit)
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0