MPMusicPlayerController杀死iPhone上的RemoteIO扬声器路线
我有一个应用程序使用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_OverrideCategoryDefaultToSpeaker),这对用户来说是更自然的期望。 iPod播放器似乎也这样做。
我还将属性kAudioSessionProperty_OverrideCategoryMixWithOthers设置为true。这可以让iPod播放器(大概)一起玩。
我写了一些测试代码,稍后重新启动我的RemoteIO会话,这将导致MPMusicPlayerController停止播放。因此表明演讲者的目的地可能是排他性的?
我也尝试过使用MPMusicPlayerController的'iPodMusicPlayer'和'applicationMusicPlayer'成员,这两者之间的上述结果没有任何区别。
任何意见肯定赞赏
我会继续前进,回答我的问题,因为我想我已经想通了。尽管如此,我对结果并不满意。
似乎MPMusicPlayerController(iPod Player)正在更改音频路由,无论使用的是RemoteIO的应用程序的路由。事实证明,这发生在iPhone和iPad上。
这可以很容易地证明:
- 的PlugIn USB音频输入设备
- 连接蓝牙音箱
- 设置系统的iPod播放器使用的蓝牙音箱
- 启动应用PlayRecord使用RemoteIO与不嵌入式MPMusicPlayerController
- 音频I/O(PlayRecord)将从USB输入处理到接收器输出
- 搞嵌入式MPMusicPlayerController播放
结果:
- 音频路线将改为蓝牙输入/输出
- 宋将蓝牙扬声器播放
- RemoteIO将收到kAudioSessionBeginInterruption
- 重启RemoteIO流将导致MPMusicPlayerController停止运行
我想会发生什么:
- MPMusicPlayerController只会起到任何音频目的地已经是由应用程序使用。
我附加了我的Apple Bug以上信息。
经过进一步测试,发现iPhone扬声器目的地是唯一的奇怪情况(iPad正常工作,耳机工作正常)后,我已经向Apple提交了一个Bug。 – MOK9 2012-04-05 00:05:19