Nim*_*ima 18 iphone silent avaudioplayer ios
我想在iPhone中以静音模式播放声音.
可以通过使用AVAudioPlayer(不使用AVAudioSession)来完成
(适用于ios 3.0+)
提前致谢.
Mar*_*off 28
实际上,你可以做到这一点.它通过音频会话控制,与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);
Run Code Online (Sandbox Code Playgroud)
我有一个应用程序,我做这件事,并使用AVAudioPlayer播放音频,并启用环/静音开关,我可以听到音频.
更新(2013年6月11日)
在我上面提到的应用程序中,我成功使用上面的代码,我(有一段时间)使用以下代码来实现相同的结果:
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
}
鉴于对此答案的最新评论,我认为我会将此作为替代方案发布.:-)
wL_*_*wL_ 24
MarkGranoff的解决方案是正确的.但是,如果您更喜欢在Obj-c而不是C中执行此操作,则以下操作也适用:
NSError *error = nil;
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&error];
[[AVAudioSession sharedInstance] setActive:YES error:&error];
Run Code Online (Sandbox Code Playgroud)
以上答案都是正确的。以下是 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)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11594 次 |
| 最近记录: |