Wenn Sie grundlegende Kameraaktionen ausführen möchten, z. B. ein Foto oder Video mit der Standardkamera-App des Geräts aufnehmen, müssen Sie keine Kameraya-Bibliothek einbinden. Verwenden Sie stattdessen Intent
.
Fotos mit einer Kamera-App aufnehmen
Android delegiert Aktionen an andere Anwendungen, indem eine Intent
aufgerufen wird. Dieser Vorgang 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.
Die folgende Funktion ruft eine Intent
auf, 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 } }
Mit einer Kamera-App ein Video aufnehmen
Sie können auch 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()
ist durch eine Bedingung geschützt, die resolveActivity()
aufruft. Diese Methode gibt die erste Aktivitätskomponente zurück, die die Intent
verarbeiten kann. Führe diese Prüfung durch, um sicherzugehen, dass ein Intent
aufgerufen wird, der deine App nicht abstürzt.
Zusätzliche Ressourcen
Verwenden Sie für grundlegende Kameraaktionen ein Intent
. Andernfalls empfehlen wir die Verwendung der Camera2- und CameraX-Bibliotheken für komplexere Aufgaben als für die einfache Bild- oder Videoaufnahme.