问题描述
|
我需要一个功能来检查前置摄像头是否存在,如果存在,请显示预览。
我找到了一些链接,但每个链接都谈论一个特定的设备:
如何在Android平台上打开“前置摄像头”?
http://developer.android.com/reference/android/hardware/Camera.html#open(int
LG Optimus 2X Speed的前置摄像头
如何在三星galaxy S上使用前置摄像头
谁能为此提供通用代码?还是可能适用于所有设备的组合代码?
解决方法
对于> = 9的API,您可以使用
Camera
类:http://developer.android.com/reference/android/hardware/Camera.html查看它是否具有多个摄像头,并查询CameraInfo
getNumberOfCameras
getCameraInfo
:
http://developer.android.com/reference/android/hardware/Camera.CameraInfo.html
常数
int CAMERA_FACING_BACK相机的朝向与屏幕的朝向相反。
int CAMERA_FACING_FRONT照相机的朝向与屏幕的朝向相同。
对于> = 5的API,一个选项是读取public List<Camera.Size> getSupportedPictureSizes ()
。前置摄像头的最大分辨率通常比后置摄像头低得多。
http://developer.android.com/reference/android/hardware/Camera.Parameters.html
,这是kcoppock发布的,但我认为某些时候也会有人看到此消息。我亲自进行了测试,在Froyo上表现出色。
PackageManager pm = getPackageManager();
boolean frontCam,rearCam;
//It would be safer to use the constant PackageManager.FEATURE_CAMERA_FRONT
//but since it is not defined for Android 2.2,I substituted the literal value
frontCam = pm.hasSystemFeature(\"android.hardware.camera.front\");
rearCam = pm.hasSystemFeature(PackageManager.FEATURE_CAMERA);
,在2.3中是可能的。 http://developer.android.com/sdk/api_diff/9/changes/android.hardware.Camera.html
但在此之前,Android SDK没有用于查找和使用第二个前置摄像头的任何通用API。
,我认为您可以遍历电话上可用的摄像头,并检查对面的摄像头信息以查找其中一个(但仅在API级别为9时可用)
这个答案可以帮助您:如何在Android平台上打开“前置摄像头”?