bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


android_multimedia

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_multimedia [2025/12/10 16:32]
enric_mieza_sanchez [Codi MainActivity.kt]
android_multimedia [2025/12/10 20:16] (actual)
enric_mieza_sanchez [Exercicis]
Línia 3: Línia 3:
 Per multimèdia s'entenen els diferents mitjans que permeten a la persona humana percebre l'entorn. Els més destacats son la visió i la oïda, però també podrien incloure's el tacte, el gust i l'olfacte. I també la orientació, sabem si estem cap per avall mercès als canals semicirculars de la oïda (no és ni una brúixola ni un GPS però algo és algo). Per multimèdia s'entenen els diferents mitjans que permeten a la persona humana percebre l'entorn. Els més destacats son la visió i la oïda, però també podrien incloure's el tacte, el gust i l'olfacte. I també la orientació, sabem si estem cap per avall mercès als canals semicirculars de la oïda (no és ni una brúixola ni un GPS però algo és algo).
  
-{{ android:sunset-camera-musica.png?500 }}+{{ android:sunset-camera-musica.png?450 }}
  
 Tot el relacionat amb sensors és susceptible d'entrar en aquesta categoria, però per raons d'extensió ens centrarem en: Tot el relacionat amb sensors és susceptible d'entrar en aquesta categoria, però per raons d'extensió ens centrarem en:
Línia 88: Línia 88:
  
 Per a realitzar la foto //full-size// i guardar-la a l'espai privat caldrà: Per a realitzar la foto //full-size// i guardar-la a l'espai privat caldrà:
-  - Afegir un ariu ''res/xml/file_paths.xml'' on s'indiquen carpetes i arxius compartibles.+  - Afegir un arxiu ''res/xml/file_paths.xml'' on s'indiquen carpetes i arxius compartibles.
   - Declarar el ''FileProvider'' al ''AndroidManifest.xml''.   - Declarar el ''FileProvider'' al ''AndroidManifest.xml''.
   - Al codi de l'''Activity'' transformar el ''File'' estàndard a ''Uri'' (recurs compartible) amb el ''FileProvider''.   - Al codi de l'''Activity'' transformar el ''File'' estàndard a ''Uri'' (recurs compartible) amb el ''FileProvider''.
Línia 122: Línia 122:
 ==== Codi MainActivity.kt ==== ==== Codi MainActivity.kt ====
  
-Preparació del recurs compartit+Preparació del recurs compartit i inici de l'App Camera:
  
 <code kotlin MainActivity.kt> <code kotlin MainActivity.kt>
Línia 136: Línia 136:
               "com.enric.galleryk2.fileprovider",file)               "com.enric.galleryk2.fileprovider",file)
          
-    // engegue l'App Camera+    // engeguem l'App Camera
     takeFullPic.launch(fotoUri)     takeFullPic.launch(fotoUri)
 } }
Línia 160: Línia 160:
  
 ===== Àrea privada i àrea compartida ===== ===== Àrea privada i àrea compartida =====
 +
 +L'exemple anterior s'ha fet compartint un arxiu a la carpeta "fotos" de l'**espai privat de l'aplicació**, que està a ''/data/data/{AppId}/files''.
 +
 +L'**àrea compartida** d'arxius està a ''/storage/emulated/0'' on trobarem carpetes conegudes com:
 +  * Pictures
 +  * Music
 +  * Movies
 +  * **Android/data/{AppId}** : aquesta és l'**àrea compartida d'aplicació** (Android 10+)
 +
 +On ''{AppId}'' és l'identificador d'aplicació corresponent al //package//, per exemple ''com.ieti.multimedia''
 +
 +Els directoris on s'emmagatzema la info son diferents:
 +
 +^  ^ Funció d'accés ^ Directori ^ XML ^
 +| Arxius privats de l'app    | filesDir | /data/data/{AppId}/files | files-path |
 +| Arxius compartits de l'app | getExternalFilesDir( null ) | /storage/emulated/0/Android/data/{AppId}/files | external-files-path |
 +| Arxius compartits de fotos | Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES ) | /storage/emulated/0/Pictures/ | external-path |
 +
 +
 +\\
 +
 +==== Àrea compartida d'aplicació ====
 +
 +Si volem fer servir l'àrea compartida de l'aplicació, caldrà fer algunes modificacions.
 +
 +Al ''file_paths.xml'' caldrà emprar ''external-files-path'' enlloc de ''files-path'':
 +<code xml file_paths.xml>
 +<external-files-path name="my_images" path="fotos" />
 +</code>
 +
 +A ''MainActivity.kt'' caldrà emprar ''getExternalFilesDir(...)'' enlloc de ''filesDir''. Amb el paràmetre //null// ens escriurà en la carpeta compartida d'aplicacions.
 +<code kotlin MainActivity.kt>
 +val carpeta = File(getExternalFilesDir(null).toString(),"fotos")
 +...
 +val file = File(getExternalFilesDir(null).toString(),"fotos/tmpimage.jpg")
 +</code>
 +
 +Utilitzeu el **Device Explorer** del Android Studio per visualitzar les carpetes i arxius.
 +
 +\\
 +
 +==== Carpetes compartides generals públiques ====
 +
 +Si volem fer servir l'àrea compartida de l'aplicació, caldrà fer algunes modificacions.
 +
 +Al ''file_paths.xml'' caldrà emprar ''external-path'' enlloc de ''files-path'' o ''external-files-path'' que hem emprat anteriorment:
 +<code xml file_paths.xml>
 +<external-path name="my_images" path="Pictures" />
 +</code>
 +
 +A ''MainActivity.kt'' caldrà emprar ''Environment.getExternalStoragePublicDirectory(
 +                Environment.DIRECTORY_PICTURES))'' :
 +<code kotlin MainActivity.kt>
 +val carpeta = File(Environment.getExternalStoragePublicDirectory(
 +    Environment.DIRECTORY_PICTURES).toString(),"fotos")
 +...
 +val file = File(Environment.getExternalStoragePublicDirectory(
 +    Environment.DIRECTORY_PICTURES).toString(),"fotos/tmpimage.jpg")
 +</code>
  
 \\ \\
  
 ===== Exercicis ===== ===== Exercicis =====
 +
 +<WRAP todo>
 +**Captura de fotos //full-size//**
 +
 +Implementa la captura de fotos //full-size// en l'app de la galeria i el thumb, afegint un nou botó per la captura actual.
 +</WRAP>
  
 <WRAP todo> <WRAP todo>
 **Exercici MyGallery** **Exercici MyGallery**
  
-Implementa la visualització de les fotos que anem prenent en l'àrea compartida de l'aplicació. Segueix les instruccions a l'article [[Android RecyclerView]] per visualitzar les fotos amb una //preview// en format //grid//.+Implementa una app de captura de fotos i conserva tots els arxius amb un nom que eviti col·lisions, com afegir un //timestamp//
 + 
 +Visualització les fotos que anem prenent en l'àrea compartida de l'aplicació i visualitza-les en una nova ''Activity''. Segueix les instruccions a l'article [[Android RecyclerView]] per visualitzar les fotos amb una //preview// en format //grid//.
  
 </WRAP> </WRAP>
android_multimedia.1765384352.txt.gz · Darrera modificació: 2025/12/10 16:32 per enric_mieza_sanchez