我在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()服务。 Code使用jni获取音频数据c ++,并在java端提供AudioTrack。
如果我禁用Wi-Fi,它可以完美顺畅地工作而不会中断3G。
在同一个Wi-Fi网络中,如果我使用我在我的应用程序中使用的相同网址的其他应用程序,该应用程序可以顺利运行。所以,可能是我,而不是Wi-Fi质量。