java - 三星手机可以激活前置摄像头闪光灯吗?

标签 java android android-camera android-camera2 flashlight

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

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

  1. 第一次尝试是获取支持的FlashModes,然后使用setParameters(API < 23)激活闪光灯。但仅前置摄像头的 getParameters() 不会返回内置前置闪光灯的任何信息。对于该应用程序来说,似乎没有可用的前置闪光灯。

  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。接下来的步骤是检查支持的FlashModes,然后调用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) {
        ...
    }

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

最佳答案

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

出于自身目的,硬件不提供任何在某些设备上激活 Frontflash 的功能,它的 react 就像没有内置 Frontflash 一样。 目前此问题没有可用的解决方案。

现有的解决方法是使屏幕变白,以照亮手机前面的环境。

关于java - 三星手机可以激活前置摄像头闪光灯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55574133/

相关文章:

android - 如何在 LAN 中的 2 台设备之间传输现有相机字节 [] 数据

java - android 图像方向根据相机 Intent 而变化(或从图库中选择)

javascript - Android 设备上的 ZXing force 后置摄像头?

Java数据加密/解密

java - 使用 volatile 关键字

Android:单击按钮时如何打开键盘以编辑EditText?

android - Activity 调用抛出错误

android - 数据库插入后 ListView 不更新

java - 我应该为 intel i5 cpu 和 windows 7 64 位安装哪个 jdk

java - Spring AOP 为 Java 8 提供 IllegalArgumentException