Android 如何检测是否有前置摄像头,以及如何接触和使用前置摄像头?

Android 如何检测是否有前置摄像头,以及如何接触和使用前置摄像头?,android,camera,Android,Camera,如何检测是否有前置摄像头,以及如何接触和使用前置摄像头 如何检测是否有前置摄像头,以及如何接触和使用前置摄像头 至少在安卓2.2中,还没有针对这一点的API。幸运的是,即将发布的姜饼版本将增加对前置摄像头的内置支持。对不起 如果您使用的是API level 9(Android 2.3)或更高版本,您可以执行以下操作来计算(第一个)前置摄像头的索引: int getFrontCameraId() { CameraInfo ci = new CameraInfo(); for (in

如何检测是否有前置摄像头,以及如何接触和使用前置摄像头

如何检测是否有前置摄像头,以及如何接触和使用前置摄像头


至少在安卓2.2中,还没有针对这一点的API。幸运的是,即将发布的姜饼版本将增加对前置摄像头的内置支持。对不起

如果您使用的是API level 9(Android 2.3)或更高版本,您可以执行以下操作来计算(第一个)前置摄像头的索引:

int getFrontCameraId() {
    CameraInfo ci = new CameraInfo();
    for (int i = 0 ; i < Camera.getNumberOfCameras(); i++) {
        Camera.getCameraInfo(i, ci);
        if (ci.facing == CameraInfo.CAMERA_FACING_FRONT) return i;
    }
    return -1; // No front-facing camera found
}

获取相关摄像头。

您的代码将不支持高于21的sdk,因此我添加了以下行以使其可用:)

int getFrontCameraId(CameraManager cManager){
如果(Build.VERSION.SDK_INT<22){
Camera.CameraInfo ci=新的Camera.CameraInfo();
对于(int i=0;i对于(int j=0;jKalpit,我不知道你是如何让代码工作的。我试图编辑你的答案,但完整的答案需要更改。下面是我得到的

@SuppressLint("NewApi" )
int getFrontCameraId() {
    if (Build.VERSION.SDK_INT < 22) {
        Camera.CameraInfo ci = new Camera.CameraInfo();
        for (int i = 0; i < Camera.getNumberOfCameras(); i++) {
            Camera.getCameraInfo(i, ci);
            if (ci.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) return i;
        }
    } else {
        try {
            CameraManager cManager = (CameraManager) getApplicationContext()
               .getSystemService(Context.CAMERA_SERVICE);
            String[] cameraId = cManager.getCameraIdList();
            for ( int j = 0;j<cameraId.length; j++) {
                CameraCharacteristics characteristics = cManager.getCameraCharacteristics(cameraId[j]);
                int cOrientation = characteristics.get(CameraCharacteristics.LENS_FACING);
                if (cOrientation == CameraCharacteristics.LENS_FACING_FRONT)
                    return Integer.parseInt(cameraId[j]);
            }
        } catch (CameraAccessException e) {
            e.printStackTrace();
        }
    }
    return -1; // No front-facing camera found
}
@SuppressLint(“NewApi”)
int getFrontCameraId(){
如果(Build.VERSION.SDK_INT<22){
Camera.CameraInfo ci=新的Camera.CameraInfo();
对于(int i=0;i对于(int j=0;jRelated:(但根本没有答案)检查cameraid在kindle fire上不起作用。它只有一个前置摄像头,id==后端摄像头id。
    int getFrontCameraId(CameraManager cManager) {
    if (Build.VERSION.SDK_INT < 22) {
        Camera.CameraInfo ci = new Camera.CameraInfo();
        for (int i = 0; i < Camera.getNumberOfCameras(); i++) {
            Camera.getCameraInfo(i, ci);
            if (ci.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) return i;
        }
    } else {
        try {
            for ( int j = 0;j<cManager.getCameraIdList().length; j++) {
                String[] cameraId = cManager.getCameraIdList();
                CameraCharacteristics characteristics = cManager.getCameraCharacteristics(cameraId[j]);
                int cOrientation = characteristics.get(CameraCharacteristics.LENS_FACING);
                if (cOrientation == CameraCharacteristics.LENS_FACING_FRONT) 
                    return j;
            }
        } catch (CameraAccessException e) {
            e.printStackTrace();
        }
    }

    return -1; // No front-facing camera found
}
@SuppressLint("NewApi" )
int getFrontCameraId() {
    if (Build.VERSION.SDK_INT < 22) {
        Camera.CameraInfo ci = new Camera.CameraInfo();
        for (int i = 0; i < Camera.getNumberOfCameras(); i++) {
            Camera.getCameraInfo(i, ci);
            if (ci.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) return i;
        }
    } else {
        try {
            CameraManager cManager = (CameraManager) getApplicationContext()
               .getSystemService(Context.CAMERA_SERVICE);
            String[] cameraId = cManager.getCameraIdList();
            for ( int j = 0;j<cameraId.length; j++) {
                CameraCharacteristics characteristics = cManager.getCameraCharacteristics(cameraId[j]);
                int cOrientation = characteristics.get(CameraCharacteristics.LENS_FACING);
                if (cOrientation == CameraCharacteristics.LENS_FACING_FRONT)
                    return Integer.parseInt(cameraId[j]);
            }
        } catch (CameraAccessException e) {
            e.printStackTrace();
        }
    }
    return -1; // No front-facing camera found
}