首页 文章

MPMusicPlayerController在iPhone扬声器路由上杀死RemoteIO

提问于
浏览
0

我有一个使用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'成员,两者之间的上述结果没有差异 .

任何建议肯定赞赏

1 回答

  • 0

    我会继续回答我自己的问题,因为我认为我已经弄明白了 . 不过,我对结果不满意 .

    似乎MPMusicPlayerController(iPod播放器)正在改变音频路由,无论已经为其RemoteIO使用的应用程序是什么路径 . 事实证明,这种情况发生在iPhone和iPad上 .

    这可以通过以下方式轻松证明:

    • PlugIn USB音频输入设备

    • 连接蓝牙音箱

    • 设置系统iPod播放器以使用蓝牙音箱

    • 启动使用带有嵌入式MPMusicPlayerController的RemoteIO执行PlayRecord的应用程序

    • 音频I / O(PlayRecord)将从USB输入到接收器输出进行处理

    • Engage在嵌入式MPMusicPlayerController上播放

    结果:

    • 音频路由将更改为蓝牙输入/输出

    • Song将在BlueTooth扬声器上播放

    • RemoteIO将收到kAudioSessionBeginInterruption

    • 重新启动RemoteIO流将导致MPMusicPlayerController被停止

    我希望会发生什么:

    • MPMusicPlayerController将简单地播放应用程序已在使用的任何音频目标 .

    我已将Apple Bug添加上述信息 .

相关问题