我正在为 android 开发的广播流媒体应用程序遇到了一些麻烦。除了这一点之外,应用程序中的所有内容都运行良好,因此非常令人沮丧。
我希望能够捕获 AudioPlayer 的当前播放状态,以便我的应用程序可以在发生缓冲/网络更改时采取行动。
例如,今天我的连接从 3G 更改为 Wi-Fi,导致播放器停止死机,然后卡住。有时它会停止一两秒钟然后继续 OK。
我在事件侦听器中添加了一些代码以进行如下更改,以尝试捕获它:
player.addEventListener('change',function(e){
if(e.state == player.STATE_WAITING_FOR_DATA){
lblStatus.text = 'Reconnecting in 10s';
setTimeout(reconnect,10000); // This fires a reconnect function further down in my code.
}
});
但是,更改事件根本不会被触发。这几乎就像等待数据流的过程导致更改事件不触发一样。
所以我认为另一种方法是设置一个间隔,每 1 秒调用一次流检查函数,就像这样。
setInterval(checkStream,1000);
function checkStream(){
if(player.state == player.STATE_WAITING_FOR_DATA){
// Add reconnect code here
}
}
这也不起作用。当我添加一个调试警报以显示它的值player.state
一直为空时,即使在播放时也是如此。在 Titanium Studio IDE 中,它说这个属性在 android 上不可用。但是在网站上的 API 文档中它说它们是。我相信IDE。
作为最后的手段,我决定捕获 Ti.Network 的更改事件,并在检测到连接重新联机后运行重新连接代码。但是,有时这不是必需的,并且在实际不需要时断开并重新连接流。
有没有其他方法可以捕获 AudioPlayer 的状态,或者只是坚持网络更改事件是解决这个问题的唯一方法?
提前致谢,
戴夫