在我的应用中,我需要在由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
我搜索的链接:
flashlight not working,when device screen is off/sleep (android studio)
答案 0 :(得分:0)
如果屏幕关闭,则在启动活动之前,它实际上不会启动。这就是为什么相机无法打开的原因。而是启动一个服务以执行该操作,该服务实际上可以立即运行。