This shows you the differences between two versions of the page.
|
eim:laboratoare:laborator07 [2019/04/11 12:05] dragos.niculescu |
eim:laboratoare:laborator07 [2021/02/16 16:06] (current) dragos.niculescu |
||
|---|---|---|---|
| Line 353: | Line 353: | ||
| Pentru utilizarea bibliotecii Volley este necesar să se realizeze următoarele operații: | Pentru utilizarea bibliotecii Volley este necesar să se realizeze următoarele operații: | ||
| - descărcarea codului sursă de la depozitul unde este întreținută <code> | - descărcarea codului sursă de la depozitul unde este întreținută <code> | ||
| - | student@eim2017:~$ git clone https://www.github.com/google/volley | + | student@eim-lab:~$ git clone https://www.github.com/google/volley |
| </code> | </code> | ||
| - referirea proiectului ca bibliotecă în Android Studio | - referirea proiectului ca bibliotecă în Android Studio | ||
| Line 867: | Line 867: | ||
| * ''username'' - denumirea utilizatorului care deține drepturi de acces asupra acestui serviciu web (în cazul de față, ''pdsd''). | * ''username'' - denumirea utilizatorului care deține drepturi de acces asupra acestui serviciu web (în cazul de față, ''pdsd''). | ||
| - | **Exemplu**. O adresă Internet de la care pot fi accesate rezultate în format JSON este: [[http://api.geonames.org/earthquakesJSON?north=44.1&south=-9.9&east=-22.4&west=55.2&username=eim2017|]]. | + | **Exemplu**. O adresă Internet de la care pot fi accesate rezultate în format JSON este: [[http://api.geonames.org/earthquakesJSON?north=44.1&south=-9.9&east=-22.4&west=55.2&username=eim-lab|]]. |
| Rezultatele sunt furnizate în următorul format: | Rezultatele sunt furnizate în următorul format: | ||
| Line 936: | Line 936: | ||
| <code> | <code> | ||
| - | student@eim2017:~$ git clone https://www.github.com/eim-lab/Laborator07.git | + | student@eim-lab:~$ git clone https://www.github.com/eim-lab/Laborator07.git |
| </code> | </code> | ||
| **3.** Să se încarce conținutul descărcat în cadrul depozitului 'Laborator07' de pe contul Github personal. <code> | **3.** Să se încarce conținutul descărcat în cadrul depozitului 'Laborator07' de pe contul Github personal. <code> | ||
| - | student@eim2017:~$ cd Laborator07 | + | student@eim-lab:~$ cd Laborator07 |
| - | student@eim2017:~/Laborator07$ git remote add Laborator07_perfectstudent https://github.com/perfectstudent/Laborator07 | + | student@eim-lab:~/Laborator07$ git remote add Laborator07_perfectstudent https://github.com/perfectstudent/Laborator07 |
| - | student@eim2017:~/Laborator07$ git push Laborator07_perfectstudent master | + | student@eim-lab:~/Laborator07$ git push Laborator07_perfectstudent master |
| </code> | </code> | ||
| **4.** Să se importe în mediul integrat de dezvoltare Android Studio proiectul ''CalculatorWebService'' din directorul ''labtasks''. | **4.** Să se importe în mediul integrat de dezvoltare Android Studio proiectul ''CalculatorWebService'' din directorul ''labtasks''. | ||
| + | |||
| + | https://ocw.cs.pub.ro/courses/_media/eim/laboratoare/laborator07/calculatorwebservice.zip | ||
| **4a.** Să se verifice în browser funcționarea serverului [[http://wi-fi.cs.pub.ro/~dniculescu/didactic/eim/expr/|serverului]] pentru GET și POST | **4a.** Să se verifice în browser funcționarea serverului [[http://wi-fi.cs.pub.ro/~dniculescu/didactic/eim/expr/|serverului]] pentru GET și POST | ||
| Line 1019: | Line 1021: | ||
| </code> | </code> | ||
| * obținerea caricaturii, pe baza adresei Internet la care este găzduită, se face prin fluxul de intrare corespunzător entității HTTP, care va fi decodificat prin intermediul metodei [[http://developer.android.com/reference/android/graphics/BitmapFactory.html#decodeStream(java.io.InputStream)|BitmapFactory.decodeStream()]], care întoarce un obiect de tip [[http://developer.android.com/reference/android/graphics/Bitmap.html|Bitmap]]; asocierea unui astfel de obiect ca sursă a unui control grafic ce tip ''ImageView'' se face prin intermediul metodei [[http://developer.android.com/reference/android/widget/ImageView.html#setImageBitmap(android.graphics.Bitmap)|setImageBitmap()]]; | * obținerea caricaturii, pe baza adresei Internet la care este găzduită, se face prin fluxul de intrare corespunzător entității HTTP, care va fi decodificat prin intermediul metodei [[http://developer.android.com/reference/android/graphics/BitmapFactory.html#decodeStream(java.io.InputStream)|BitmapFactory.decodeStream()]], care întoarce un obiect de tip [[http://developer.android.com/reference/android/graphics/Bitmap.html|Bitmap]]; asocierea unui astfel de obiect ca sursă a unui control grafic ce tip ''ImageView'' se face prin intermediul metodei [[http://developer.android.com/reference/android/widget/ImageView.html#setImageBitmap(android.graphics.Bitmap)|setImageBitmap()]]; | ||
| + | <spoiler> | ||
| + | <code java> | ||
| + | Element divTagIdCtitle = htmlTag.getElementsByAttributeValue(Constants.ID_ATTRIBUTE, Constants.CTITLE_VALUE).first(); | ||
| + | xkcdCartoonInformation.setCartoonTitle(divTagIdCtitle.ownText()); | ||
| + | |||
| + | |||
| + | Element divTagIdComic = htmlTag.getElementsByAttributeValue(Constants.ID_ATTRIBUTE, Constants.COMIC_VALUE).first(); | ||
| + | String cartoonInternetAddress = divTagIdComic.getElementsByTag(Constants.IMG_TAG).attr(Constants.SRC_ATTRIBUTE); | ||
| + | String cartoonUrl = Constants.HTTP_PROTOCOL + cartoonInternetAddress; | ||
| + | xkcdCartoonInformation.setCartoonUrl(cartoonUrl); | ||
| + | </code> | ||
| + | </spoiler> | ||
| + | ===== Opțional (request cu Volley) ===== | ||
| <spoiler> | <spoiler> | ||
| * alternativ, se poate folosi biblioteca open-source Volley, care pune la dispoziție un obiect specializat pentru descărcarea de imagini și încărcarea acestora în controalele din cadrul interfeței grafice (''ImageRequest''): <code java> | * alternativ, se poate folosi biblioteca open-source Volley, care pune la dispoziție un obiect specializat pentru descărcarea de imagini și încărcarea acestora în controalele din cadrul interfeței grafice (''ImageRequest''): <code java> | ||
| Line 1046: | Line 1061: | ||
| </code> | </code> | ||
| </spoiler> | </spoiler> | ||
| + | |||
| + | |||
| * obținerea adreselor Internet corespunzătoare caricaturilor anterioară, respectiv următoare, care vor fi asociate obiectului ascultător ce tratează evenimentul de tip apăsare al butonului aferent; se poate realiza o căutare după eticheta ''<a>'' care deține un atribut ''rel'' cu valoarea ''prev'', respectiv ''next'', folosind metoda ''getElementsByAttributeValue()''); URL-ul reprezintă valoarea atributului ''href'', furnizată de metoda ''attr'': <code java> | * obținerea adreselor Internet corespunzătoare caricaturilor anterioară, respectiv următoare, care vor fi asociate obiectului ascultător ce tratează evenimentul de tip apăsare al butonului aferent; se poate realiza o căutare după eticheta ''<a>'' care deține un atribut ''rel'' cu valoarea ''prev'', respectiv ''next'', folosind metoda ''getElementsByAttributeValue()''); URL-ul reprezintă valoarea atributului ''href'', furnizată de metoda ''attr'': <code java> | ||
| Element aTagRelPrev = htmlTag.getElementsByAttributeValue(Constants.REL_ATTRIBUTE, Constants.PREVIOUS_VALUE).first(); | Element aTagRelPrev = htmlTag.getElementsByAttributeValue(Constants.REL_ATTRIBUTE, Constants.PREVIOUS_VALUE).first(); | ||
| Line 1137: | Line 1154: | ||
| **7.** (opțional) Să se importe în mediul integrat de dezvoltare Android Studio proiectul ''LandmarkLister'' din directorul ''labtasks''. | **7.** (opțional) Să se importe în mediul integrat de dezvoltare Android Studio proiectul ''LandmarkLister'' din directorul ''labtasks''. | ||
| - | Se cere să se implementeze o aplicație Android care să afișeze informații cu privire la obiectivele turistice dintr-un areal geografic (desemnat prin coordonatele nord, sud, est, vest) pe baza rezultatelor furnizate de serviciul web [[http://http://api.geonames.org/citiesJSON|Geonames Paces]]. | + | Se cere să se implementeze o aplicație Android care să afișeze informații cu privire la obiectivele turistice dintr-un areal geografic (desemnat prin coordonatele nord, sud, est, vest) pe baza rezultatelor furnizate de serviciul web [[http://api.geonames.org/citiesJSON|Geonames Paces]]. |
| Detaliile care se doresc a fi vizualizate pentru fiecare obiectiv turistic în parte sunt: | Detaliile care se doresc a fi vizualizate pentru fiecare obiectiv turistic în parte sunt: | ||
| Line 1228: | Line 1245: | ||
| **8.** Să se încarce modificările realizate în cadrul depozitului 'Laborator07' de pe contul Github personal, folosind un mesaj sugestiv. <code> | **8.** Să se încarce modificările realizate în cadrul depozitului 'Laborator07' de pe contul Github personal, folosind un mesaj sugestiv. <code> | ||
| - | student@eim2017:~/Laborator07$ git add * | + | student@eim-lab:~/Laborator07$ git add * |
| - | student@eim2017:~/Laborateclior07$ git commit -m "implemented taks for laboratory 07" | + | student@eim-lab:~/Laborateclior07$ git commit -m "implemented taks for laboratory 07" |
| - | student@eim2017:~/Laborator07$ git push Laborator07_perfectstudent master | + | student@eim-lab:~/Laborator07$ git push Laborator07_perfectstudent master |
| </code> | </code> | ||
| Line 1249: | Line 1266: | ||
| [[http://en.wikipedia.org/wiki/JSON|Formatul JSON]]\\ | [[http://en.wikipedia.org/wiki/JSON|Formatul JSON]]\\ | ||
| [[http://developer.android.com/reference/org/json/JSONObject.html|JSONObject]] | [[http://developer.android.com/reference/org/json/JSONObject.html|JSONObject]] | ||
| + | ====Android Developer Fundamentals==== | ||
| + | [[https://docs.google.com/presentation/d/176imWmYy31qcCpkkk0mhx66LKrlhrCZPHGfEn9tBZlE/edit#slide=id.g116d7d9d49_3_13|Internet Connection]] | ||