更普遍的是,如果一个设备有多个嵌入式摄像头,有没有办法特别初始化其中的一个?
我在Android参考文档中没有找到它:
三星SHW-M100S有两个摄像头。如果没有提到使用两个摄像头,你知道三星是怎么做到的吗?
发布于 2011-01-22 20:36:51
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;
}
在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" />
注意:此功能在姜饼(2.3)和更高的安卓版本中可用。
发布于 2016-02-26 17:35:19
所有旧的answers的方法都被谷歌弃用(可能是因为这样的麻烦),因为API21你需要use Camera 2API:
此类在API级别21中已被弃用。我们建议对新应用程序使用新的android.hardware.camera2应用程序接口。
在the newer API中,您可以使用几乎完整的power over the Android device camera和文档来明确建议
String[] getCameraIdList()
然后使用获取的CameraId打开摄像头:
void openCamera(String cameraId, CameraDevice.StateCallback callback, Handler handler)
99%的前置摄像头id = "1",后置摄像头id = "0"如下:
不可移动摄像头使用从0开始的整数作为其标识符,而可移动摄像头对每个单独的设备都有唯一的标识符,即使它们是相同的型号。
然而,这意味着如果设备情况很少见,比如1-frontal -camera平板电脑,你需要计算你有多少个embedded摄像头,并按其重要性("0")排列相机的顺序。所以CAMERA_FACING_FRONT == 1 CAMERA_FACING_BACK == 0,这意味着后置摄像头比前置摄像头更重要的。
我不知道有没有uniform方法来识别所有安卓设备上的前置摄像头。简单地说,由于某些原因,设备内部的Android操作系统无法真正找出摄像头的确切位置:可能唯一的摄像头硬编码id是代表其重要性的整数,或者可能在某些设备上,无论您转向哪一边。“后退”。
Documentation:https://developer.android.com/reference/android/hardware/camera2/package-summary.html
显式示例:https://github.com/googlesamples/android-Camera2Basic
在老的API上安装(不推荐,因为它不能在新的Android版本的现代手机上工作,而且传输是一个痛苦的过程)。只需使用相同的整数CameraID (1)打开前置摄像头,就像在this answer中一样
cam = Camera.open(1);
如果您信任来完成摄像机部分:
内部
<org.opencv.android.JavaCameraView
../>
对前置摄影机使用以下设置:
opencv:camera_id="1"
发布于 2010-05-07 19:56:09
从Android 2.1开始,Android的SDK中只支持单摄像头。这很可能会在未来的Android版本中添加。
https://stackoverflow.com/questions/2779002
复制相似问题