Differences

This shows you the differences between two versions of the page.

Link to this comparison view

eim:laboratoare:laborator10 [2019/05/16 13:48]
dragos.niculescu
eim:laboratoare:laborator10 [2020/03/19 09:19] (current)
madalina.barbu [Activitate de Laborator]
Line 3: Line 3:
 Datele cu privire la localizare îmbunătățesc experiența utilizatorului,​ întrucât unele informații furnizate de aplicații pot fi contextualizate în funcție de regiunea în care acesta se găsește în mod curent. O astfel de oportunitate poate fi exploatată cu atât mai mult în cadrul dispozitivelor mobile, care dispun de componente specializate pentru determinarea automată a poziției geografice curente (senzor pentru GPS, folosirea informațiilor furnizate de celula de telefonie mobilă). Datele cu privire la localizare îmbunătățesc experiența utilizatorului,​ întrucât unele informații furnizate de aplicații pot fi contextualizate în funcție de regiunea în care acesta se găsește în mod curent. O astfel de oportunitate poate fi exploatată cu atât mai mult în cadrul dispozitivelor mobile, care dispun de componente specializate pentru determinarea automată a poziției geografice curente (senzor pentru GPS, folosirea informațiilor furnizate de celula de telefonie mobilă).
  
-În cadrul SDK-ului Android, sunt implementate API-uri pentru proiectarea și dezvoltarea unor aplicații care pun la dispoziția utilizatorilor informații cu privire la **locația în care se află**, disponibile prin intermediul unor metode, fără a fi necesară interacțiunea propriu-zisă cu componentele responsabile cu determinarea acestor date. Totodată, există posibilitatea de a identifica **punctele de interes** care se găsesc în proximitatea utilizatorului,​ la un moment dat de timp.+În cadrul SDK-ului Android, sunt implementate API-uri pentru proiectarea și dezvoltarea unor aplicații care pun la dispoziția utilizatorilor informații cu privire la **locația în care se află**, disponibile prin intermediul unor metode, fără a fi necesară interacțiunea propriu-zisă cu componentele responsabile cu determinarea acestor date. Totodată, există posibilitatea de a identifica **punctele de interes** care se găsesc în proximitatea utilizatorului,​ la un moment dat
 + 
 +Există și alte [[https://​blog.rapidapi.com/​top-map-apis/​|API-uri]] pentru localizare, geoconding, hărți, indicații de navigație, fiecare cu avantajele și dezavantajele asociate. În acest laborator se vor folosi serviciile Google, care sunt cotate printre cele mai rapide, diverse, dar și scumpe pentru volum mare de apeluri 
  
 Astfel, funcționalitățile oferite pentru dezvoltatori sunt: Astfel, funcționalitățile oferite pentru dezvoltatori sunt:
Line 49: Line 52:
   * Credențialele pot fi obținute:   * Credențialele pot fi obținute:
     *  prin accesarea butonului //Google Maps Android API// → //Create credentials//,​ care implică următoarele etape:\\ {{ :​eim:​laboratoare:​laborator10:​configurare03new.png?​nolink&​800 }}\\ **1.** indicarea tipului de API folosit (în cazul de față //Google Maps Android API//)\\ {{ :​eim:​laboratoare:​laborator10:​configurare04new.png?​nolink }}\\ **2.** generarea (automată) propriu-zisă a cheii, urmată de apăsarea butonului \\Done\\;\\ {{ :​eim:​laboratoare:​laborator10:​configurare05new.png?​nolink }}\\ În secțiunea //​Credentials//​ va putea fi vizualizată cheia creată, împreună cu denumirea sa. Pentru cheile care nu sunt restricționate,​ va fi vizibil semnul :!: care indică faptul că aceasta poate fi utilizată din orice context, ceea ce poate implica o breșă de securitate\\ {{ :​eim:​laboratoare:​laborator10:​configurare06new.png?​nolink }}\\ Prin accesarea cheii respective, aceasta poate fi restricționată în sensul în care se precizează **contextul în care este folosită cheia** (în cazul de față, aplicații Android - //Android apps//), **denumirea pachetului corespunzător aplicației Android din care cheia respectivă poate fi folosită** precum și **certificatul digital SHA-1 corespunzător mașinii de pe care este instalată aplicația Android pe dispozitivul mobil**.\\ Se va indica și comanda care va trebui rulată pentru generarea certificatului digital respectiv; 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>​     *  prin accesarea butonului //Google Maps Android API// → //Create credentials//,​ care implică următoarele etape:\\ {{ :​eim:​laboratoare:​laborator10:​configurare03new.png?​nolink&​800 }}\\ **1.** indicarea tipului de API folosit (în cazul de față //Google Maps Android API//)\\ {{ :​eim:​laboratoare:​laborator10:​configurare04new.png?​nolink }}\\ **2.** generarea (automată) propriu-zisă a cheii, urmată de apăsarea butonului \\Done\\;\\ {{ :​eim:​laboratoare:​laborator10:​configurare05new.png?​nolink }}\\ În secțiunea //​Credentials//​ va putea fi vizualizată cheia creată, împreună cu denumirea sa. Pentru cheile care nu sunt restricționate,​ va fi vizibil semnul :!: care indică faptul că aceasta poate fi utilizată din orice context, ceea ce poate implica o breșă de securitate\\ {{ :​eim:​laboratoare:​laborator10:​configurare06new.png?​nolink }}\\ Prin accesarea cheii respective, aceasta poate fi restricționată în sensul în care se precizează **contextul în care este folosită cheia** (în cazul de față, aplicații Android - //Android apps//), **denumirea pachetului corespunzător aplicației Android din care cheia respectivă poate fi folosită** precum și **certificatul digital SHA-1 corespunzător mașinii de pe care este instalată aplicația Android pe dispozitivul mobil**.\\ Se va indica și comanda care va trebui rulată pentru generarea certificatului digital respectiv; 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>​
-student@eim2017:~$ export PATH=$PATH:/​usr/​local/​java/​jdk1.8.0_131/​bin +student@eg-106:~$ export PATH=$PATH:/​usr/​local/​java/​jdk1.8.0_131/​bin 
-student@eim2017:~$ keytool -list -v -keystore ~/​.android/​debug.keystore -alias androiddebugkey -storepass android -keypass android+student@eg-106:~$ keytool -list -v -keystore ~/​.android/​debug.keystore -alias androiddebugkey -storepass android -keypass android
 </​code>​\\ Windows <​code>​ </​code>​\\ Windows <​code>​
 C:​\Users\Student>​ set PATH=%PATH%;​C:​\Program Files\Java\jdk_1.8.0_131\bin C:​\Users\Student>​ set PATH=%PATH%;​C:​\Program Files\Java\jdk_1.8.0_131\bin
Line 89: Line 92:
  
   * Linux <​code>​   * Linux <​code>​
-student@eim2017:~$ cd /​opt/​android-sdk-linux/​tools +student@eg-106:~$ cd /​opt/​android-sdk-linux/​tools 
-student@eim2017:/​opt/​android-sdk-linux/​tools$ sudo ./android+student@eg-106:/​opt/​android-sdk-linux/​tools$ sudo ./android
 </​code>​ </​code>​
   * Windows - se deschide un terminal cu drepturi de administrator <​code>​   * Windows - se deschide un terminal cu drepturi de administrator <​code>​
Line 1056: Line 1059:
 **2.** În contul Github personal, să se creeze un depozit denumit '​Laborator10'​. Inițial, acesta trebuie să fie gol (nu trebuie să bifați nici adăugarea unui fișier ''​README.md'',​ nici a fișierului ''​.gitignore''​ sau a a fișierului ''​LICENSE''​). **2.** În contul Github personal, să se creeze un depozit denumit '​Laborator10'​. Inițial, acesta trebuie să fie gol (nu trebuie să bifați nici adăugarea unui fișier ''​README.md'',​ nici a fișierului ''​.gitignore''​ sau a a fișierului ''​LICENSE''​).
  
-**3.** Să se cloneze în directorul de pe discul local conținutul depozitului la distanță de la [[https://​www.github.com/​eim2017/​Laborator10|]]. ​+**3.** Să se cloneze în directorul de pe discul local conținutul depozitului la distanță de la [[https://​www.github.com/​eim-lab/​Laborator10|]]. ​
  
 În urma acestei operații, directorul Laborator10 va trebui să se conțină directoarele ''​labtasks''​ și ''​solutions''​. ​ În urma acestei operații, directorul Laborator10 va trebui să se conțină directoarele ''​labtasks''​ și ''​solutions''​. ​
  
 <​code>​ <​code>​
-student@eim2017:~$ git clone https://www.github.com/eim2017/​Laborator10.git+student@eg-106:~$ git clone https://​github.com/​eim-lab/​Laborator10.git
 </​code>​ </​code>​
  
 **4.** Să se încarce conținutul descărcat în cadrul depozitului '​Laborator10'​ de pe contul Github personal. <​code>​ **4.** Să se încarce conținutul descărcat în cadrul depozitului '​Laborator10'​ de pe contul Github personal. <​code>​
-student@eim2017:~$ cd Laborator10 +student@eg-106:~$ cd Laborator10 
-student@eim2017:​~/​Laborator10$ git remote add Laborator10_perfectstudent https://​github.com/​perfectstudent/​Laborator10 +student@eg-106:​~/​Laborator10$ git remote add Laborator10_perfectstudent https://​github.com/​perfectstudent/​Laborator10 
-student@eim2017:​~/​Laborator10$ git push Laborator10_perfectstudent master+student@eg-106:​~/​Laborator10$ git push Laborator10_perfectstudent master
 </​code>​ </​code>​
  
Line 1144: Line 1147:
   - 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 Android Studio proiectul ''​GoogleMapsGeocoding''​ din directorul ''​labtasks''​.+**8.** ​(opțional - necesită Billing pentru Geocoding API)  
 +<​spoiler>​ 
 +Să se importe în mediul integrat de dezvoltare Android Studio proiectul ''​GoogleMapsGeocoding''​ 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 1163: Line 1168:
     - un rând de la o anumită poziție se obține prin intermediul metodei ''​getAddressLine()'';​     - un rând de la o anumită poziție se obține prin intermediul metodei ''​getAddressLine()'';​
   - 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.
 +</​spoiler>​
  
 **9.** Să se importe în mediul integrat de dezvoltare Android Studio proiectul ''​GoogleMapsGeofencing''​ din directorul ''​labtasks''​. **9.** Să se importe în mediul integrat de dezvoltare Android Studio proiectul ''​GoogleMapsGeofencing''​ din directorul ''​labtasks''​.
Line 1202: Line 1208:
  
 **10.** Să se încarce modificările realizate în cadrul depozitului '​Laborator10'​ de pe contul Github personal, folosind un mesaj sugestiv. <​code>​ **10.** Să se încarce modificările realizate în cadrul depozitului '​Laborator10'​ de pe contul Github personal, folosind un mesaj sugestiv. <​code>​
-student@eim2017:​~/​Laborator10$ git add * +student@eg-106:​~/​Laborator10$ git add * 
-student@eim2017:​~/​Laborator10$ git commit -m "​implemented taks for laboratory 10" +student@eg-106:​~/​Laborator10$ git commit -m "​implemented taks for laboratory 10" 
-student@eim2017:​~/​Laborator10$ git push Laborator10_perfectstudent master+student@eg-106:​~/​Laborator10$ git push Laborator10_perfectstudent master
 </​code>​ </​code>​
  
eim/laboratoare/laborator10.1558003707.txt.gz · Last modified: 2019/05/16 13:48 by dragos.niculescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0