如何在iPhone的静音模式下使用AVAudioPlayer播放声音
我想在iPhone中甚至在静音模式下播放声音 可以通过使用AVAudioPlayer(不使用AVAudioSession)来完成吗 (适用于ios 3.0+)如何在iPhone的静音模式下使用AVAudioPlayer播放声音,iphone,ios,avaudioplayer,silent,Iphone,Ios,Avaudioplayer,Silent,我想在iPhone中甚至在静音模式下播放声音 可以通过使用AVAudioPlayer(不使用AVAudioSession)来完成吗 (适用于ios 3.0+) 提前谢谢。事实上,你可以这样做。它通过音频会话控制,与AVAudioPlayer本身无关。为什么不想使用AudioSession?他们一起玩得很好 在你的应用程序中,你应该初始化音频会话,然后你还可以告诉他们你打算播放什么类型的音频。如果你是一个音乐播放器,那么即使在铃声/静音开关启用的情况下,用户想要听到音频也是有道理的 我有一个应用程
提前谢谢。事实上,你可以这样做。它通过音频会话控制,与
AVAudioPlayer
本身无关。为什么不想使用AudioSession?他们一起玩得很好
在你的应用程序中,你应该初始化音频会话,然后你还可以告诉他们你打算播放什么类型的音频。如果你是一个音乐播放器,那么即使在铃声/静音开关启用的情况下,用户想要听到音频也是有道理的
我有一个应用程序,我做这件事,并使用AVAudioPlayer播放音频,并与铃声/静音开关启用,我可以听到音频
更新(2013年11月6日)
在我上面提到的应用程序中,我成功地使用了上述代码,我(一段时间以来)一直在使用以下代码来实现相同的结果:
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
NSError *error = nil;
BOOL result = NO;
if ([audioSession respondsToSelector:@selector(setActive:withOptions:error:)]) {
result = [audioSession setActive:YES withOptions:0 error:&error]; // iOS6+
} else {
[audioSession setActive:YES withFlags:0 error:&error]; // iOS5 and below
}
if (!result && error) {
// deal with the error
}
error = nil;
result = [audioSession setCategory:AVAudioSessionCategoryPlayback error:&error];
if (!result && error) {
// deal with the error
}
AVAudioSession*audioSession=[AVAudioSession sharedInstance];
n错误*错误=nil;
BOOL结果=否;
if([audioSession respondsToSelector:@selector(setActive:withOptions:error:)])){
结果=[audioSession setActive:YES with选项:0错误:&error];//iOS6+
}否则{
[audioSession setActive:是,带标志:0错误:&错误];//iOS5及以下版本
}
if(!result&&error){
//处理错误
}
误差=零;
结果=[audioSession setCategory:AVAudioSessionCategoryPlayback错误:&error];
if(!result&&error){
//处理错误
}
考虑到最近对这个答案的评论,我想我会把这个作为一个替代方案发布出来。:-) 是正确的。但是,如果您更喜欢在Obj-c而不是c中执行此操作,则以下操作也可以:
NSError *error = nil;
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&error];
[[AVAudioSession sharedInstance] setActive:YES error:&error];
以上答案是正确的。以下是Swift版本
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
//print("AVAudioSession Category Playback OK")
do {
try AVAudioSession.sharedInstance().setActive(true)
//print("AVAudioSession is Active")
} catch _ as NSError {
//print(error.localizedDescription)
}
} catch _ as NSError {
//print(error.localizedDescription)
}
这将简单地实现这个技巧(使用
AVAudioSession
)
Swift 4简单版:
try? AVAudioSession.sharedInstance().setCategory(.playback, mode: .default, options: [])
如果设备处于静音模式,请勿播放声音。用户已明确请求静默@JonathanGrynspan——当用户记得他们要求保持沉默时,这是有道理的,但是如果你制作的应用是AV性质的,你就会被这种评论淹没:“音频不工作★☆☆☆☆"我曾经使用过这种方法,但现在它似乎已经不起作用了。有人注意到了吗?@iphone不知道该告诉你什么。我在2013年11月6日发布的代码是我今天在应用商店的一个应用程序中的代码。它在我自己的手机上(大惊喜)。当我的手机铃声/静音开关设置为静音时,我听到应用程序的音频(静音)。您的音量不能一直调低;请确保您的音量已调高。除了向用户显示音量和播放控制UI之外,如果存在此问题,您没有任何编程方式可以调高音量。谢谢。我更喜欢使用Obj-C代码来实现此目的:)工作完美删除代码中的错误检查不会使其成为Obj-C,您的ans与原始ans完全相同MarkGranoff@Thiru这个答案现在已经无关紧要了。但它是在马克编辑之前发布的。
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
try AVAudioSession.sharedInstance().setActive(true)
try? AVAudioSession.sharedInstance().setCategory(.playback, mode: .default, options: [])