0

我正在尝试播放音频流,直到应用程序处于后台。

这是代码:

var service;

if(isiOS4Plus()){
    Ti.App.addEventListener('resumed',function(e){
        if(service!=null){
                    if(winPlayer.controlStreamer)// if my controller (containing the audio player object) exists
                    {
                            //function that redeclare intervals and event listeners
                            winPlayer.controlStreamer.foregroundStreamer();
                    }
                    service.stop();
                    service.unregister();
            }
     });

    Ti.App.addEventListener('pause',function(e){
        if(winPlayer.controlStreamer)// if my controller (containing the audio player object) exists
            {
                    //function that stop and remove intervals and event listeners
                    winPlayer.controlStreamer.backgroundStreamer();
            }
            service = Titanium.App.iOS.registerBackgroundService({url:'/player/sound.js'});
            Ti.API.info("registered background service = "+service);
    });

}

音频播放器对象在此方法之前被初始化:

this.streamer=Titanium.Media.createAudioPlayer({url:this.url_stream_stetienne,bufferSize:1000000});

这是我的问题:当我在 iOS 模拟器(iOS 5.0)上运行应用程序时,流播放器继续播放(我想要它做的),但是当我在 iOS 设备(iOS 5.0)上测试它时,音量减小并且播放器停止。

注意:文件 info.plist 包含以下几行:

<key>UIBackgroundModes</key>
    <array>
        <string>audio</string>
    </array>

我现在使用警报框,表明事件已正确触发和处理。

4

1 回答 1

0

好的,这不是错误:如果您想在 iOS 上播放音频流(如网络广播流),您必须将“audioSessionMode”参数设置为“Titanium.Media.AUDIO_SESSION_MODE_PLAYBACK”(也许其他值是正确的?)在您的 audioPlayer 实例中。

如果您不这样做,流媒体将在后台模式下正常工作,但前提是使用 iPhone 模拟器而不是设备进行测试。

希望这对其他人有帮助。

于 2012-08-30T09:53:05.510 回答