在 iOS 中播放声音会暂停背景音乐
Posted
技术标签:
【中文标题】在 iOS 中播放声音会暂停背景音乐【英文标题】:Playing a sound in iOS pauses background music 【发布时间】:2012-11-15 01:00:27 【问题描述】:如何在不暂停背景音乐的情况下在 ios 中播放声音?
我有这个:
NSString *soundPath = [[NSBundle mainBundle] pathForResource:@"alert" ofType:@"wav"];
NSURL *url = [NSURL URLWithString:soundPath];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:nil];
AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL: url error:nil];
audioPlayer.numberOfLoops = 0;
[audioPlayer play];
然而任何背景音乐都停止了。我错过了什么?
我也试过了,没用:
- (void)alarm:(CDVInvokedUrlCommand *)command
[self setupAudioSession];
NSString *soundPath = [[NSBundle mainBundle] pathForResource:@"alert" ofType:@"wav"];
NSURL *url = [NSURL URLWithString:soundPath];
AVPlayer *audioPlayer = [[AVPlayer alloc] initWithURL: url];
[audioPlayer play];
- (void)setupAudioSession
AudioSessionInitialize(NULL,NULL,NULL,NULL);
OSStatus activationResult = 0;
activationResult = AudioSessionSetActive(true);
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty
(
kAudioSessionProperty_AudioCategory,
sizeof(sessionCategory),
&sessionCategory
);
OSStatus propertySetError = 0;
UInt32 allowMixing = true;
propertySetError = AudioSessionSetProperty
(
kAudioSessionProperty_OverrideCategoryMixWithOthers,
sizeof(allowMixing),
&allowMixing
);
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:nil];
【问题讨论】:
【参考方案1】:您需要设置适当的音频会话,如下所示:
AudioSessionInitialize(NULL,NULL,NULL,NULL);
OSStatus activationResult = 0;
activationResult = AudioSessionSetActive(true);
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty
(
kAudioSessionProperty_AudioCategory,
sizeof(sessionCategory),
&sessionCategory
);
OSStatus propertySetError = 0;
UInt32 allowMixing = true;
propertySetError = AudioSessionSetProperty
(
kAudioSessionProperty_OverrideCategoryMixWithOthers,
sizeof(allowMixing),
&allowMixing
);
【讨论】:
奇怪,当我使用AVPlayer
时,它似乎工作得很好。 AVPlayer
适合您吗?可能你可以尝试一下,至少看看代码是否正常工作(它应该)。
我用我尝试的方法更新了我的示例,背景声音正在停止。
取出最后一行[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:nil];
仍然停止音乐。这是一个 wav 的事实吗?
不应该,我也在播放一个wav文件,你的代码看起来不错。很奇怪。这是您项目中唯一尝试开始任何类型音频会话的地方吗?以上是关于在 iOS 中播放声音会暂停背景音乐的主要内容,如果未能解决你的问题,请参考以下文章