Kamera-Intents

Für grundlegende Kameraaktionen wie das Aufnehmen von Fotos oder Videos mit der Standard-Kamera-App des Geräts ist keine Integration in eine Kamerabibliothek erforderlich. Verwenden Sie stattdessen Intent.

Fotos mit einer Kamera-App aufnehmen

Android delegiert Aktionen an andere Anwendungen, indem ein Intent aufgerufen wird. Dieser Prozess besteht aus drei Teilen: dem Intent selbst, einem Aufruf zum Starten des externen Activity und etwas Code zum Verarbeiten der Bilddaten, wenn der Fokus auf Ihre Aktivität zurückkehrt.

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() wird durch eine Bedingung geschützt, die resolveActivity() aufruft. Diese gibt die erste Aktivitätskomponente zurück, die die Intent verarbeiten kann. Führe diese Prüfung durch, um sicherzustellen, dass ein Intent aufgerufen wird, der deine App nicht abstürzt.

Zusätzliche Ressourcen

Verwende 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.