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。

时间: 2024-08-27 10:14:18

android Camera 如何判断当前使用的摄像头是前置还是后置的相关文章

在Android设备上判断设备是否支持摄像头

private boolean hasCamera(){ boolean hasCamera=false; PackageManager pm=getActivity().getPackageManager(); hasCamera=pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)||pm.hasSystemFeature(PackageManager.FEATURE_CAMERA_FRONT)|| Build.VERSION.SDK_INT<

[转]Android中直播视频技术探究之---摄像头Camera视频源数据采集解析

http://blog.csdn.net/jiangwei0910410003/article/details/52057543 一.前言 在视频直播中一般都是两种视频数据源,一个是摄像头数据,一个是录制桌面数据,而一般来说美女妹子直播都是来自于摄像头数据,游戏直播都是录制桌面数据的,那么今天就来看看第一个数据源数据采集分析,Android中使用摄像头的场景很多,在没有直播这个行业出现之前,之前用到摄像头的最多就两个场景,一个是二维码扫描,一个是美颜拍照类的应用.那么这里就来看看Android中

Android -- Camera源码简析,启动流程

com.android.camera.Camera.java,主要的实现Activity,继承于ActivityBase. ActivityBase 在ActivityBase中执行流程: onCreate中进行判断是否是平板: onResume中判断是否锁屏,锁屏&camera不存在时候,mOnResumePending置为true,否则置为false并执行doOnResume: onWindowFocusChanged中判断是否获取到焦点&mOnResumePending,满足的话执行

android Camera拍照

通过Camera进行拍照步骤: 调用Camera的open()方法打开相机.该方法默认打开后置摄像头.如果需要打开指定摄像头,可以为该方法传入摄像头ID. 调用Camera的getParameters()方法获取拍照参数.该方法返回一个Camera.Parameters对象 调用Camera.Parameters对象方法设置拍照参数 调用Camera的startPreview()方法开始预览取景,在预览取景之前需要调用Camera的setPreviewDisplay(SurfaceHolder

Android Camera开发之基础知识篇

概述 Android框架支持设备的相机拍照和录像功能,你的应用可以直接调用系统的Camera应用来拍照或者录像(比如微信拍照),当然也可以利用Android系统提供的API开发一个Camera应用来实现相机拍照和录像功能(比如市面上流行的360相机).此篇文章主要记录相机开发有关的基础知识,以及带着自己的理解翻译Camera官方文档,如有翻译不恰当支出,还请指出改正.当然我会开一个有关相机开发的一个系列,该系列主要内容包括如下: 相机基本预览拍照功能. 实现相机的Flash,Hdr,滤镜,前后摄

Android Camera 拍照 三星BUG总结

Android Camera 三星BUG  : 最近在Android项目中使用拍照功能 , 其它型号的手机运行成功了  唯独在三星的相机上遇到了bug . BUG具体体现为 : (1) 摄像头拍照后图片数据不一定能返回 ;  onActivityResult的data为空 (2) 三星的camera强制切换到横屏  导致Activity重启生命周期 (但是部分机型  配置  android:configChanges  也不能阻止横竖屏切换); 我的解决方法为 如果 activity 的销毁如果

玩转Android Camera开发(一):Surfaceview预览Camera,基础拍照功能完整demo

杂家前文是在2012年的除夕之夜仓促完成,后来很多人指出了一些问题,琐事缠身一直没有进行升级.后来随着我自己的使用,越来越发现不出个升级版的demo是不行了.有时候就连我自己用这个demo测一些性能.功能点,用着都不顺手.当初代码是在linux下写的,弄到windows里下全是乱码.还要自己改几分钟才能改好.另外,很多人说不能正常预览,原因是我在布局里把Surfaceview的尺寸写死了.再有就是initCamera()的时候设参数失败,直接黑屏退出,原因也是我把预览尺寸和照片尺寸写死了.再有就

【转】Android Camera 相机开发详解

在Android 5.0(SDK 21)中,Google使用Camera2替代了Camera接口.Camera2在接口和架构上做了巨大的变动, 但是基于众所周知的原因,我们还必须基于 Android 4.+ 系统进行开发.本文介绍的是Camera接口开发及其使用方法,通过本文章,你将全面地学会Camera接口的开发流程. 本图文与GitHubPages原文均为本人原创 Paste_Image.png 调用系统相机/其它App完成拍摄操作 如果你的App的需求只是调用摄像头拍照并拿到照片,老司机的

Android Camera探究之路——起步

Android Camera探究之路--起步 Camera在手机中有着举足轻重的地位,无论是二维码还是照片.识别.都离不开摄像头,本文将对Android中的Camera进行全面解析. 权限镇楼: <uses-permission android:name="android.permission.CAMERA"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE&