从其他应用播放音频

时间:2015-05-30 17:55:39

标签: ios audio mpmusicplayercontroller

因此,当我启动我的应用程序时,我希望能够分辨出其他应用程序的音乐播放时间(系统,声音广告,pandora,spotify等)。

我能够这样做:

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

我可以使用以下代码播放/暂停iPod音乐播放器:

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

但是,这只适用于我使用默认的iOS音乐应用程序。

如果我从另一个应用程序(例如SoundCloud)收听音乐。代码不起作用。它仍将播放/暂停iOS音乐应用。

问题:

是否有任何播放/暂停当前正在播放的音乐的方式?

3 个答案:

答案 0 :(得分:0)

  

是否有任何播放/暂停当前正在播放的音乐的方式?

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

答案 1 :(得分:0)

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

  1. 开始音频会话
  2. 准备好处理系统所做的一切
  3. How The System Resolves Competing Audio Demands

答案 2 :(得分:-1)

我需要同时播放和录制音频,并且在停止背景音乐方面遇到了麻烦。

我能够通过此音频设置完成此操作:

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

以下是音频会话类别表,可帮助您找到所需效果的类别。 https://developer.apple.com/library/ios/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/ConfiguringanAudioSession/ConfiguringanAudioSession.html

以下是整个音频会话计划指南,它帮助我了解更多并解决了我的问题 https://developer.apple.com/library/ios/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/AudioSessionCategoriesandModes/AudioSessionCategoriesandModes.html#//apple_ref/doc/uid/TP40007875-CH10-SW1