我在 Android 上有一个流式音频应用程序,它使用AudioTrack
和track.write()
.
过了一会儿,音频停止了。我找不到问题。之后,我看到 Admob 也收到了异常:
java.net.ConnectException: failed to connect to googleads.g.doubleclick.net:.. connect failed: EHOSTUNREACH (No route to host)
在日志中看到这一行后,我认为设备的 wi-fi 连接存在不稳定因素。(我使用 Galaxy S3 4.1.2)
由于我在桌面上使用相同的连接,我可以说互联网没有问题(我可以在桌面上流式传输相同的音频)。
这不会发生在同一时间段内。它在 10 秒到 10 分钟之间随机发生。
可能是什么原因,我可以通过告诉操作系统不要关闭连接来防止这种情况发生吗?(我已经在前台进程中使用它)
更新: 我尝试了以下锁,但问题仍然存在。
private static WifiLock wifiLock = ((WifiManager) AppMain.getInstance().getSystemService(Context.WIFI_SERVICE))
.createWifiLock(WifiManager.WIFI_MODE_FULL_HIGH_PERF, "plywilock");
我在我的 MyPlayerInSameProcessService 中设置了它,我在服务的 onDestroy() 中释放它。代码使用 jni 获取音频数据 c++ 并在 java 端提供 AudioTrack。
如果我禁用 Wi-Fi,它会在 3G 上完美流畅地工作,不会出现任何中断。
在同一个 Wi-Fi 网络中,如果我在应用程序中使用具有相同 url 的另一个应用程序,则该应用程序可以顺利运行。所以,可能是我,而不是 Wi-Fi 质量。