问题在于AVAudioPlayer本身就应该运行。当设备未处于静音模式时(静音/振铃开关打开),它会播放背景音乐。当静音开关打开时,它也会尊重此状态并且不播放背景音乐。
然而,AVAudioPlayer在静音模式下播放的一个特殊情况是我在MPMoviePlayer中播放视频。
在我的应用程序中,在播放电影之前首先播放BG声音。
有人可以帮忙吗?这只发生在我播放电影时。
其他细节:
BG Loop使用 - m4a型
使用的电影类型 - m4v
我还发现这个场景在iOS 5中反复出现,但有时甚至会在最新版本中出现。
我已经在Google,Apple的文档中进行过各种研究,但在SO中我却无法找到有关此特定情况的任何内容。
我甚至尝试将AVAudioSession的类别显式设置为AVAudioSessionCategoryAmbient,然后调用setActive。 (还尝试了setCategory:withOptions:error
方法,但应用程序因某些原因崩溃 - 在设备上测试)
当我尝试使用AVAudioPlayerDelegate
时,我甚至尝试设置委托和实现方法。
帮助任何人? :(
答案 0 :(得分:1)
NSURL *url = [NSURL URLWithString:self.videoURL];
MPMoviePlayerViewController *mpvc = [[MPMoviePlayerViewController alloc] initWithContentURL:url];
NSError *_error = nil;
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: &_error];
[self presentMoviePlayerViewControllerAnimated:mpvc];
添加此框架
#import <AVFoundation/AVFoundation.h>
尝试这样......
答案 1 :(得分:1)
尝试以这种方式设置音频会话
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
NSError *err = nil;
[audioSession setCategory :AVAudioSessionCategoryPlayAndRecord error:&err];
if(err){
NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]);
return;
}
[audioSession setActive:YES error:&err];
err = nil;
if(err){
NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]);
return;
}