Intents de câmera
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Para realizar ações básicas, como capturar uma foto ou um vídeo usando o app de câmera padrão do dispositivo, não é necessário fazer a integração com uma biblioteca de câmera. Em vez disso, use uma Intent
.
Tirar uma foto com um app de câmera
O Android delega ações a outros aplicativos invocando uma Intent
. Esse processo envolve três partes: a própria Intent
, uma chamada para iniciar a Activity
externa e um código para processar os dados da imagem quando o foco retorna à sua atividade.
Veja esta função que invoca uma Intent
para capturar uma foto.
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
}
}
Gravar um vídeo com um app de câmera
Também é possível invocar uma Intent
para capturar um vídeo.
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
}
}
O método startActivityForResult()
é protegido por uma condição que chama resolveActivity()
, que retorna o primeiro componente da atividade que pode processar a Intent
. Faça essa verificação para garantir que você está invocando uma Intent
que não vai causar uma falha no seu app.
Outros recursos
Para ações básicas da câmera, use uma Intent
. Caso contrário, recomendamos usar as bibliotecas Camera2 e CameraX para algo mais complexo do que a captura básica de imagem ou vídeo.
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-08-27 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-08-27 UTC."],[],[],null,["# Camera intents\n\nTo perform basic camera actions like capturing a photo or video using the device's default camera application, you do not need to integrate with a [Camera library](/training/camera/choose-camera-library). Instead, use an [`Intent`](https://developer.android.com/reference/android/content/Intent).\n\nTake a photo with a camera app\n------------------------------\n\nAndroid delegates actions to other applications by invoking an `Intent`. This process involves three pieces: the `Intent` itself, a call to start the external `Activity`, and some code to handle the image data when focus returns to your activity.\n\nHere's a function that invokes an `Intent` to capture a photo. \n\n### Kotlin\n\n```kotlin\nval REQUEST_IMAGE_CAPTURE = 1\n \nprivate fun dispatchTakePictureIntent() {\n val takePictureIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)\n try {\n startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE)\n } catch (e: ActivityNotFoundException) {\n // display error state to the user\n }\n}\n```\n\n### Java\n\n```java\nstatic final int REQUEST_IMAGE_CAPTURE = 1;\n \nprivate void dispatchTakePictureIntent() {\n Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);\n try {\n startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);\n } catch (ActivityNotFoundException e) {\n // display error state to the user\n }\n}\n```\n\nRecord a video with a camera app\n--------------------------------\n\nYou can also invoke an `Intent` to capture a video. \n\n### Kotlin\n\n```kotlin\nval REQUEST_VIDEO_CAPTURE = 1\n \nprivate fun dispatchTakeVideoIntent() {\n Intent(MediaStore.ACTION_VIDEO_CAPTURE).also { takeVideoIntent -\u003e\n takeVideoIntent.resolveActivity(packageManager)?.also {\n startActivityForResult(takeVideoIntent, REQUEST_VIDEO_CAPTURE)\n } ?: run {\n //display error state to the user\n }\n }\n}\n```\n\n### Java\n\n```java\nstatic final int REQUEST_VIDEO_CAPTURE = 1;\n \nprivate void dispatchTakeVideoIntent() {\n Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);\n if (takeVideoIntent.resolveActivity(getPackageManager()) != null) {\n startActivityForResult(takeVideoIntent, REQUEST_VIDEO_CAPTURE);\n }\n else {\n //display error state to the user\n }\n}\n```\n\nThe `startActivityForResult()` method is protected by a condition that calls `resolveActivity()`, which returns the first activity component that can handle the `Intent`. Perform this check to ensure that you are invoking an `Intent` that won't crash your app.\n\nAdditional Resources\n--------------------\n\nFor basic camera actions, use an `Intent`. Otherwise, it is recommended to use the Camera2 and CameraX libraries for anything more complex than basic image or video capture.\n\n- [CameraX camera package](https://developer.android.com/training/camerax)\n- [Camera2 camera package](https://developer.android.com/training/camera2)\n- [Camera sample projects](https://github.com/android/camera-samples)"]]