我目前正在编写一个Android应用程序,它使用webview和webrtc来传输音频流.问题是,至少在我的手机上,屏幕关闭几分钟后连接就会被切断.
我已经获得了一个CPU锁和一个wifi锁(用isHeld验证),但它没有任何区别.
该应用程序也可以作为Web应用程序使用:这里似乎按预期工作,连接保持活跃.
我已经检查了wifi设置:它设置为始终打开.
任何指针/想法都非常感激.该应用程序是开源的,所以我很乐意分享任何代码,如果这有任何帮助.锁定抓取完成:
private void grabWakeLock() {
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
"MyWakelockTag");
wakeLock.acquire();
WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
wifiLock = wifiManager.createWifiLock(WifiManager.WIFI_MODE_FULL_HIGH_PERF, "gonimo-wifi-lock");
wifiLock.acquire();
}
Run Code Online (Sandbox Code Playgroud)
我的Manifest中有以下权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-feature android:name="android.hardware.camera" />
Run Code Online (Sandbox Code Playgroud)
提前谢谢了!
Android Doze似乎是这种行为的原因.手动触发Doze会导致相同的行为.也
return pm.isIgnoringBatteryOptimizations(packageName);
Run Code Online (Sandbox Code Playgroud)
返回false,因此应用程序的网络将关闭!问题:文章中描述的白名单似乎不存在于我的手机上.我在设置和操作中找不到它:
Intent intentBattery = new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
intentBattery.setData(Uri.parse("package:" + "org.gonimo.gonimo"));
startActivity(intentBattery);
Run Code Online (Sandbox Code Playgroud)
导致无法找到活动的异常.
我从ghc为我的仆人库得到以下错误:
No instance for (GetEndpoint
(Verb 'GET 200 '[JSON] Position)
(Verb 'GET 200 '[JSON] Position)
'True)
arising from a use of `callServer3'
Run Code Online (Sandbox Code Playgroud)
但我在范围内有一个实例,看起来像这样:
instance GetEndpoint (Verb n s ct a) (Verb n s ct a) 'True where
getEndpoint _ _ _ _ server = server
Run Code Online (Sandbox Code Playgroud)
看起来就像一个ghc找不到的.我现在有点困惑.
完整代码可以在这里找到:
有线索吗?非常感谢任何提示!