是否有可能在三星手机上激活前置摄像头闪光灯?

问题描述 投票:1回答:1

我目前正在尝试在三星Galaxy A6上激活内置前置手电筒,但该设备提供的信息就像没有内置前置闪光灯一样。

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

  1. First Try是获得supportedFlashModes,然后使用setParameters(API <23)激活flash。但是前置摄像头的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。接下来的步骤是检查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) {
        ...
    }

这些只是用于简单激活前置闪存的片段,但这两种方法都像硬件响应一样没有内置前置闪存。

java android android-camera android-camera2 flashlight
1个回答
0
投票

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

出于自己的目的,硬件不提供在某些设备上激活Frontflash的任何功能,它只是反应就像没有内置的前闪。目前还没有针对此问题的解决方案。

现有的解决方法是对屏幕进行白化,以减轻手机前的环境。

© www.soinside.com 2019 - 2024. All rights reserved.