如何打开和关闭设备闪光灯?

时间:2012-10-19 05:59:49

标签: android camera flashlight

我想在Android中以编程方式仅启用相机flash light(不使用相机预览)。我搜索了它,但我找到的帮助不适用于我的三星Galaxy ACE。

通过使用此代码能够在此之后开启几秒钟,它会自动关闭,无需在UI上执行任何操作。如果我再次尝试打开强制关闭。

private void turnOn() {

    clicked = true;      
    mCamera = Camera.open();
    Parameters params = mCamera.getParameters();
    params.setFlashMode(Parameters.FLASH_MODE_ON); 
    mCamera.setParameters(params);
    mCamera.startPreview();
    mCamera.autoFocus(new AutoFocusCallback() {
        public void onAutoFocus(boolean success, Camera camera) {
        }
    });
}

关闭

private void turnOff() { 
    clicked = false;         
    if (mCamera != null) {
        mCamera.stopPreview();
        mCamera.release();
    }
}

声明了这些清单权限

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT" />

<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-feature android:name="android.hardware.camera.flash" />

任何人都可以告诉我如何长时间打开闪光灯直到使用点击OFF按钮。是否需要任何第三方库。我在谷歌播放Tiny flash中看到了这个应用程序,他们是如何使用此应用程序的。

从我开启之后,它在2 sec中关闭了。我没有得到这个问题。

3 个答案:

答案 0 :(得分:1)

试试这个

//Turn on
camera = Camera.open();
Parameters p = camera.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(p);
camera.startPreview();

//Turn off
camera = Camera.open();
Parameters p = camera.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(p);
camera.stopPreview();

答案 1 :(得分:1)

@RajaReddy PolamReddy,

我正在使用三星S3 LTE(4G)。您需要更改的是将Parameters.FLASH_MODE_ON更改为Parameters.FLASH_MODE_TORCH。

它对我有用。

答案 2 :(得分:-1)

坏消息: 根据文档android相机需要初始化表面视图来开始预览 好消息: 它不能是全屏或可见的

到目前为止我的经验是开始预览是必要的,以激活闪光灯(但我无法代表所有设备)

如果您需要一些示例如何激活预览并可能隐藏在叠加后面, 看看javaocr库(参见演示 - 有2个Android应用程序,还有单独项目中的摄像头管理库 - 你可以抓住它)

https://sourceforge.net/projects/javaocr/