Comment ouvrir la caméra frontale en utilisant Intent dans Android?
Je veux créer une application dans laquelle je dois ouvrir uniquement la caméra frontale, comment puis-je le faire en utilisant intent
?
private void captureImage() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
intent.putExtra("Android.intent.extras.CAMERA_FACING", 1);
// start the image capture Intent
startActivityForResult(intent, CAMERA_CAPTURE_IMAGE_REQUEST_CODE);
}
Java
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Uri photoUri = Uri.fromFile(getOutputPhotoFile());
intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
intent.putExtra("Android.intent.extras.CAMERA_FACING", 1);
startActivityForResult(intent, CAMERA_PHOTO_REQUEST_CODE);
Autre solution/alternative
private Camera openFrontFacingCameraGingerbread() {
int cameraCount = 0;
Camera cam = null;
Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
cameraCount = Camera.getNumberOfCameras();
for (int camIdx = 0; camIdx < cameraCount; camIdx++) {
Camera.getCameraInfo(camIdx, cameraInfo);
if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
try {
cam = Camera.open(camIdx);
} catch (RuntimeException e) {
Log.e(TAG, "Camera failed to open: " + e.toString());
}
}
}
return cam;
}
ajoutez ces autorisations dans le AndroidManifest.xml
fichier
<uses-permission Android:name="Android.permission.CAMERA" />
<uses-feature Android:name="Android.hardware.camera" Android:required="false" />
<uses-feature Android:name="Android.hardware.camera.front" Android:required="false" />
uniquement disponible dans Gingerbread (2.3) et Up Android Version.
sinon vous pouvez également vérifier ces exemples
j'espère que cela vous aide ..
Standard Android Appareil photo
En utilisant Intent
, vous ouvrez l'application standard Android appareil photo.
N'utilisez jamais la propriété Android.intent.extras.CAMERA_FACING
- il s'agit d'une fonctionnalité non documentée qui a cessé de fonctionner à partir de certaines des versions Android Android.
API de la caméra
Pour ouvrir une caméra frontale, vous devez utiliser l'API Camera - faire des choses comme choisir la caméra frontale, afficher un aperçu dans une vue et prendre des photos manuellement. La réponse de @skydroid montre comment trouver la caméra frontale. Notez que Camera.open()
n'ouvre pas de caméra pour l'utilisateur comme vous pouvez vous y attendre, vous devez afficher manuellement l'aperçu.
Notez également que, depuis API niveau 21 l'API Camera est déconseillée et les documents recommandent d'utiliser API Camera 2 à la place. Mais l'API Camera reste entièrement fonctionnelle et vous n'avez pas d'autre choix si vous souhaitez également prendre en charge les anciennes versions (<API niveau 21).
try this:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra("Android.intent.extras.CAMERA_FACING", 1);
File outPutFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + Util.SD_CARD_PATH);
if (!outPutFile.exists()) {
outPutFile.mkdirs();
}
capturedImageUri = Uri.fromFile(File.createTempFile("packagename" + System.currentTimeMillis(), ".jpg", outPutFile));
intent.putExtra(MediaStore.EXTRA_OUTPUT, capturedImageUri);
startActivityForResult(intent, Util.REQUEST_CAMERA);