我正在编写一个播放背景音乐的应用程序,为此,我使用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)的音乐,然后切换到该应用程序,则用户的音乐将淡出并暂停。我的应用程序的音乐不会播放,因为它仍然是禁用的,所以用户将保持沉默。
如何防止我的应用程序暂停用户的音乐?
发布于 2013-04-05 04:37:32
当用户选择删除音频时,您必须执行以下操作:
[player stop];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:nil];发布于 2013-04-05 04:36:42
您需要设置您的音频会话类别
NSError *categoryError = nil;
[audioSession setCategory: AVAudioSessionCategoryAmbient error: &categoryError];如果你将其设置为AVAudioSessionCategorySoloAmbient (默认设置),它将杀死背景音乐,并让你的应用程序接管,即使你不在播放音乐。当您想要播放音乐时,最好将其设置为SoloAmbient,当用户禁用音乐时,将其设置为Ambient。
https://stackoverflow.com/questions/15821000
复制相似问题