Pour effectuer des actions de base sur l'appareil photo, comme prendre une photo ou enregistrer une vidéo à l'aide de l'application Appareil photo par défaut de l'appareil, vous n'avez pas besoin d'effectuer d'intégration avec une bibliothèque d'appareils photo. Utilisez plutôt un Intent
.
Prendre une photo avec une application Appareil photo
Android délègue des actions à d'autres applications en appelant un Intent
. Ce processus est composé de trois parties : l'Intent
lui-même, un appel pour démarrer l'Activity
externe et un code pour gérer les données d'image lorsque votre activité revient au premier plan.
Voici une fonction qui appelle un Intent
pour prendre une photo.
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 } }
Enregistrer une vidéo avec une application Appareil photo
Vous pouvez également appeler un Intent
pour enregistrer une vidéo.
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 } }
La méthode startActivityForResult()
est protégée par une condition appelant resolveActivity()
, qui renvoie le premier composant d'activité capable de gérer l'Intent
. Effectuez cette vérification pour vous assurer que vous appelez un Intent
qui n'entraînera pas le plantage de votre application.
Ressources supplémentaires
Pour les actions de base sur l'appareil photo, utilisez un Intent
. Sinon, nous vous recommandons d'utiliser les bibliothèques Camera2 et CameraX pour les opérations plus complexes que la capture d'images ou l'enregistrement de vidéos de base.
- Package d'appareil photo CameraX
- Package d'appareil photo Camera2
- Exemples de projets d'appareil photo