小编rob*_*ert的帖子

如何确保备用Android应用程序的网络连接?

我目前正在编写一个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)

导致无法找到活动的异常.

android android-webview

13
推荐指数
1
解决办法
431
查看次数

"没有实例"错误 - 但实例存在(种类不匹配)

我从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找不到的.我现在有点困惑.

完整代码可以在这里找到:

有线索吗?非常感谢任何提示!

haskell

5
推荐指数
1
解决办法
61
查看次数

标签 统计

android ×1

android-webview ×1

haskell ×1