Differences

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

Link to this comparison view

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]]
eim/laboratoare/laborator07.1554973500.txt.gz · Last modified: 2019/04/11 12:05 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