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 | ||
|
android_multimedia [2025/12/10 16:27] enric_mieza_sanchez [Foto full-size i FileProvider : donant accés a l'espai privat] |
android_multimedia [2025/12/10 20:16] (actual) enric_mieza_sanchez [Exercicis] |
||
|---|---|---|---|
| Línia 3: | Línia 3: | ||
| Per multimèdia s' | Per multimèdia s' | ||
| - | {{ android: | + | {{ android: |
| Tot el relacionat amb sensors és susceptible d' | Tot el relacionat amb sensors és susceptible d' | ||
| Línia 88: | Línia 88: | ||
| Per a realitzar la foto // | Per a realitzar la foto // | ||
| - | - Afegir un ariu '' | + | - Afegir un arxiu '' |
| - Declarar el '' | - Declarar el '' | ||
| - Al codi de l''' | - Al codi de l''' | ||
| Línia 122: | Línia 122: | ||
| ==== Codi MainActivity.kt ==== | ==== Codi MainActivity.kt ==== | ||
| - | Preparació | + | Preparació |
| <code kotlin MainActivity.kt> | <code kotlin MainActivity.kt> | ||
| val photoButton = findViewById< | val photoButton = findViewById< | ||
| photoButton.setOnClickListener { | photoButton.setOnClickListener { | ||
| - | // Assegurem que existeix la carpeta de fotos (igual | + | // Assegurem que existeix la carpeta de fotos (igual |
| val carpeta = File(filesDir.toString()," | val carpeta = File(filesDir.toString()," | ||
| carpeta.mkdirs() | carpeta.mkdirs() | ||
| + | | ||
| // Preparem l' | // Preparem l' | ||
| val file = File(filesDir.toString()," | val file = File(filesDir.toString()," | ||
| fotoUri = FileProvider.getUriForFile(this, | fotoUri = FileProvider.getUriForFile(this, | ||
| - | | + | |
| + | |||
| + | // engeguem l'App Camera | ||
| takeFullPic.launch(fotoUri) | takeFullPic.launch(fotoUri) | ||
| } | } | ||
| </ | </ | ||
| + | I la // | ||
| + | |||
| + | <code kotlin MainActivity.kt> | ||
| + | val takeFullPic = registerForActivityResult( | ||
| + | ActivityResultContracts.TakePicture()) { success -> | ||
| + | if (success) { | ||
| + | // netejar imatge i pintar nova | ||
| + | imageView.setImageDrawable(null) | ||
| + | imageView.setImageURI(fotoUri) | ||
| + | } else { | ||
| + | // notifiquem error | ||
| + | Toast.makeText(this, | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| \\ | \\ | ||
| ===== Àrea privada i àrea compartida ===== | ===== Àrea privada i àrea compartida ===== | ||
| + | |||
| + | L' | ||
| + | |||
| + | L' | ||
| + | * Pictures | ||
| + | * Music | ||
| + | * Movies | ||
| + | * **Android/ | ||
| + | |||
| + | On '' | ||
| + | |||
| + | Els directoris on s' | ||
| + | |||
| + | ^ ^ Funció d' | ||
| + | | Arxius privats de l' | ||
| + | | Arxius compartits de l'app | getExternalFilesDir( null ) | / | ||
| + | | Arxius compartits de fotos | Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES ) | / | ||
| + | |||
| + | |||
| + | \\ | ||
| + | |||
| + | ==== Àrea compartida d' | ||
| + | |||
| + | Si volem fer servir l' | ||
| + | |||
| + | Al '' | ||
| + | <code xml file_paths.xml> | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | A '' | ||
| + | <code kotlin MainActivity.kt> | ||
| + | val carpeta = File(getExternalFilesDir(null).toString()," | ||
| + | ... | ||
| + | val file = File(getExternalFilesDir(null).toString()," | ||
| + | </ | ||
| + | |||
| + | Utilitzeu el **Device Explorer** del Android Studio per visualitzar les carpetes i arxius. | ||
| + | |||
| + | \\ | ||
| + | |||
| + | ==== Carpetes compartides generals públiques ==== | ||
| + | |||
| + | Si volem fer servir l' | ||
| + | |||
| + | Al '' | ||
| + | <code xml file_paths.xml> | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | A '' | ||
| + | Environment.DIRECTORY_PICTURES))'' | ||
| + | <code kotlin MainActivity.kt> | ||
| + | val carpeta = File(Environment.getExternalStoragePublicDirectory( | ||
| + | Environment.DIRECTORY_PICTURES).toString()," | ||
| + | ... | ||
| + | val file = File(Environment.getExternalStoragePublicDirectory( | ||
| + | Environment.DIRECTORY_PICTURES).toString()," | ||
| + | </ | ||
| \\ | \\ | ||
| ===== Exercicis ===== | ===== Exercicis ===== | ||
| + | |||
| + | <WRAP todo> | ||
| + | **Captura de fotos // | ||
| + | |||
| + | Implementa la captura de fotos // | ||
| + | </ | ||
| <WRAP todo> | <WRAP todo> | ||
| **Exercici MyGallery** | **Exercici MyGallery** | ||
| - | Implementa | + | Implementa |
| + | |||
| + | Visualització | ||
| </ | </ | ||