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
Següent revisió Ambdós costats nova versio
android_imatges [2022/10/10 10:37]
enrique_mieza_sanchez
android_imatges [2022/12/12 15:56]
enric_mieza_sanchez [Us de la càmera]
Línia 15: Línia 15:
  
 ===== Us de la càmera ===== ===== 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.+Aquest [[https://developer.android.com/training/camerax/take-photo#java|article CameraX 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 info
-ULL! Mira el [[https://developer.android.com/training/camera/photobasics#java|tutorial "photobasics" d'Android]] **en anglès**La versió en castellà conté errors.+ULL! El [[https://developer.android.com/training/camera-deprecated/photobasics|codi anterior ha quedat obsolet (deprecated)]]. Si has de fer servir el mètode antic, tingues en compte que la pàgina en anglès funcionava bé, però la traducció a castellà tenia errors. Canvia l'idioma manualment a dalt a l'esquerra.
  
-Hauràs de canviar manualment l'idioma a dalt a la dreta.+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//).
 </WRAP> </WRAP>
  
-El tutorial utilitza la //app// Camera del sistema operatiuAixí, 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//).+<WRAP important> 
 +Segueix aquest [[https://medium.com/swlh/introduction-to-androids-camerax-with-java-ca384c522c5|tutorial a Medium.com de CameraX]] per fer una app mínima que accedeixi a la càmera i la mostri en un ''SurfaceView''
 +</WRAP> 
 + 
 + 
 +El [[https://developer.android.com/training/camerax/take-photo#java|tutorial oficial de CameraX d'Android]] està aquí però no acaba sent fàcil de seguir, particularment en Java (potser en Kotlin es deixa més).
  
 {{ android-camera-intent.jpg?direct&400 }} {{ android-camera-intent.jpg?direct&400 }}
Línia 65: Línia 70:
 \\ \\
  
 +===== Emmagatzematge Android ======
 +<WRAP tip>
 +Hi ha diverses formes d'emmagatzematge a Android. És un tema sensible per la seguretat de les dades.
 +
 +Llegeix [[Android persistència]] per saber més.
 +</WRAP>
 +\\
 +
 +===== Exercici: fotos full-size a l'àrea externa =====
 +
 +<WRAP todo>
 +Seguirem el [[https://developer.android.com/training/camera/photobasics#TaskPath|tutorial oficial de fotos d'Android a partir de la secció "Save full-size photo"]].
 +
 +Modifica l'aplicació de l'exercici anterior per aconseguir guardar la foto a //full-size//:
 +
 +  * Fes un //commit// amb //tag// (per després fer una //release//) al [[Git]] abans de continuar.
 +  * Per activar que la càmera faci l'enregistrament //full-size// caldrà que adjuntem la ''Uri'' del fitxer al ''Intent'' mitjançant un ''putExtra'' (fixa't en l'exemple).
 +  * Caldrà utilitzar ''FileProvider'' per autoritzar a l'//app// Camera a utilitzar els arxius de la nostra //app// (sigui a l'àrea externa o interna).
 +  * De moment no facis un nom d'arxiu dinàmic (amb data i hora, com es fa a l'exemple). Un nom fixe ens serveix per aquesta mini-app.
 +  * Per tal que el codi anterior no peti caldrà que comentis o eliminis el què tens a ''onActivityResult'' ja que ja no ens arribarà cap //thumbnail// o miniatura.
 +  * Visualitza el resultat de la foto. Quin problema tenim?
 +</WRAP>
 +
 +<WRAP todo>
 +Ajusta el tamany de la foto a la ''ImageView'' per fer que càpiga dins l'àrea marcada al //layout//.
 +
 +  * Pots seguir les indicacions a la [[https://developer.android.com/training/camera/photobasics#TaskScalePhoto|secció "Decode a scaled image"]] del propi tutorial "photobasics".
 +  * Probablement el codi per ajustar i mostrar la foto et peti si està al ''onCreate''. En primer lloc, perquè el primer cop no hi haurà imatge. El segon cop, petarà perquè durant el ''onCreate'' el valor de l'alçada i amplada del ''ImageView'' és zero. Per solventar-ho, [[https://stackoverflow.com/questions/19271609/imageview-getwidth-returns-0|aquest article proposa la solució]] d'actualitzar la imatge al mètode **''onWindowFocusChanged''** enlloc de fer-ho al ''onCreate'' (tampoc funciona al ''onStart'' ni al ''onResume'').
 +</WRAP>
 +
 +\\
  
android_imatges.txt · Darrera modificació: 2022/12/19 20:15 per enric_mieza_sanchez