如何打开Android手电筒

Min*_*Man 9 camera android lg flashlight

更新

看看我的答案

原版的

我想在我的程序中打开LG Revolution上的相机手电筒.我使用的火炬模式方法适用于大多数手机但不适用于LG手机.有谁知道如何让它在LG或特别是革命上工作?

这是我的清单:

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-permission android:name="android.permission.FLASHLIGHT"/>
Run Code Online (Sandbox Code Playgroud)

这是我目前的代码:

public Camera camera = Camera.open();
    public Camera.Parameters Flash = camera.getParameters();
Run Code Online (Sandbox Code Playgroud)

随着我的创建:

            Flash.setFlashMode("torch");
            Parameters p = camera.getParameters();
            camera.setParameters(Flash);
            camera.startPreview();
Run Code Online (Sandbox Code Playgroud)

我见过人们使用自动对焦,但我不知道这是否有效.

Min*_*Man 7

我想我会用一些适用于几乎所有4.0+设备的子弹教程代码来更新它.

public void turnOn() {
    camera = Camera.open();
    try {
        Parameters parameters = camera.getParameters();
        parameters.setFlashMode(getFlashOnParameter());
        camera.setParameters(parameters);

        camera.setPreviewTexture(new SurfaceTexture(0));

        camera.startPreview();
        camera.autoFocus(this);
    } catch (Exception e) {
        // We are expecting this to happen on devices that don't support autofocus.
    }
}

private String getFlashOnParameter() {
    List<String> flashModes = camera.getParameters().getSupportedFlashModes();

    if (flashModes.contains(FLASH_MODE_TORCH)) {
        return FLASH_MODE_TORCH;
    } else if (flashModes.contains(FLASH_MODE_ON)) {
        return FLASH_MODE_ON;
    } else if (flashModes.contains(FLASH_MODE_AUTO)) {
        return FLASH_MODE_AUTO;
    }
    throw new RuntimeException();
}
Run Code Online (Sandbox Code Playgroud)

真正的关键是设置假的SurfaceTexture,以便预览实际开始.关闭它也很容易

public void turnOff() {
        try {
            camera.stopPreview();
            camera.release();
            camera = null;
        } catch (Exception e) {
            // This will happen if the camera fails to turn on.
        }
}
Run Code Online (Sandbox Code Playgroud)