首页 > 解决方案 > 如何打开安卓设备的前置手电筒(不是后置手电筒)

问题描述

我开发了一个简单的应用程序来打开/关闭手电筒。但我找不到打开设备前置手电筒的方法(如果有)。

可用性检查代码:

boolean hasCameraFlash = getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);

我的打开代码是:

@RequiresApi(api = Build.VERSION_CODES.M)
private void flashLightOn() {
    try {
        String cameraId = cameraManager.getCameraIdList()[0];
        cameraManager.setTorchMode(cameraId, true);
    } catch (CameraAccessException ignored) {
    }
}

是否可以在不打开相机的情况下打开设备的前置手电筒。任何帮助将不胜感激。

(请注意,我是android开发的新手)

标签: javaandroidandroid-studiocameraflashlight

解决方案


检查设备中闪存的可用性:

您可以使用以下内容:

context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);

如果闪存可用,则返回 true,否则返回 false。

请参阅:http:
//developer.android.com/reference/android/content/pm/PackageManager.html了解更多信息。

打开/关闭手电筒:

我用谷歌搜索并得到了关于 android.permission.FLASHLIGHT 的信息。Android manifests 的权限看起来很有希望:

<!-- Allows access to the flashlight -->
 <permission android:name="android.permission.FLASHLIGHT"
             android:permissionGroup="android.permission-group.HARDWARE_CONTROLS"
             android:protectionLevel="normal"
             android:label="@string/permlab_flashlight"
             android:description="@string/permdesc_flashlight" />

代码片段打开相机手电筒。

Camera cam = Camera.open();     
Parameters p = cam.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
cam.setParameters(p);
cam.startPreview();

关闭相机 LED 灯的代码片段。

cam.stopPreview();
  cam.release();

推荐阅读