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_camera [2024/12/09 15:26] enric_mieza_sanchez [Foto full-size i FileProvider : donant accés a l'espai privat] |
android_camera [2024/12/16 15:53] (actual) enric_mieza_sanchez [Tutorial Kotlin] |
||
---|---|---|---|
Línia 133: | Línia 133: | ||
- Utilitza també les funcions d' | - Utilitza també les funcions d' | ||
- Transforma el '' | - Transforma el '' | ||
- | - Llançar el '' | + | - Llançar el '' |
- | // creem arxiu | + | // creem arxiu on volem guardar la imatge |
- | | + | |
- | // li donem permisos amb FileProvider pq pugui escriure l'app camera | + | ).toString() + "/tmpImg.jpg" |
- | | + | File photoFile = new File( filePath |
- | "com.example.android.fileprovider", | + | // li donem permisos amb FileProvider pq hi pugui escriure l'app camera |
- | photoFile); | + | |
+ | // igual que la que heu d' | ||
+ | | ||
+ | "com.enricmieza.gallery25.fileprovider", | ||
+ | photoFile); | ||
// Create Intent | // Create Intent | ||
Línia 147: | Línia 151: | ||
cameraResultLauncher.launch(intent); | cameraResultLauncher.launch(intent); | ||
</ | </ | ||
- | - Quan rebem el resultat a la callback '' | + | - Quan rebem el resultat a la callback '' |
+ | @Override | ||
+ | public void onActivityResult(ActivityResult result) { | ||
+ | if (result.getResultCode() == AppCompatActivity.RESULT_OK) { | ||
+ | // display foto | ||
+ | ImageView imageView = findViewById(R.id.imageView); | ||
+ | Intent data = result.getData(); | ||
+ | Bundle extras = data.getExtras(); | ||
+ | // si ve un bitmap, pinto el bitmap | ||
+ | if( extras!=null ) { | ||
+ | Bitmap imageBitmap = (Bitmap) extras.get(" | ||
+ | imageView.setImageBitmap(imageBitmap); | ||
+ | return; | ||
+ | } else { | ||
+ | // si no em retorna res, agafo la photoURI | ||
+ | // que hem configurat pel FileProvider | ||
+ | if( photoURI!=null ) { | ||
+ | imageView.setImageURI(photoURI); | ||
+ | return; | ||
+ | } | ||
+ | Log.e(" | ||
+ | } | ||
+ | } | ||
+ | }</ | ||
<WRAP todo> | <WRAP todo> | ||
Línia 172: | Línia 199: | ||
===== Imatge de la càmera dins la nostra App ===== | ===== Imatge de la càmera dins la nostra App ===== | ||
+ | |||
+ | ==== Tutorial Java (medium.com) ==== | ||
Els objectes '' | Els objectes '' | ||
Línia 221: | Línia 250: | ||
</ | </ | ||
+ | \\ | ||
+ | |||
+ | ==== Tutorial Kotlin ==== | ||
+ | |||
+ | Podem seguir les [[https:// | ||
+ | |||
+ | Aquest tutorial empra [[https:// | ||
+ | |||
+ | I com no, no es pot seguir al peu de la lletra, cal adaptar algunes coses. En concret al pas 2 "Crear el projecte" | ||
+ | |||
+ | - Punt 1: les biblioteques de codi< | ||
+ | dependencies { | ||
+ | // ... | ||
+ | |||
+ | val camerax_version = " | ||
+ | implementation(" | ||
+ | implementation(" | ||
+ | implementation(" | ||
+ | implementation(" | ||
+ | implementation(" | ||
+ | implementation(" | ||
+ | }</ | ||
+ | - El punt 2 de les '' | ||
+ | compileOptions { | ||
+ | sourceCompatibility = JavaVersion.VERSION_11 | ||
+ | targetCompatibility = JavaVersion.VERSION_11 | ||
+ | } | ||
+ | </ | ||
+ | - El punt 3 queda així< | ||
+ | buildFeatures { | ||
+ | viewBinding = true | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | La resta queda igual. Cal anar amb compte de llegir bé els passos i entendre' | ||
+ | |||
+ | <WRAP todo> | ||
+ | Implementa el [[https:// | ||
+ | |||
+ | Redueix la '' | ||
+ | |||
+ | {{ android: | ||
+ | |||
+ | |||
+ | </ | ||
\\ | \\ |