我目前正在尝试在三星Galaxy A6上激活内置前置手电筒,但该设备提供的信息就像没有内置前置闪光灯一样。
我已经尝试了不同的方法,可以通过搜索激活闪存找到。
我目前只有三星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) {
...
}
这些只是用于简单激活前置闪存的片段,但这两种方法都像硬件响应一样没有内置前置闪存。
经过研究,似乎有些手机制造商正在使用私有API来控制硬件。特别是三星和华为正在利用它。设备上的主要相机应用程序主要由该API控制,Frontflash可以按预期使用。但即使像Instagram和Snapchat这样的大型相机应用程序也无法摆脱它,也无法激活,例如Frontflash。
出于自己的目的,硬件不提供在某些设备上激活Frontflash的任何功能,它只是反应就像没有内置的前闪。目前还没有针对此问题的解决方案。
现有的解决方法是对屏幕进行白化,以减轻手机前的环境。