2010-05-01 301 views
2

作为主题...有可能吗?iphone,即使在静音或静音模式下如何播放声音?

感谢

再次,我重视的代码如下,请其步骤是错误的.thanks。

//@step 
AudioSessionInitialize (NULL, NULL, NULL, NULL); 
AudioSessionSetActive(true); 
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback; 
OSStatus error = AudioSessionSetProperty (kAudioSessionProperty_AudioCategory,           sizeof(sessionCategory),&sessionCategory); 

if (error) 
    printf("ERROR AudioSessionSetProperty ! %d\n", error); 

//@step 
NSString* filePath = @"AlarmClockBell.caf"; 
[Util restoreResourceFile:filePath]; 
filePath =[Util getFileFullPathFromSysDoc:filePath]; 
NSURL *soundFileURL = [NSURL fileURLWithPath:filePath]; 
NSError* error ; 
AVAudioPlayer * audioPalyer = [[AVAudioPlayer alloc] initWithContentsOfURL: soundFileURL error: &error]; 
if (nil == audioPalyer) 
{ 
    AppTrace3(self, @"Faild to play", soundFileURL, error); 
    return FALSE; 
} 
[audioPalyer prepareToPlay]; 
[audioPalyer setVolume: 5 ]; 
[audioPalyer setDelegate: self]; 
audioPalyer.numberOfLoops = 10; 

[audioPalyer play]; 

感谢...

+0

此代码是否最终工作?您是否解决了您的问题? – 2011-03-18 20:46:18

回答

0

它必须是,有已经有几场比赛我有哪些(即使它在静音模式)将播放声音。不幸的是,这是在尝试在课堂上秘密玩游戏时发现的。

至于如何真正做到这一点,我真的不知道。

+0

嗨,保罗,谢谢你的回答,游戏是否来自AppStore?我找到了一些解决方案,但它似乎只适用于解锁iPhone ... – iXcoder 2010-05-01 08:51:06

6

如果您查看音频会话类别下的文档,您会发现可设置的多种模式,以告知系统您的应用计划如何使用音频。默认值为AVAudioSessionCategorySoloAmbient,用于跟踪铃声/静音开关和屏幕锁定。

让自己的应用忽略铃声/静音开关的设置,你可以尝试改变类别:

#import <AudioToolbox/AudioToolbox.h> 

AudioSessionInitialize (NULL, NULL, NULL, NULL); 
AudioSessionSetActive(true); 

UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback; 
AudioSessionSetProperty (kAudioSessionProperty_AudioCategory, 
         sizeof(sessionCategory),&sessionCategory); 

如果你想允许iPod的音频继续在后台播放,您还需要检查kAudioSessionProperty_OverrideCategoryMixWithOthers

+0

嗨,拉敏,非常感谢你的答案,这是非常有益的,但我尝试做的方式,它仍然没有工作正常.. iPhone设备的音量为静音(音量调整为零),当代码运行时,它仍然没有声音,除非我通过手动调节音量... 我的代码如下: – iXcoder 2010-05-01 13:32:27

+0

对不起,这很难看....:{ – iXcoder 2010-05-01 13:36:00

+0

嗨,Ramin,我在上面的问题中添加了代码,请帮我检查一下,如果你有时间的话...谢谢! – iXcoder 2010-05-01 14:11:05

1

从iOS 6开始,有一种比Ramin's answer更紧凑的替代方法。

#import <AVFoundation/AVFoundation.h> 

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback 
             error:nil]; 

要允许从其他应用背景音乐继续播放,添加AVAudioSessionCategoryOptionMixWithOthers选项:

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback 
           withOptions:AVAudioSessionCategoryOptionMixWithOthers 
             error:nil]; 

有苹果的AVAudioSession Class Reference进一步的细节。

相关问题