2012-04-01 7 views
0

私は、入出力処理(PlayAndRecordカテゴリ)にRemoteIOを使用するアプリケーションを持っており、MPMusicPlayerControllerも含んでいます。MPMusicPlayerController iPhone上のRemoteIOを終了するSpeaker route

奇妙なこと:iPhoneの場合、RemoteIOが動作し、iPhone Speakerがオーディオの宛先である場合、MPMusicPlayerControllerで再生を開始するとkAudioSessionBeginInterruptionイベントが発生し、RemoteIOがシャットダウンします。 iPodの音楽(MPMusicPlayerController)は引き続き再生されます。

スピーカールートを使用したiPhoneでは、RemoteIOとMPMusicPlayerControllerの両方を再生できないようですか? iPadでは、RemoteIOとMPMusicPlayerControllerの両方を実行しても問題はありませんでした。 iPhoneの場合、ヘッドセットのジャックに何か(ヘッドフォン、スピーカーなど)を接続すると、すべてうまく動作し、両方のストリームが動作します。スピーカーが目的地であれば、それはiPhone上でのみ問題になるようです。

Iは、iPhoneスピーカー(kAudioSessionProperty_OverrideCategoryDe​​faultToSpeaker)にAudioSession出力をオーバーライドするレシーバ出力が検出された場合、これはユーザにとってより自然な期待であることが行われます。 iPodのプレーヤーもこれをやっているようだ。

また、プロパティkAudioSessionProperty_OverrideCategoryMixWithOthersをtrueに設定しました。これにより、iPodプレイヤーは(おそらく)一緒にプレイすることができます。

私は後でRemoteIOセッションを再開するためのテストコードを書いたので、MPMusicPlayerControllerが再生を停止します。したがって、話し手の宛先が排他的であることを示すか?

MPMusicPlayerControllerの 'iPodMusicPlayer'と 'applicationMusicPlayer'の両方のメンバーで試してみましたが、上記の結果に違いはありませんでした。

何かアドバイスは確かに私はそれを考え出したと思うので、私は、先に行くと自分の質問にお答えします

+0

これをさらにテストして唯一の奇妙なケース(iPadはうまく動作し、ヘッドセットは正常に動作する)であることを確認した後、Appleにバグを提出しました。 – MOK9

答えて

0

を高く評価しました。それでも、私は結果に満足していません。

MPMusicPlayerController(iPod Player)は、すでにRemoteIO用に使用しているアプリケーションのルートにかかわらず、Audio Routeを変更しているようです。これは、iPhoneとiPadの両方で発生します。

これは簡単で証明することができる。

  • プラグインのUSBオーディオ入力デバイス
  • 接続ブルートゥーススピーカーPlayRecordがでRemoteIOを使用しない
  • 起動アプリのブルートゥーススピーカーを使用するシステムのiPodプレーヤーを設定し
  • を埋め込みMPMusicPlayerController
  • オーディオ入力(PlayRecord)は、USB入力からレシーバ出力まで処理します
  • が埋め込まMPMusicPlayerControllerにプレイを掛け

結果:

    ブルートゥース入力/出力に変更されます
  • オーディオルート
  • ソングが
  • RemoteIOがkAudioSessionBeginInterruption
  • 再起動RemoteIOを受け取ることになりますブルートゥーススピーカーで再生されます
  • ストリームは、MPMusicPlayerControllerが停止される結果となる。
0私はどうなる希望何

  • MPMusicPlayerControllerは、単にアプリケーションによってすでに使用されているオーディオ何でも先に再生されます。

上記の情報をアップルバグに追加しました。

関連する問題