【问题标题】:Is there a possibilty to activate front camera flash on Samsung phones?是否有可能在三星手机上激活前置摄像头闪光灯?
【发布时间】:2019-04-08 13:02:11
【问题描述】:

我目前正在尝试激活三星 Galaxy A6 上的内置前置闪光灯,但该设备提供的信息类似于没有内置前置闪光灯。

我已经尝试了不同的方法,可以通过搜索激活闪光灯找到。

  1. 首先尝试获取supportedFlashModes,然后使用setParameters (API

  2. 然后我尝试使用在 API >= 23 中引入的 Camera2 API 并出现同样的问题。获取相机特征然后检查 FLASH_INFO 是否可用只会导致返回 false。还尝试使用 setTorchMode(FRONT_CAMERA, true) 仅激活闪存单元会引发异常,提示:没有可用的闪存单元。

我目前只有三星 Galaxy A6 作为内置前置闪光灯的测试设备。相同的代码适用于后置(后置)摄像头,没有任何问题。

广告 1)

try {
            Camera camera;
            camera = Camera.open(cameraId);

            if (camera == null) {
                return false;
            }

            Camera.Parameters parameters = camera.getParameters();

            if (parameters.getFlashMode() == null) {
                camera.release();
                return false;
            }
    ...

它只是在此时退出,因为 .getFlashMode() 为前置摄像头返回 null。下一步是检查supportedFlashModes,然后调用Camera的setParamater。

广告 2)

try {
        String camID = null;
        for(String cameraID : mCameraManager.getCameraIdList()) {
            CameraCharacteristics cameraCharacteristics = mCameraManager.getCameraCharacteristics(cameraID);

        int orientation = cameraCharacteristics.get(CameraCharacteristics.LENS_FACING);
        if (orientation == CameraCharacteristics.LENS_FACING_FRONT) {

                if(cameraCharacteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE)) {
                        camID = cameraID;
                    }
        }

        if(camID != null) {
            mCameraManager.setTorchMode(camID, true);
        }

    } catch (Exception exc) {
        ...
    }

这些只是用于简单激活前置闪光灯的 sn-ps,但两种方法的作用都类似于没有内置前置闪光灯的硬件响应。

【问题讨论】:

    标签: java android android-camera android-camera2 flashlight


    【解决方案1】:

    经过研究,似乎一些手机制造商正在使用私有 API 来控制硬件。尤其是三星和华为正在利用这一点。设备上的主要相机应用程序主要由该 API 控制,Frontflash 可以按预期使用。但即使是像 Instagram 和 Snapchat 这样的大型相机应用程序也无法摆脱它,也无法激活例如前置闪光灯。

    出于自身目的,硬件只是不提供任何用于在某些设备上激活 Frontflash 的功能,它的反应就像没有内置的 frontflash 一样。 目前还没有解决这个问题的方法。

    现有的解决方法是对屏幕进行白化以照亮手机前面的环境。

    【讨论】:

    • 可能没有直接的解决方案,但总有办法。在一个矫枉过正的场景中,您可以看到三星如何使用闪存(下载三星官方固件并研究它)并使用 API。当然,我还不知道 API 是否需要一些签名或 root 访问权限,但是对于这两种情况都有解决方法。不过,我认为 OP 的意图并没有走到这一步。您的解决方法要合理得多。只是为了完整的答案而发布此内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多