Kamera-Intents

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

Foto mit einer Kamera-App aufnehmen

Unter Android werden Aktionen an andere Anwendungen delegiert, indem ein Intent aufgerufen wird. Dieser Prozess umfasst drei Teile: die Intent selbst, einen Aufruf zum Starten der externen Activity und Code zum Verarbeiten der Bilddaten, wenn der Fokus auf Ihre Aktivität zurückkehrt.

Hier ist eine Funktion, die eine 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() ist durch eine Bedingung geschützt, die resolveActivity() aufruft. Diese Methode gibt die erste Aktivitätskomponente zurück, die die Intent verarbeiten kann. Führen Sie diese Prüfung durch, um sicherzustellen, dass Sie eine Intent aufrufen, die Ihre App nicht zum Absturz bringt.

Zusätzliche Ressourcen

Verwenden Sie für grundlegende Kameraaktionen ein Intent. Andernfalls empfiehlt es sich, für alles, was über die einfache Aufnahme von Bildern oder Videos hinausgeht, die Camera2- und CameraX-Bibliotheken zu verwenden.