【发布时间】:2013-04-04 20:22:40
【问题描述】:
我正在编写一个播放背景音乐的应用程序,为此我正在使用 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]吗? -
这是为了解决问题而添加的。最初,我只是
stopping 播放器,但这仍然导致了这个问题。 -
另外,如果用户停用音乐,将音频会话设置为不活动是否有意义?
-
尝试删除
setActive:并致电[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:nil]; -
成功了!提交作为答案,我会接受。
标签: iphone objective-c avaudioplayer avaudiosession