2012-04-01 62 views
0

我有一個應用程序使用RemoteIO進行輸入輸出處理(PlayAndRecord類別),並且還包含一個MPMusicPlayerController。MPMusicPlayerController殺死iPhone上的RemoteIO揚聲器路線

奇怪的是:在iPhone上,當RemoteIO正在運行且iPhone揚聲器是音頻目標時,在MPMusicPlayerController中開始播放將導致kAudioSessionBeginInterruption事件,並且我的RemoteIO已關閉。 iPod音樂(MPMusicPlayerController)繼續播放。

看來,在iPhone上,與揚聲器路由,RemoteIO和MPMusicPlayerController不能同時播放?在iPad上,我運行RemoteIO和MPMusicPlayerController都沒有問題。在iPhone上,如果我將一些東西(耳機,揚聲器等)插入耳機插孔,一切都可以正常工作,並且兩個流都可以運行。這似乎只是iPhone上的一個問題,如果揚聲器是目的地。

當檢測到Receiver輸出時,我會覆蓋AudioSession輸出到iPhone揚聲器(kAudioSessionProperty_OverrideCategoryDe​​faultToSpeaker),這對用戶來說是更自然的期望。 iPod播放器似乎也這樣做。

我還將屬性kAudioSessionProperty_OverrideCategoryMixWithOthers設置爲true。這可以讓iPod播放器(大概)一起玩。

我寫了一些測試代碼,稍後重新啓動我的RemoteIO會話,這將導致MPMusicPlayerController停止播放。因此表明演講者的目的地可能是排他性的?

我也嘗試過使用MPMusicPlayerController的'iPodMusicPlayer'和'applicationMusicPlayer'成員,這兩者之間的上述結果沒有任何區別。

任何意見肯定讚賞

+0

經過進一步測試,發現iPhone揚聲器目的地是唯一的奇怪情況(iPad正常工作,耳機工作正常)後,我已經向Apple提交了一個Bug。 – MOK9 2012-04-05 00:05:19

回答

0

我會繼續前進,回答我的問題,因爲我想我已經想通了。儘管如此,我對結果並不滿意。

似乎MPMusicPlayerController(iPod Player)正在更改音頻路由,無論使用的是RemoteIO的應用程序的路由。事實證明,這發生在iPhone和iPad上。

這可以很容易地證明:

  • 的PlugIn USB音頻輸入設備
  • 連接藍牙音箱
  • 設置系統的iPod播放器使用的藍牙音箱
  • 啓動應用PlayRecord使用RemoteIO與不嵌入式MPMusicPlayerController
  • 音頻I/O(PlayRecord)將從USB輸入處理到接收器輸出
  • 搞嵌入式MPMusicPlayerController播放

結果:

  • 音頻路線將改爲藍牙輸入/輸出
  • 宋將藍牙揚聲器播放
  • RemoteIO將收到kAudioSessionBeginInterruption
  • 重啓RemoteIO流將導致MPMusicPlayerController停止運行

我想會發生什麼:

  • MPMusicPlayerController只會起到任何音頻目的地已經是由應用程序使用。

我附加了我的Apple Bug以上信息。