设备屏幕关闭时如何打开手电筒?

时间:2018-10-14 06:35:55

标签: android android-permissions torch flashlight

在我的应用中,我需要在由BroadcastReceiver启动的活动中启动手电筒。 如果该应用程序位于前景或背景中且屏幕打开,则可以正常工作;但是如果屏幕处于关闭状态(有或没有键盘锁),则该应用程序将崩溃。

分析: 屏幕关闭时,仍然可以成功创建相机对象,但是 Camera.startPreview()引发RuntimeException。

我可以理解在屏幕关闭时禁止激活相机的动机,但是如何打开/关闭手电筒呢?

cam = Camera.open();
//...
try {
     cam.startPreview();
}catch(RuntimeException e){
    Log.w(TAG,"Failed opening camera preview. Maybe screen locked?: " + e.getMessage());
    return;
}

权限:

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

我尝试使用FLASHLIGHT(未记录)权限,但在运行时会被忽略。

在小米Mi A1的Android 8.1上进行了测试 minSdkVersion 22

我搜索的链接:

flash light is not turned on

flashlight not working,when device screen is off/sleep (android studio)

1 个答案:

答案 0 :(得分:0)

如果屏幕关闭,则在启动活动之前,它实际上不会启动。这就是为什么相机无法打开的原因。而是启动一个服务以执行该操作,该服务实际上可以立即运行。