Android 同时开启手电筒和不支持闪光灯的相机

Turning on flashlight and camera that does not support flash simultaneously in Android

我正在为 Kyocera E6820 编写一个高度专业化的应用程序,它需要设备的广角摄像头和手电筒同时打开。

我正在使用 Camera2 Android API。问题是默认情况下广角相机不支持闪光灯,所以如果我尝试通过以下方式同时打开手电筒和广角相机:

mPreviewRequestBuilder.set(CaptureRequest.FLASH_MODE, CaptureRequest.FLASH_MODE_TORCH);
mPreviewRequest = mPreviewRequestBuilder.build();
mCaptureSession.setRepeatingRequest(mPreviewRequest, mCaptureCallback, mBackgroundHandler);

我收到一条错误消息:

W/LegacyRequestMapper: mapAeAndFlashMode - Ignore flash.mode == TORCH;camera does not support it

我试图通过使用常规后置摄像头(支持闪光灯)打开闪光灯来解决这个问题,方法是执行以下操作而不打开它:

manager.openCamera(wideAngleCameraID, mStateCallback, mBackgroundHandler);
manager.setTorchMode(rearFacingCameraID, true);

但是,它没有用,我收到了这条消息:

W/System.err: android.hardware.camera2.CameraAccessException: The system-wide limit for number of open cameras has been reached, and more camera devices cannot be opened until previous instances are closed.

我可以让普通的后置摄像头和手电筒同时亮起,但是广角就没那么幸运了。

有谁知道解决这个问题的潜在方法吗?我已经查看了 this post 但没有找到任何有用的信息。由于这是一个如此专业的应用程序,所以做一些像 phone 或直接与设备的 LED 驱动器对话这样的事情并不是不可能的,但我需要知道从哪里开始。任何指导或帮助将不胜感激。

对于任何查看的人,我在查看 this forum discussion 后找到了答案。对我来说,亮度值位于

/sys/class/leds/led:torch_0

目录。在对 phone 进行 root 后,我​​能够通过使用给定 here.

的过程调用 adb 命令来操纵该值