フロントカメラのみを開く必要があるアプリを作成したいのですが、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);
その他/代替ソリューション
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;
}
これらの権限をAndroidManifest.xml
ファイルに追加します
<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" />
Gingerbread(2.3)以降でのみ使用できますAndroid Version。
そうでなければ、これらの例を確認することもできます
お役に立てば幸いです。
Intent
を使用して、標準のAndroidカメラアプリケーションを開きます。
決して使用しない_Android.intent.extras.CAMERA_FACING
_プロパティ-これは文書化されていない機能であり、動作を停止しましたAndroidバージョンの一部から開始。
前面カメラを開くには、カメラAPIを使用する必要があります-前面カメラの選択、ビューでのプレビューの表示、手動での写真の撮影などを行います。 @skydroidの回答は、フロントカメラを見つける方法を示しています。 Camera.open()
はユーザーのカメラを期待どおりに開かないことに注意してください。手動でプレビューを表示する必要があります。
また、APIレベル21であるため、Camera APIは非推奨となっており、ドキュメントでは Camera 2 API の使用を推奨しています。ただし、Camera APIは完全に機能し続け、古いバージョン(APIレベル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);