如何检测前置摄像头和闪光灯可用性

san*_*ana 0 flash android android-package-managers android-camera front-camera

嗨,我正在开发自定义视频应用程序.我能够获得currentCameraId 通过

currentCameraId = Camera.CameraInfo.CAMERA_FACING_BACK;
Run Code Online (Sandbox Code Playgroud)

我有两个问题要问:

1)如何只用前置摄像头检测Android设备.

因为在Micromax标签中只有前置摄像头的平板电脑上,currentCameraId为0.

2)如何检查相机闪光灯的可用性,因为下面的代码在某些手机上不起作用

flash = this.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
Run Code Online (Sandbox Code Playgroud)

请帮忙.

谢谢!

Kar*_*iya 7

检查闪光灯是否可用

boolean hasFlash = getApplicationContext().getPackageManager()
                .hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
Run Code Online (Sandbox Code Playgroud)

检查相机是否可用

PackageManager pm = context.getPackageManager();

if (pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {

}
Run Code Online (Sandbox Code Playgroud)

如果您使用的是API级别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
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用Camera.open的索引

例如

int index = getFrontCameraId();
if (index == -1) error();
Camera c = Camera.open(index);
Run Code Online (Sandbox Code Playgroud)