音频播放器在后台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模拟器而不是使用设备进行测试时。

希望这有助于别人。

+0

有没有人得到它的工作? – SSS