如何在Android中使用Camera Intent启动前置摄像头?

时间:2013-06-21 06:42:15

标签: android android-camera-intent

我正在开发一个应用程序,我想在按钮点击时打开前置摄像头(如果该设备上有前置摄像头)。

我已经使用了这个代码,它适用于具有OS 3.2.1的华硕平板电脑。但是相同的代码不适用于OS 4.2.1。

我想要适用于所有Android版本的代码。 请帮我解决这个问题。

以下是我的代码 -

Intent takePictureIntent = new Intent(
                MediaStore.ACTION_IMAGE_CAPTURE);

takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
                            Uri.fromFile(f));
                    Log.v("", "Camera Id-" + camId);

                    if (!TextUtils.isEmpty(camera)) {
                        if (camera.equalsIgnoreCase("Front")) {
                            Log.v("", "Inside if");
                            takePictureIntent.putExtra(
                                    "android.intent.extras.CAMERA_FACING",
                                    Camera.CameraInfo.CAMERA_FACING_FRONT);

                        } else {
                            Log.v("", "Inside else");
                            takePictureIntent.putExtra(
                                    "android.intent.extras.CAMERA_FACING",
                                    Camera.CameraInfo.CAMERA_FACING_BACK);

                        }
                    }
startActivityForResult(takePictureIntent, actionCode);

2 个答案:

答案 0 :(得分:3)

注意:此功能在Gingerbread和Up Android版本中可用。  Intent以自己的方式处理相机动作。当您使用SurfaceView来利用相机功能时,将使用此技术。

 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.getLocalizedMessage());
        }
    }
}

return cam;}
清单文件中的

<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" />

答案 1 :(得分:0)

今天,我正在尝试同样的事情并遇到与你相同的问题。然后我搜索了问题,并找到了这个链接的完美解决方案,这对我有帮助。 Android can't record video with Front Facing Camera, MediaRecorder start failed: -19