打开相机手机的手电筒

时间:2014-08-16 17:27:58

标签: android android-camera

我要做的就是按一下按钮打开手机的闪光灯。正如我所读,它看起来太简单了,但我找到的代码不起作用!

这是我点击按钮时开启的方式:+

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方法中初始化了参数和相机对象。不会抛出任何错误,但是灯不亮。 怎么了?

2 个答案:

答案 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;

        }