Wenn du grundlegende Kameraaktionen wie das Aufnehmen eines Fotos oder Videos mit der Standard-Kamera-App des Geräts ausführen möchtest, musst du keine Kamera-Bibliothek einbinden. Verwenden Sie stattdessen ein Intent.
Fotos mit einer Kamera App aufnehmen
Android delegiert Aktionen an andere Anwendungen, indem es einen Intent aufruft. Dieser Prozess umfasst drei Teile: die Intent selbst, einen Aufruf zum Starten der externen Activity und Code zum Verarbeiten der Bilddaten, wenn der Fokus wieder auf Ihre Aktivität gerichtet wird.
Hier ist eine Funktion, die einen Intent aufruft, um ein Foto aufzunehmen.
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
}
}
Video mit einer Kamera-App aufnehmen
Sie können auch einen Intent aufrufen, um ein Video aufzunehmen.
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
}
}
Die Methode startActivityForResult() wird durch eine Bedingung geschützt, die resolveActivity() aufruft. Dadurch wird die erste Aktivitätskomponente zurückgegeben, die die Intent verarbeiten kann. Führen Sie diese Prüfung durch, um sicherzustellen, dass Sie eine Intent aufrufen, die Ihre Anwendung nicht zum Absturz bringt.
Zusätzliche Ressourcen
Verwende für grundlegende Kameraaktionen ein Intent. Andernfalls wird empfohlen, die Camera2- und CameraX-Bibliotheken für alles zu verwenden, was über die einfache Bild- oder Videoaufnahme hinausgeht.