bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


android_imatges

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
android_imatges [2022/10/10 10:37]
enrique_mieza_sanchez
android_imatges [2022/12/19 20:15] (actual)
enric_mieza_sanchez
Línia 1: Línia 1:
-====== Tractament d'imatges en Android ====== +====== Tractament d'imatges amb android =====
- +
-En aquest article veurem com capturar imatges amb Android utilitzant la càmera del mòbil, i com emmagatzemar les dades en el sistema d'arxius. +
- +
-{{ android-camera.jpg?direct }} +
- +
-Referències: +
-  * Article [[Android]] a bytes.cat +
-  * [[https://ioc.xtec.cat/materials/FP/Recursos/fp_dam_m08_/web/fp_dam_m08_htmlindex/WebContent/u3/a2/continguts.html|Apunts de MP08 UF2 de DAM a l'IOC]]. +
-  * [[https://developer.android.com/training/camera/photobasics#java|Article "photo basics"]] oficial d'Android. Cal llegir-lo en anglès perquè la versió en castellà conté errors. +
-  * [[https://developer.android.com/studio/debug/device-file-explorer|Device File Explorer]] de l'Android Studio. +
- +
- +
-{{tag> #Dam #DamMp08 #DamMp08Uf2 #DamMp08Uf02 Android mobile java }} +
- +
-===== Us de la càmera ===== +
-Aquest [[https://developer.android.com/training/camera/photobasics#java|article de la pàgina oficial d'Android]] ens explica com capturar imatges amb la pròpia aplicació de la càmera del mòbil.+
  
 <WRAP important> <WRAP important>
-ULL! Mira el [[https://developer.android.com/training/camera/photobasics#java|tutorial "photobasics" d'Android]] **en anglès**. La versió en castellà conté errors. +Segurament estàs buscant l'article [[Android Camera]].
- +
-Hauràs de canviar manualment l'idioma a dalt a la dreta.+
 </WRAP> </WRAP>
- 
-El tutorial utilitza la //app// Camera del sistema operatiu. Així, no farem la foto dins la pròpia aplicació, sinó que la farà la Càmera (amb un ''Intent'' + ''setActivityForResult'') i després haurem de gestionar el resultat (amb una //callback//). 
- 
-{{ android-camera-intent.jpg?direct&400 }} 
- 
-Tenim, dins el mateix tutorial, 2 aproximacions: 
-  - **Miniatura**:  
-    * Si cridem la **càmera amb un ''Intent'' sense cap extra ens retornarà un //Bitmap//** amb el //thumbnail// (miniatura) de la foto. 
-    * Té poca resolució, però és força senzill d'implementar i per moltes aplicacions ens resulta suficient. 
-    * Addicionalment al què hi ha al tutorial, podeu afegir l'enregistrament de la foto en un arxiu de l'espai de la nostra pròpia //app// mitjançant el mètode //Bitmap.compress// 
-  - **Full-size**:  
-    * Caldrà donar-li una indicació a la //app// Camera d'on guardar l'arxiu. 
-    * Necessitem un **''FileProvider''** dins la nostra app (arxiu ''AndroidManifest.iml''). 
-      * [[https://inthecheesefactory.com/blog/how-to-share-access-to-file-with-fileprovider-on-android-nougat/en|Abans de la API 18 no calia utilitzar FileProvider]]. 
-    * Un cop cridem la //app// Camera ella mateixa guardarà l'arxiu on li haguem dit (sigui a l'espai de la nostra //app//, o al carret de fotos (DCIM) compartit del sistema operatiu). 
-    * **ULL! Quan iniciem la càmera i li demanem que ens guardi la foto en //full-size// no rebrem el //thumbnail// en la //callback// de tornada** (amb el què el codi previ probablement petarà). 
  
 \\ \\
- 
-===== Exercici: captura bàsica d'imatge amb miniatura ===== 
  
 <WRAP todo> <WRAP todo>
-Pràctica elemental de captura d'imatge. En aquest exercici no guardarem la imatge en disc, però la podem mostrar en un ImageView+Per aprendre a utilitzar ''ImageView'', aquí tens un bon [[https://medium.com/@patelsneh18/startactvivityforresult-deprecated-alternative-and-using-it-outside-activity-class-bc9331cf896|tutorial per emprar la Galeria d'Imatges]].
-  * Crea un aplicació simple amb un ''Button'' (captura foto) i un ''Image View''+
-  * Segueix les indicacions de l'[[https://developer.android.com/training/camera/photobasics#TaskCaptureIntent|article de captura d'imatges]] (en anglès!) que crea el ''Intent'' i mostra la miniatura. +
-  * Caldrà **implementar 2 funcions** a la teva ''Activity'': +
-    * **''dispatchTakePictureIntent''** : crearà un Intent per cridar la càmera. Pots cridar aquesta funció des del ''OnClickListener'' del botó. Aquesta funció pot tenir qualsevol nom o fins-i-tot pots incrustar el codi dins el ''OnClickListener''+
-    * **''onActivityResult''** : aquesta funció de l'Activity rebrà les dades de la càmera. És obligat que es digui així la funció per poder ser cridada correctament. En aquesta funció és on hem de capturar el ''bitmap'' i mostrar-lo a la ''ImageView''.+
 </WRAP> </WRAP>
- 
-<WRAP todo> 
-Persistència del //thumbnail//: 
-  * Amb el ''Bitmap'' que ens retorna l'aplicació, enregistra la foto al sistema d'arxius. 
-    * Crea un ''File'' sobre l'àrea interna d'emmagatzemament amb [[https://developer.android.com/reference/android/content/Context#getFilesDir()|Context.getFilesDir()]] (llegeix mes avall). 
-    * Obre un ''FileOutputStream'' sobre el fitxer. 
-    * Utilitza ''Bitmap.compress'' per volcar el contingut del //thumbnail// sobre el fitxer. 
-  * Utilitza el [[https://developer.android.com/studio/debug/device-file-explorer|Device File Explorer]] per visualitzar si el teu arxiu s'ha creat correctament (recorda prémer "actualitzar" abans de comprovar-ho). 
-  * Recupera la imatge sobre el ''ImageView'' quan iniciem l'aplicació de nou. 
-    * La forma més simple és amb la funció ''ImageView.setImageURI'' i assignar-li la Uri de l'arxiu. 
-</WRAP> 
- 
-\\ 
- 
  
android_imatges.1665398227.txt.gz · Darrera modificació: 2022/10/10 10:37 per enrique_mieza_sanchez