我正在构建一个Cordova / Ionic应用程序,让用户可以使用webrtc(peerJs)查看Andoroid手机的摄像头。
我需要允许设备关闭屏幕(让我们说)15秒后,并继续将视频传输到其他Android设备。
据我所知,为了解决这个问题,我需要获取PARTIAL_WAKE_LOCK(这样可以关闭屏幕并保持应用程序运行),并且永远不会释放它,因此应用程序会不断向我发送视频。
我决定采用Android原生实现,所以我获得了" onStart()"方法,出现在平台\ android \ CordovaLib \ src \ org \ apache \ cordova \ CordovaActivity.java中,几乎每个教程都有这个代码
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
"My wakelook");
wakeLock.acquire();
我首先尝试了上面的代码,获取了SCREEN_DIM_WAKE_LOCK。它工作,屏幕永远不会关闭,它让我无休止地发送视频。这让我觉得唤醒锁获取是成功的。当我将代码更改为PARTIAL_WAKE_LOCK时,屏幕会在15秒后关闭,视频会冻结。
我已经读过,获取唤醒锁的类必须扩展"应用程序",但是这个类CordovaActivity扩展了Activity,我不能让它扩展另一个类既不替换" Activity&# 34;与"应用程序"。我不知道这是否是必要的,因为上面的代码使用SCREEN_DIM_WAKE_LOCK正常工作。
我尝试使用此插件https://github.com/boltex/cordova-plugin-powermanagement来获取部分唤醒锁定,但它与上面的内容完全相同。
由于
答案 0 :(得分:0)
原来,唤醒锁定没有释放。发生的事情是相机的编程紧密耦合到屏幕的状态。即使CPU仍处于开启状态,关闭屏幕也会禁用相机,这就是视频冻结的原因。