【发布时间】:2016-01-22 19:02:01
【问题描述】:
我正在构建一个 Cordova/Ionic 应用程序,它允许用户使用 webrtc (peerJs) 实时查看 Andoroid 手机的摄像头。
我需要让设备在(假设)15 秒后关闭屏幕,并继续将视频传输到其他 Android 设备。
据我所知,要解决这个问题,我需要获得一个 PARTIAL_WAKE_LOCK(这可以关闭屏幕并保持应用程序运行),并且永远不要释放它,因此应用程序会不断地向我发送视频。
我决定使用 Android 原生实现,因此我获得了 "onStart()" 方法中的锁定,该方法存在于platforms\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。它起作用了,屏幕从未关闭过,它让我无休止地发送视频。这让我觉得wakelock获取成功了。当我将代码更改为 PARTIAL_WAKE_LOCK 时,屏幕会在 15 秒后关闭,视频会冻结。
我读到获取唤醒锁的类必须扩展“应用程序”,但是这个类 CordovaActivity 扩展了 Activity,我不能让它扩展另一个类,也不能用“应用程序”替换“活动”。我不知道这是否必要,因为上面的代码使用 SCREEN_DIM_WAKE_LOCK 可以正常工作。
我尝试使用这个插件https://github.com/boltex/cordova-plugin-powermanagement 来获取部分唤醒锁,但它的作用与上述相同。
谢谢
【问题讨论】:
标签: android cordova webrtc wakelock android-wake-lock