Documente Academic
Documente Profesional
Documente Cultură
Dispozitiv Fizic
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).
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.
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).
High accuracy - locația este determinată folosind toate resursele disponibile (sistemul global de
poziționare GPS, rețelele mobile și fără fir);
Battery saving - locația este determinată folosind doar informațiile furnizate de rețelele mobile și
fără fir;
Device only - locația este determinată folosind doar informațiile furnizate de sistemul global de
poziționare GPS.
Dispozitiv Virtual
Genymotion
Pentru accesarea funcționalităților legate de locație pe dispozitivul virtual Genymotion este
necesar să se activeze serviciul GPS, accesibil din meniul lateral sau folosind combinația de taste Ctrl + 2
(se selectează valoarea On).
Alte informații care pot fi configurate sunt:
latitudinea - exprimată în grade;
longitudinea - exprimată în grade;
altitudinea - exprimată în metri;
acuratețea (nivelul de precizie) - exprimat în număr de metri cu care să se aproximeze locația
exactă;
direcția - exprimată în grade.
Controlul poziției curente poate fi realizat prin intermediul perspectivei Android Debug Monitor
din Android Studio, 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.
Gestiunea unei Hărți Google
Harta Google este implementată în SDK-ul Android:
prin intermediul unei componente grafice de tipul MapView, în acest caz fiind necesar ca
metodele care controlează ciclul de viață al aplicației Android să propage evenimentele
corespunzătoare și către acest element;
în cadrul unui fragment, de tipul MapFragment, acesta tratând și evenimentele corespunzătoare
ciclului de viață al aplicației Android.
Obiectele MapView și MapFragment sunt disponibile începând cu nivelul de API 12, asigurarea
compatibilității cu versiunile anterioare fiind realizată prin intermediul bibliotecilor de suport.
Astfel, integrarea unei hărți Google se poate implementa prin specificarea resursei aferente în
fișierul XML care descrie interfața grafică.
<fragment
android:id="@+id/google_map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.MapFragment" />
Pe baza controalelor grafice MapView sau MapFragment, se poate obține o instanță a unui obiect
GoogleMap, prin intermediul căruia sunt invocate toate funcționalitățile pentru operații legate de
localizarea pe hartă.
De regulă, inițializarea este realizată pe una dintre metodele onStart() sau onResume(), după ce în
prealabil au fost încărcate toate controalele grafice pentru interacțiunea cu utilizatorul.
Funcționalitățile pe care le pune la dispoziție un obiect de tipul GoogleMap sunt:
1. gestiunea reperelor de pe harta Google, prin intermediul elementelor MarkerOptions;
2. poziționarea la anumite coordonate GPS (latitudine, longitudine) este realizată prin
actualizarea locației la care se găsește camera prin care este vizualizată harta Google,
funcționalitate implementată de clasa CameraUpdate;
3. marcarea locației curente este realizată prin intermediul metodei
setMyLocationEnabled(boolean); de asemenea, este disponibil un control prin intermediul
căruia utilizatorul poate activa sau dezactiva această funcționalitate;
4. vizualizarea unor informații suplimentare:
setBuildingsEnabled(boolean) - vizualizarea exterioarelor de clădiri în format 3D;
setContentDescription(String) - descriere;
setIndoorEnabled(boolean) - vizualizarea configurațiilor interioarelor de clădiri;
setTrafficEnabled(boolean) - traficul la momentul de timp curent;
Tipurile de hărți Google implementate sunt:
1. GoogleMap.MAP_TYPE_NORMAL - harta politică;
2. GoogleMap.MAP_TYPE_TERRAIN - harta fizică (nu include și drumuri);
3. GoogleMap.MAP_TYPE_SATELLITE - vedere din satelit;
4. GoogleMap.MAP_TYPE_HYBRID - combinație hibridă.
Specificarea unui tip de hartă se realizează prin intermediul metodei setMapType().
Gestiunea unei hărți Google sub formă de imagine este realizată prin intermediul metodei
snapshot(GoogleMap.SnapshotReadyCallback), al cărui obiect ascultător furnizează resursa grafică (în
format Bitmap) în momentul în care este disponibilă (se apelează automat metoda
onSnapshotReady(Bitmap).
Funcționalitatea pe care o oferă harta Google utilizatorului poate fi controlată și prin intermediul
obiectului asociat de tip UiSettings, obținut prin apelul metodei getUiSettings():
setAllGesturesEnables(boolean) - permite sau nu toate tipurile de operații care pot fi realizate
prin intermediul hărții Google;
setCompassEnabled(boolean) - activează sau dezactivează busola;
setIndoorLevelPickerEnabled(boolean) - stabilește permisiunile de selectare a unui nivel în
cazul unor hărți de interior;
setMapToolbarEnabled(boolean) - indică configurările de vizualizare pentru bara de unelte;
setMyLocationButtonEnabled(boolean) - referă vizualizarea controlului grafic pentru
centrarea hărții Google în funcție de locația curentă;
setRotateGesturesEnabled(boolean) - precizează dreptul de utilizare al gesturilor legate de
rotirea camerei pentru perspectiva de vizualizare;
setScrollGesturesEnabled(boolean) - determină posibilitatea de folosire a gesturilor pentru
derulare, folosind un deget;
setTiltGesturesEnabled(boolean) - instaurează politica referitoare la gesturile de derulare,
folosind două degete;
setZoomControlsEnabled(boolean) - desemnează vizualizarea sau nu a unor controale grafice
pentru gradul de detaliere a hărții Google;
setZoomGesturesEnabled(boolean) - controlează utilizarea gesturilor pentru vizualizarea
hărții Google folosind un anumit grad de detaliere.
Pentru interacțiunea cu utilizatorul au fost definite mai multe clase ascultător, ale căror metode
semnalează declanșarea unor evenimente specifice:
GoogleMap.OnCameraChangeListener - modificarea poziției camerei prin care este
vizualizată harta Google;
GoogleMap.OnIndoorStateChangeListener - schimbarea stării legate de vizualizarea la nivel
de interior al clădirii (clădirea curentă, etajul la care se găsește utilizatorul);
GoogleMap.OnInfoWindowClickListener - evenimente legate de fereastra ce conține
informații suplimentare cu privire la o locație;
GoogleMap.OnMapClickListener - acțiune de tipul apăsare scurtă a unei poziții de pe harta
Google;
GoogleMap.OnMapLoadedCallback - marcarea momentului în care sunt vizibile toate
componentele necesare la un moment dat;
GoogleMap.OnMapLongClickListener - acțiune de tipul apăsare lungă a unei poziții de pe
harta Google;
GoogleMap.OnMarkerClickListener - descrie interacțiunea de tip apăsare a unui reper de pe
harta Google;
GoogleMap.OnMarkerDragListener - descrie interacțiunea de tip mutare a unui reper de pe
harta Google;
GoogleMap.OnMyLocationButtonClickListener - accesarea butonului pentru centrarea hărții
în funcție de locația curentă.