即使在iPhone的静音模式下,我也想播放声音。如何在iPhone的静音模式下使用AVAudioPlayer播放声音
它可以通过提前使用AVAudioPlayer(不使用AVAudioSession)
(适用于iOS 3.0+)
感谢来完成。
即使在iPhone的静音模式下,我也想播放声音。如何在iPhone的静音模式下使用AVAudioPlayer播放声音
它可以通过提前使用AVAudioPlayer(不使用AVAudioSession)
(适用于iOS 3.0+)
感谢来完成。
其实,你可以做到这一点。它通过音频会话进行控制,与AVAudioPlayer
本身无关。你为什么不想使用AudioSession?他们在一起玩得很好...
在你的应用程序中,你应该初始化音频会话,然后你也可以告诉表明你打算播放什么样的音频。如果您是音乐播放器,那么即使启用了振铃/静音开关,用户也希望听到音频。
AudioSessionInitialize (NULL, NULL, NULL, NULL);
AudioSessionSetActive(true);
// Allow playback even if Ring/Silent switch is on mute
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty (kAudioSessionProperty_AudioCategory,
sizeof(sessionCategory),&sessionCategory);
我有一个应用程序,我做的这事,并使用AVAudioPlayer播放音频,并启用了环/静音开关,我可以听到声音。
UPDATE(2013年11月6日)
在我上面提到的,其中I以上成功地使用的代码,我有(一段时间)被用下面的代码代替来达到同样的应用结果:
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 }
我想我会张贴此作为替代,根据最新评论这个答案。 :-)
感谢你的回应,它工作得很好:) – Nima 2012-04-26 20:02:06
很高兴听到它。 :-) – 2012-04-26 20:07:02
我曾经使用这种方法,但现在一天它似乎不再工作。有没有其他人注意到这一点? – 2013-11-06 01:27:27
MarkGranoff's solution是正确的。但是,如果您更喜欢在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
)
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
try AVAudioSession.sharedInstance().setActive(true)
如果设备是静音模式,不播放声音。用户明确要求保持沉默! – 2012-04-25 19:15:34
为什么没有AVAudioSession? – 2012-04-25 19:44:07
@JonathanGrynspan - 当用户_remembers_他们请求沉默时有意义,但如果您制作AV性质的应用程序,您将被这种评论淹没:“音频不工作★☆☆☆☆” – 2012-10-10 15:34:14