音频播放器在后台iOS模拟器上工作,但不在iOS设备上(相同版本)
问题描述:
我试图播放音频流,直到应用程序处于后台。音频播放器在后台iOS模拟器上工作,但不在iOS设备上(相同版本)
下面是代码:
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);
});
}
音频播放器对象之前,该方法intitialized:
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>
,我现在用的是事件触发正确处理和警报框。
答
好的,这不是一个错误: 如果你想在iOS上播放音频流(如webradio流),你必须设置“audioSessionMode”参数为“Titanium.Media.AUDIO_SESSION_MODE_PLAYBACK”(也许其他人值是否正确?)在您的audioPlayer实例中。
如果你不这样做,streamer将在后台模式下正常工作,但只有在使用iPhone模拟器而不是使用设备进行测试时。
希望这有助于别人。
有没有人得到它的工作? – SSS