Camera cam = Camera.open();
Parameters p = cam.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
cam.setParameters(p);
cam.startPreview();
以上不适用于 Lollipop,因为 Camera 在 Lollipop 中已被弃用。我无法找到在 Lollipop 中以编程方式打开 Flash 的任何其他方法。我怎样才能做到这一点。提前致谢。
最佳答案
相机类现已弃用。
For LOLLIPOP above you need to use camera2 Api
所以 nickkadrov 的解决方案不适用于 6.0 及以上的设备,打开/关闭闪光灯的最佳方法是尝试下面的代码
public static void toggleFlashLight(){
toggle=!toggle;
try {
CameraManager cameraManager = (CameraManager) getApplicationContext().getSystemService(Context.CAMERA_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
for (String id : cameraManager.getCameraIdList()) {
// Turn on the flash if camera has one
if (cameraManager.getCameraCharacteristics(id).get(CameraCharacteristics.FLASH_INFO_AVAILABLE)) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
cameraManager.setTorchMode(id, true);
}
}
}
}
} catch (Exception e2) {
Toast.makeText(getApplicationContext(), "Torch Failed: " + e2.getMessage(), Toast.LENGTH_SHORT).show();
}
}
其中toggle是类级别的静态 bool 变量,默认值为false
static boolean toggle=false;
关于android - 如何以编程方式打开 Lollipop 中的 FlashLight Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28656028/