android Camera 如何判断当前使用的摄像头是前置还是后
置
标签:现在android 平台的智能手机一般都标配有两颗摄像头。在Camera 中都存在摄像头切换的功能。
并且有一些功能前后置摄像头上会有所不同。譬如人脸检测,人脸识别,自动对焦,闪光灯等功能,
如果前置摄像头的像素太低,不支持该功能的话,就需要在前置摄像头上关掉该feature.
那么是如何判断并切换前后置摄像头的呢?
我们先来看下CameraInfo 这个类,
1 /**
2 * Information about a camera
3 */
4 public static class CameraInfo {
5 /**
6 * The facing of the camera is opposite to that of the screen.
7 */
8 public static final int CAMERA_FACING_BACK =
0;
9
10 /**
11 * The facing of the camera is the same as that of the screen.
12 */
13 public static final int CAMERA_FACING_FRONT = 1;
14
15 /**
16 * The direction that the camera faces. It should be
17 * CAMERA_FACING_BACK or
CAMERA_FACING_FRONT.
18 */
19 public int facing;
20
21 /**
22 * <p>The orientation of the camera image. The value is the angle that the
23 * camera image needs to be rotated clockwise so it shows correctly on
24 * the display in its natural orientation. It should be
0, 90, 180, or 270.</p>
25 *
26 * <p>For example, suppose a device has a naturally tall screen. The
27 * back-facing camera sensor is mounted in landscape. You are looking at
28 * the screen. If the top side of the camera sensor is aligned with the
29 * right edge of the screen in natural orientation, the value should be
30 * 90. If the top side of a front-facing camera sensor is aligned with
31 * the right of the screen, the value should be 270.</p>
32 *
33 * @see #setDisplayOrientation(int)
34 * @see Parameters#setRotation(int)
35 * @see Parameters#setPreviewSize(int, int)
36 * @see Parameters#setPictureSize(int, int)
37 * @see Parameters#setJpegThumbnailSize(int, int)
38 */
39 public int orientation;
40 };
见名知义,它就是一个Camera 信息类。它是通过与屏幕的方向是否一致来定义前后置摄像头的。
与屏幕方向相反即为BACK_FACING_CAMERA
与屏幕方向一致即为FRONT_FACING_CAMERA
那么在代码中我们是如何获取当前使用的CamerInfo 呢
1 Camera.CameraInfo info = new Camera.CameraInfo();
2 Camera.getCameraInfo(cameraId, info);
当然,使用该代码的前提是要import
android.hardware.Camera.CameraInfo;
判断使用是前置还是后置摄像头,可以通过if (info.facing == CameraInfo.CAMERA_FACING_FRONT) 来判断。
当Camera 的实例已经创建了的情况下,则需要通过如下方式来判断。
1 CameraInfo info =
CameraHolder.instance().getCameraInfo()[mCameraId];
2 if (info.facing ==
CameraInfo.CAMERA_FACING_FRONT) {
3 //stopFaceDetection();
4 }
也可以通过if(mCameraId ==
CameraInfo.CAMERA_FACING_FRONT) 来判断。
其中mCameraId 是当前使用的CameraId, 一般前置为1,后置为0。android Camera 如何判断当前使用的摄像头是
前置还是后置标签: