bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


android_galeria

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_galeria [2025/12/03 09:45]
enric_mieza_sanchez [Media Gallery en Android]
android_galeria [2025/12/03 11:50] (actual)
enric_mieza_sanchez [Codi llarg]
Línia 1: Línia 1:
 ====== Media Gallery en Android ====== ====== Media Gallery en Android ======
  
-L'accés a la galeria multimèdia té la dificultat d'haver de demanar permisos per accedir als arxius compartits+Farem una aplicació per accedir als arxius multimèdia del dispositiu, una foto en aquest cas, i mostrar-la dins la nostra app en un ''ImageView''
-  * Permisos estàtics a l'''AndroidManifest.xml'' + 
-  Permisos dinàmics dins el nostre codi per accedir la galeria de fotos compartida.+{{android:android-gallery0.png?200}} 
 +{{android:android-gallery1.png?200}} 
 + 
 +L'accés a la galeria multimèdia haurà de demanar permisos per accedir als arxius compartits. Inicialment es feia amb permisos estàtics a l'''AndroidManifest.xml'' però des de Android 6+ (API 23+) es fa amb **permisos dinàmics** dins el nostre codi per accedir la galeria de fotos compartida.
  
 {{tag> #Dam #DamMp08 #DamMp08Uf2 #DamMp08Uf02 Android mobile java }} {{tag> #Dam #DamMp08 #DamMp08Uf2 #DamMp08Uf02 Android mobile java }}
Línia 9: Línia 12:
 \\ \\
  
 +===== Passes prèvies =====
  
-===== Codi Kotlin =====+Necessitem algunes fotos dins el dispositiu de l'emulador quan treballem amb Android Studio. Ves a l'aplicació de fotos i fes algunes perquè el carret de la càmera tingui alguns exemples. 
 + 
 +Per simular la captura de fotos podem ajustar les càmeres frontal i interna amb diverses opcions: 
 +  * **Virtual Scene**: escena 3D (l'habitació amb el gat, el gos, la TV i la cuina). Ets pots moure dins l'estança i apuntar en diferents llocs. 
 +  * **Emulated**: un dibuix ultrapixelat molt bàsic. 
 +  * **Webcam**: enllaç a la càmera real del dispositiu (si estàs en un PC, la webcam). 
 + 
 + 
 +IMPORTANT: 
 + 
 +Haurem de crear un ''Button'' i un ''ImageView'' al //layout// de ''activity_main.xml''
 + 
 +\\ 
 + 
 +===== Codi curt ===== 
 + 
 +Mireu el [[https://developer.android.com/training/basics/intents/result#launch|codi "Launch an Activity for result" de la documentació oficial d'Android]]. És així de curt perquè hi ha moltes coses implícites com deixar que el sistema operatiu demani els permisos a l'usuari  
 + 
 +Caldrà afegir l'acció de la //callback// on diu "Handle the returned Uri", i aplicar la imatge que ens arriba en forma de Uri al ''ImageView'' que tinguem. 
 + 
 +\\ 
 + 
 +===== Codi llarg ===== 
 + 
 +Qui vol un codi llarg? Doncs per quan volem particularitzar coses més explícites. 
 + 
 +O perquè no he sabut trobar el codi curt abans ;) 
 + 
 +--> Codi llarg per a accés a la Galeria d'Imatges
  
 Cal declarar els permisos adequats al ''AndroidManifest.xml'': Cal declarar els permisos adequats al ''AndroidManifest.xml'':
Línia 17: Línia 49:
 </code> </code>
  
-També haurem de crear un ''Button'' i un ''ImageView'' al //layout// de ''activity_main.xml''+El codi de ''MainActivity'':
- +
-I finalment el codi de ''MainActivity'':+
  
 <code kotlin MainActivity.kt> <code kotlin MainActivity.kt>
Línia 70: Línia 100:
                 imageView.setImageURI(selectedImageUri)                 imageView.setImageURI(selectedImageUri)
             } else {             } else {
-                Toast.makeText(this,"No s'ha pogut carregar la imatge.", Toast.LENGTH_SHORT).show()+                Toast.makeText( 
 +                    this, "No s'ha pogut carregar la imatge.", 
 +                    Toast.LENGTH_SHORT).show()
             }             }
         }         }
Línia 76: Línia 108:
  
     private fun checkAndRequestPermission() {     private fun checkAndRequestPermission() {
 +        // Aquesta línia ens obliga a indicar permisos al AndroidManifest.xml
         val permission = android.Manifest.permission.READ_MEDIA_IMAGES         val permission = android.Manifest.permission.READ_MEDIA_IMAGES
  
         if (ContextCompat.checkSelfPermission(         if (ContextCompat.checkSelfPermission(
-                this, +            this,permission) == PackageManager.PERMISSION_GRANTED) 
-                permission +        {
-            ) == PackageManager.PERMISSION_GRANTED +
-        {+
             // Permís ja concedit             // Permís ja concedit
             openGallery()             openGallery()
Línia 103: Línia 134:
 </code> </code>
  
 +<--
android_galeria.1764755138.txt.gz · Darrera modificació: 2025/12/03 09:45 per enric_mieza_sanchez