Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
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 [2021/10/20 10:30] enrique_mieza_sanchez [Exercici: captura bàsica d'imatge amb miniatura] |
android_imatges [2022/12/12 15:56] enric_mieza_sanchez [Us de la càmera] |
||
---|---|---|---|
Línia 8: | Línia 8: | ||
* Article [[Android]] a bytes.cat | * Article [[Android]] a bytes.cat | ||
* [[https:// | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
Línia 13: | Línia 15: | ||
===== Us de la càmera ===== | ===== Us de la càmera ===== | ||
- | Aquest [[https:// | + | Aquest [[https:// |
- | < | + | < |
- | ULL! Mira el [[https:// | + | ULL! El [[https:// |
- | Hauràs de canviar manualment l' | + | El tutorial utilitza |
</ | </ | ||
- | 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 '' | + | <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 | ||
+ | </WRAP> | ||
+ | |||
+ | |||
+ | El [[https://developer.android.com/training/ | ||
{{ android-camera-intent.jpg? | {{ android-camera-intent.jpg? | ||
Línia 53: | Línia 60: | ||
Persistència del // | Persistència del // | ||
* Amb el '' | * Amb el '' | ||
- | * Crea un '' | + | * Crea un '' |
* Obre un '' | * Obre un '' | ||
* Utilitza '' | * Utilitza '' | ||
- | * Utilitza el **Android | + | * Utilitza el [[https:// |
* Recupera la imatge sobre el '' | * Recupera la imatge sobre el '' | ||
* La forma més simple és amb la funció '' | * La forma més simple és amb la funció '' | ||
Línia 63: | Línia 70: | ||
\\ | \\ | ||
- | ===== Persistència | + | ===== Emmagatzematge Android ====== |
- | Segons [[https:// | + | <WRAP tip> |
- | - **Preferències compartides**: | + | Hi ha diverses formes |
- | - **Emmagatzematge Intern**: es guarda arxiu en la memòria interna del dispositiu, no es pot compartir entre aplicacions per seguretat. | + | |
- | * Els arxius es guarden a ''/ | + | |
- | - **Emmagatzematge " | + | |
- | * Els arxius es guarden a ''/ | + | |
- | - **BBDD SQLite** | + | |
- | - Connexió de xarxa (guardar en un servidor d' | + | |
+ | Llegeix [[Android persistència]] per saber més. | ||
+ | </ | ||
\\ | \\ | ||
- | ===== Emmagatzematge intern | + | ===== Exercici: fotos full-size a l' |
- | És el més segur ja que no es pot compartir entre aplicacions. La seguretat es manté sempre i quan no es faci //root// el dispositiu. | + | |
- | + | ||
- | L' | + | |
- | * [[https:// | + | |
- | * [[https:// | + | |
<WRAP todo> | <WRAP todo> | ||
- | App de testeig per visualitzar els arxius i les carpetes d' | + | Seguirem el [[https:// |
- | * Crea una nova aplicació amb un botó. | + | |
- | * Utilitza la funció | + | |
- | * Escriu-hi una línia | + | |
- | * Controla que tingui el seu '' | + | |
- | * Utilitza el **Device File Manager** | + | |
- | </ | + | |
- | \\ | + | Modifica l' |
- | ===== Emmagatzematge compartit ===== | + | * Fes un //commit// amb // |
- | Si utilitzem aquest espai, guardarem l' | + | * Per activar que la càmera faci l'enregistrament |
- | + | * Caldrà utilitzar | |
- | Dins de l' | + | * 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. |
- | * **Zona de l'aplicació** | + | * Per tal que el codi anterior no peti caldrà que comentis o eliminis el què tens a '' |
- | * Ubicat a '' | + | * Visualitza |
- | * Dins d'aquesta hi ha també un seguit de carpetes específiques per a Pictures, Music, etc. | + | |
- | * Podem accedir a l'arrel i crear les carpetes que creiem necessàries. | + | |
- | * No requereix permisos d'accés. | + | |
- | * **Zona compartida de '' | + | |
- | * Ubicat a '' | + | |
- | * Hi ha carpetes específiques | + | |
- | * S'hi accedeix mitjançant | + | |
- | * Requereix permisos d'accés READ_EXTERNAL_STORAGE i/o WRITE_EXTERNAL_STORAGE. | + | |
- | + | ||
- | En cas d'utilitzar emmagatzematge compartit caldrà declarar al '' | + | |
- | <sxh xml> | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | ... | + | |
- | </manifest> | + | |
- | </sxh> | + | |
- | + | ||
- | <WRAP tip> | + | |
- | Des de la API 18 en endavant (Android 4.4 KitKat) ja no cal demanar | + | |
- | + | ||
- | Si volem accedir | + | |
</ | </ | ||
- | |||
- | Als objectes [[https:// | ||
- | * [[https:// | ||
- | * [[https:// | ||
- | |||
- | A totes dues funcions cal especificar-les a quina de les diferents carpetes volem emmagatzemar-ho. Els valors s' | ||
- | |||
- | |||
- | ==== Exercici: fotos full-size a l' | ||
- | |||
- | Seguirem el [[https:// | ||
<WRAP todo> | <WRAP todo> | ||
- | Modifica l' | + | Ajusta el tamany |
- | * Fes un //commit// amb //tag// (per després fer una // | + | |
- | * Per activar que la càmera faci l'enregistrament // | + | |
- | * Caldrà utilitzar '' | + | |
- | * | + | |
- | </ | + | |
- | \\ | + | * Pots seguir les indicacions a la [[https://developer.android.com/ |
- | + | | |
- | ===== Treballant amb XML i altres ===== | + | |
- | + | ||
- | És pràctic utilitzar arxius XML per separar els camps de forma llegible. Hi ha diverses llibreries per llegir XML amb Java: | + | |
- | - [[https://stackoverflow.com/ | + | |
- | - Aquest article en castellà explica força bé com [[http://jmoral.es/blog/ | + | |
- | | + | |
- | | + | |
- | + | ||
- | \\ | + | |
- | + | ||
- | ===== Exercicis ===== | + | |
- | + | ||
- | Continuació de l' | + | |
- | + | ||
- | <WRAP todo> | + | |
- | Continuant amb l' | + | |
- | - Després | + | |
- | - Capturem la imatge i la enregistrem a disc amb un nom aleatori o seqüencial. | + | |
- | - Assignem | + | |
- | | + | |
- | - Modifiquem adequadament el //adapter// per aconseguir que ens agafi la imatge de disc i la assigni a la '' | + | |
</ | </ | ||
\\ | \\ | ||
- | |||
- | En el cas que no estiguis desenvolupant l'app " | ||
- | |||
- | <WRAP todo> | ||
- | * Implementa una '' | ||
- | * Modifica el '' | ||
- | * Afegeix un botó per capturar imatges i enregistrar-les amb diferents noms. Cada cop que enregistris una d' | ||
- | * Actualitza la //view// de manera que es visualitzin els canvis. | ||
- | </ | ||