我编程播放背景音乐的应用程序,这样做,我使用AVAudioSession像这样:AVAudioSession阻塞系统的音频
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[[AVAudioSession sharedInstance] setActive:YES error:nil];
NSData *data = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"song" ofType:@"mp3"]];
player = [[AVAudioPlayer alloc] initWithData:data error:NULL];
player.delegate = self;
[player setVolume:1.0];
...
[player prepareToPlay];
[player play];
然后,以后,用户必须禁用音乐的选项。如果他们选择这样做,下面的代码运行:
[[AVAudioSession sharedInstance] setActive:NO error:nil];
[player stop];
成功地停止音乐从播放。但是,如果音乐应用程序(或另一个如Spotify)的音乐开始播放,然后切换到该应用程序,用户音乐将淡出并暂停。我的应用程序的音乐无法播放,因为它仍然处于禁用状态,因此用户会保持沉默。
如何让我的应用程序暂停用户的音乐?
你为什么不进行逻辑控制?如果用户选择禁用音乐,则只需停止AVAudioPlayer即可。是否需要调用'[[AVAudioSession sharedInstance] setActive:NO error:nil]'? – 2013-04-04 20:26:42
这是为了解决问题而添加的。最初,我只是“停止”玩家,但这仍然导致了这个问题。 – Jumhyn 2013-04-04 20:31:09
另外,如果用户停用音乐,将音频会话设置为非活动状态是否有意义? – Jumhyn 2013-04-04 20:32:00