首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AVAudioSession阻止系统音频

AVAudioSession阻止系统音频
EN

Stack Overflow用户
提问于 2013-04-05 04:22:41
回答 2查看 6K关注 0票数 3

我正在编写一个播放背景音乐的应用程序,为此,我使用AVAudioSession,如下所示:

代码语言:javascript
复制
[[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];

然后,稍后,用户可以选择禁用音乐。如果他们选择这样做,则运行以下代码:

代码语言:javascript
复制
[[AVAudioSession sharedInstance] setActive:NO error:nil];
[player stop];

这成功地停止了音乐的播放。但是,如果启动了来自音乐应用程序(或其他应用程序,如Spotify)的音乐,然后切换到该应用程序,则用户的音乐将淡出并暂停。我的应用程序的音乐不会播放,因为它仍然是禁用的,所以用户将保持沉默。

如何防止我的应用程序暂停用户的音乐?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-05 04:37:32

当用户选择删除音频时,您必须执行以下操作:

代码语言:javascript
复制
[player stop];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:nil];
票数 10
EN

Stack Overflow用户

发布于 2013-04-05 04:36:42

您需要设置您的音频会话类别

代码语言:javascript
复制
NSError *categoryError = nil;
[audioSession setCategory: AVAudioSessionCategoryAmbient error: &categoryError];

如果你将其设置为AVAudioSessionCategorySoloAmbient (默认设置),它将杀死背景音乐,并让你的应用程序接管,即使你不在播放音乐。当您想要播放音乐时,最好将其设置为SoloAmbient,当用户禁用音乐时,将其设置为Ambient。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15821000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档