【发布时间】:2012-04-01 13:01:55
【问题描述】:
我有一个使用 RemoteIO 进行输入输出处理(PlayAndRecord 类别)的应用程序,还包括一个 MPMusicPlayerController。
奇怪的是:仅在 iPhone 上,当 RemoteIO 正在运行并且 iPhone 扬声器是音频目标时,在 MPMusicPlayerController 中开始播放将导致 kAudioSessionBeginInterruption 事件并且我的 RemoteIO 被关闭。 iPod 音乐 (MPMusicPlayerController) 继续播放。
似乎在 iPhone 上,使用 Speaker 路由,RemoteIO 和 MPMusicPlayerController 不能同时播放?在 iPad 上,我运行 RemoteIO 和 MPMusicPlayerController 都没有问题。在 iPhone 上,如果我将某些东西(耳机、扬声器等)插入耳机插孔,一切正常,两个流都会运行。如果扬声器是目的地,这似乎只是 iPhone 上的问题。
当检测到 Receiver 输出时,我将 AudioSession 输出覆盖到 iPhone 扬声器 (kAudioSessionProperty_OverrideCategoryDefaultToSpeaker),这样做是为了让用户更自然地期望。 iPod 播放器似乎也能做到这一点。
我还将属性 kAudioSessionProperty_OverrideCategoryMixWithOthers 设置为 true。这允许 iPod 播放器(大概)一起播放。
我写了一些测试代码来稍后重新启动我的 RemoteIO 会话,这反过来会导致 MPMusicPlayerController 停止播放。从而表明说话人目的地可能是独占的?
我也尝试过 MPMusicPlayerController 的 'iPodMusicPlayer' 和 'applicationMusicPlayer' 成员,两者的上述结果没有区别。
任何建议都值得赞赏
【问题讨论】:
-
经过进一步测试并发现 iPhone 扬声器目的地是唯一奇怪的情况(iPad 工作正常,耳机工作正常),我已向 Apple 提交了一个错误。
标签: ios audio core-audio