首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Android平台上打开前置摄像头?

如何在Android平台上打开前置摄像头?
EN

Stack Overflow用户
提问于 2010-05-06 14:41:57
回答 10查看 166.5K关注 0票数 85

更普遍的是,如果一个设备有多个嵌入式摄像头,有没有办法特别初始化其中的一个?

我在Android参考文档中没有找到它:

三星SHW-M100S有两个摄像头。如果没有提到使用两个摄像头,你知道三星是怎么做到的吗?

EN

回答 10

Stack Overflow用户

发布于 2011-01-22 20:36:51

代码语言:javascript
复制
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文件中添加以下权限:

代码语言:javascript
复制
<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)和更高的安卓版本中可用。

票数 114
EN

Stack Overflow用户

发布于 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和文档来明确建议

代码语言:javascript
复制
String[] getCameraIdList()

然后使用获取的CameraId打开摄像头:

代码语言:javascript
复制
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是代表其重要性的整数,或者可能在某些设备上,无论您转向哪一边。“后退”。

Documentationhttps://developer.android.com/reference/android/hardware/camera2/package-summary.html

显式示例https://github.com/googlesamples/android-Camera2Basic

在老的API上安装(不推荐,因为它不能在新的Android版本的现代手机上工作,而且传输是一个痛苦的过程)。只需使用相同的整数CameraID (1)打开前置摄像头,就像在this answer中一样

代码语言:javascript
复制
cam = Camera.open(1);

如果您信任来完成摄像机部分:

内部

代码语言:javascript
复制
    <org.opencv.android.JavaCameraView
    ../>

对前置摄影机使用以下设置:

代码语言:javascript
复制
        opencv:camera_id="1"
票数 14
EN

Stack Overflow用户

发布于 2010-05-07 19:56:09

从Android 2.1开始,Android的SDK中只支持单摄像头。这很可能会在未来的Android版本中添加。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2779002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档