从其他应用程序播放音频

Play Audio from other apps

所以当我启动我的应用程序时,我希望能够知道何时正在播放来自另一个应用程序的音乐(系统、soundcloud、pandora、spotify 等)。

我可以这样做:

BOOL isOtherAudioPlaying = [[AVAudioSession sharedInstance] isOtherAudioPlaying];
if (isOtherAudioPlaying){
    NSLog(@"Playing Music");
}else{
    NSLog(@"Not Playing Music");
}

而且我可以使用以下代码 play/pause iPod 音乐播放器:

[[MPMusicPlayerController systemMusicPlayer] play];
[[MPMusicPlayerController systemMusicPlayer] pause];

但是,这仅在我使用默认 iOS 音乐应用时有效。

如果我从另一个应用程序(例如 SoundCloud)听音乐。该代码不起作用。它仍然 play/pause iOS 音乐应用。

问题:

有没有什么办法可以让playing/pausing当前正在播放的音乐不受应用程序的影响?

Is there any way of playing/pausing music that is being currently played regardless of the app?

将您的 AVAudioSession 的类别设置为播放(或类似类别)并激活它。其他应用程序正在播放的任何背景音频都将停止。

matt 是正确的,您无法控制其他音频是否暂停。你必须:

  1. 开始您的音频会话
  2. 准备好处理系统所做的一切

How The System Resolves Competing Audio Demands

我需要同时播放和录制音频,并且无法停止背景音乐。

我能够通过此音频设置做到这一点:

AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setActive: NO error: nil];
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord  withOptions: AVAudioSessionCategoryOptionMixWithOthers error:nil];
[audioSession setActive:YES error:nil];

这里有 table 个音频 session 类别,可帮助您找到所需效果的类别。 https://developer.apple.com/library/ios/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/ConfiguringanAudioSession/ConfiguringanAudioSession.html

这是完整的音频 Session 节目指南,它帮助我了解更多并解决了我的问题 https://developer.apple.com/library/ios/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/AudioSessionCategoriesandModes/AudioSessionCategoriesandModes.html#//apple_ref/doc/uid/TP40007875-CH10-SW1