如何在静音模式下播放声音文件iPhone sdk?

时间:2010-12-01 08:12:25

标签: iphone objective-c xcode ios4 silent

如何在静音模式iPhone sdk中播放声音文件?

我试图以静音模式播放声音文件,但结果为零

我试过这段代码

SystemSoundID soundID;
AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:fullpath],&soundID);
AudioServicesPlaySystemSound (soundID);

当我导入头文件

#import <AudioToolbox/AudioToolbox.h>

创建错误

错误:'\ x786f7073'之前的预期标识符

Asnwer尽快.....

提前致谢

方面

StupidiPhoneDeveloper

2 个答案:

答案 0 :(得分:3)

您必须定义一个静音开关未静音的音频会话类别。

查看apple dev网站上的音频会话页面:http://developer.apple.com/library/ios/#documentation/Audio/Conceptual/AudioSessionProgrammingGuide/AudioSessionCategories/AudioSessionCategories.html%23//apple_ref/doc/uid/TP40007875-CH4-SW1

也许你需要AVAudioSessionCategoryPlayAndRecord。

答案 1 :(得分:3)

感谢Buddy这么快的回复 我找到了解决方案

通过以下代码,您可以查看您的iPhone配置文件(常规/静音) 这是代码

CFStringRef state; 
UInt32 propertySize = sizeof(CFStringRef); 
AudioSessionInitialize(NULL, NULL, NULL, NULL);
AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &propertySize, &state);

if(CFStringGetLength(state) == 0) { 
    //SILENT
NSLog(@"Silent switch is on");

    //create vibrate
    AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
    //this 2 line below use to play audio even in silent/vibrator mode too      

    UInt32 audioCategory = kAudioSessionCategory_MediaPlayback;
    AudioSessionSetProperty( kAudioSessionProperty_AudioCategory, sizeof(UInt32), &audioCategory);
}
else {
    //NOT SILENT
    NSLog(@"Silent switch is off");
}

关于此错误

error: expected identifier before '\x786f7073'

只需在每个类头文件中写下以下行

#import <AudioToolbox/AudioToolbox.h>