Per eseguire azioni di base della fotocamera, come l'acquisizione di una foto o di un video utilizzando l'applicazione fotocamera predefinita del dispositivo, non è necessario eseguire l'integrazione con una libreria Camera. Utilizza invece un Intent.
Scatta una foto con un'app Fotocamera
Android delega le azioni ad altre applicazioni richiamando un Intent. Questo processo prevede tre parti: l'Intent stessa, una chiamata per avviare l'Activity esterna e un codice per gestire i dati dell'immagine quando lo stato attivo torna alla tua attività.
Ecco una funzione che richiama un Intent per scattare una foto.
Kotlin
val REQUEST_IMAGE_CAPTURE = 1
private fun dispatchTakePictureIntent() {
val takePictureIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
try {
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE)
} catch (e: ActivityNotFoundException) {
// display error state to the user
}
}
Java
static final int REQUEST_IMAGE_CAPTURE = 1;
private void dispatchTakePictureIntent() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
try {
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
} catch (ActivityNotFoundException e) {
// display error state to the user
}
}
Registra un video con un'app Fotocamera
Puoi anche richiamare un Intent per acquisire un video.
Kotlin
val REQUEST_VIDEO_CAPTURE = 1
private fun dispatchTakeVideoIntent() {
Intent(MediaStore.ACTION_VIDEO_CAPTURE).also { takeVideoIntent ->
takeVideoIntent.resolveActivity(packageManager)?.also {
startActivityForResult(takeVideoIntent, REQUEST_VIDEO_CAPTURE)
} ?: run {
//display error state to the user
}
}
}
Java
static final int REQUEST_VIDEO_CAPTURE = 1;
private void dispatchTakeVideoIntent() {
Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
if (takeVideoIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(takeVideoIntent, REQUEST_VIDEO_CAPTURE);
}
else {
//display error state to the user
}
}
Il metodo startActivityForResult() è protetto da una condizione che chiama
resolveActivity(), che restituisce il primo componente dell'attività in grado di gestire
Intent. Esegui questo controllo per assicurarti di richiamare un Intent
che non causi l'arresto anomalo dell'app.
Risorse aggiuntive
Per le azioni di base della videocamera, utilizza un Intent. In caso contrario, ti consigliamo di utilizzare le librerie Camera2 e CameraX per qualsiasi operazione più complessa dell'acquisizione di immagini o video di base.