如何打开安卓设备的前置手电筒(不是后置手电筒)

Posted

技术标签:

【中文标题】如何打开安卓设备的前置手电筒(不是后置手电筒)【英文标题】:How to turn on Front flashlight(not the rear one) of a android device 【发布时间】:2021-05-05 10:07:21 【问题描述】:

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

可用性检查代码:

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开发的新手)

【问题讨论】:

【参考方案1】:

对于检查设备中闪存的可用性

您可以使用以下内容:

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

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

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

打开/关闭手电筒:

我在 Google 上搜索到了有关 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();

代码 sn-p 关闭相机 LED 灯。

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

【讨论】:

我不认为这会指定要打开/使用的 哪个 闪存,是吗?所有这些都可能适用于后手电筒而不是前手电筒,或者这里有什么东西说它是专门为前置摄像头设计的? 正如@a_local_nobody 所说,此代码未指定后闪光灯或前闪光灯。我不确定是否可以识别前置闪光灯。

以上是关于如何打开安卓设备的前置手电筒(不是后置手电筒)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android N 中打开设备手电筒?

设备屏幕关闭时如何打开手电筒?

有没有办法打开和关闭前置摄像头的手电筒? [复制]

Android如何知道手电筒是不是打开

在后台运行安卓手电筒

想法如何使用opencv for IOS测量检测到的物体与相机的距离?