我要做的就是按一下按钮打开手机的闪光灯。正如我所读,它看起来太简单了,但我找到的代码不起作用!
这是我点击按钮时开启的方式:+
private void cameraOn() {
params = camera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(params);
camera.startPreview();
torch_button.setText("Switch off");
isTorchOn = true;
}
在onCreate方法中初始化了参数和相机对象。不会抛出任何错误,但是灯不亮。 怎么了?
答案 0 :(得分:1)
看起来这个可能已经被回答了
How to turn on camera flash light programmatically in Android?
但基本上你需要拥有正确的权限。
<!-- Allows access to the flashlight -->
<permission android:name="android.permission.FLASHLIGHT"
android:permissionGroup="android.permission-group.HARDWARE_CONTROLS"
android:protectionLevel="normal"
android:label="@string/permlab_flashlight"
android:description="@string/permdesc_flashlight" />
答案 1 :(得分:0)
问题可能是另一个拿着相机的应用程序。你的代码似乎是正确的。
我用这段代码成功完成了它:
Parameters p = null;
try {
p = camera.getParameters();
} catch (Exception e) {
e.printStackTrace();
}
if (isLightOn) {
Log.e("info", "turning off!");
p.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(p);
camera.stopPreview();
isLightOn = false;
} else {
Log.e("info", "turning on!");
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(p);
camera.startPreview();
isLightOn = true;
}