【发布时间】:2019-04-08 13:02:11
【问题描述】:
我目前正在尝试激活三星 Galaxy A6 上的内置前置闪光灯,但该设备提供的信息类似于没有内置前置闪光灯。
我已经尝试了不同的方法,可以通过搜索激活闪光灯找到。
首先尝试获取supportedFlashModes,然后使用setParameters (API
然后我尝试使用在 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