【问题标题】:Get AudioPlayer state on Titanium Mobile for Android在适用于 Android 的 Titanium Mobile 上获取 AudioPlayer 状态
【发布时间】:2012-10-11 19:24:50
【问题描述】:

我正在为 Android 开发的广播流媒体应用遇到了一些问题。除了这一点之外,应用程序中的所有内容都运行良好,因此非常令人沮丧。

我希望能够捕获 AudioPlayer 的当前播放状态,以便我的应用程序可以在缓冲/网络更改发生时采取行动。

例如,今天我的连接从 3G 更改为 Wi-Fi,导致播放器停止死机,然后卡住。有时它会停止一两秒钟,然后继续运行。

我在事件侦听器中添加了一些代码以进行如下更改,以尝试捕获:

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 的状态,或者只是坚持网络更改事件是解决此问题的唯一方法?

提前致谢,

戴夫

【问题讨论】:

  • 你找到解决办法了吗?
  • 不,彼得。我从来没有遇到过这方面的解决方案。最后我只是决定硬着头皮不去监控它。不过,我可能会再深入研究一下,看看是否有什么可以做的。
  • 我刚刚发布了一个可能是也可能不是您想要的答案。

标签: android titanium appcelerator titanium-mobile appcelerator-mobile


【解决方案1】:

由于我使用 AudioPlayer 功能来滚动我自己的播放列表,因此检测一首曲目何时完成非常重要,以便我可以请求下一个曲目。为 Android 和 iOS 引发了事件,but the actual STATE is not available on Android (3.0 SDK)。在 Android 上不是一个非常有用的事件。这就是我的选择:

var nextTrackIfEnd = function() { 

    if (Ti.Platform.name === 'android')
    {
        $.debug.text = "isPlaying: " + audioPlayer.isPlaying();
        if(!audioPlayer.isPlaying() && hasStarted)
        {
            nextTrack();
        }
    }
    else
    {
        $.debug.text = "state: " + audioPlayer.state;
        if(audioPlayer.state == 0)
        {
            nextTrack();
        }
    }
};
setInterval(nextTrackIfEnd, 500);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-06
    • 1970-01-01
    • 1970-01-01
    • 2012-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多