2013-10-10 58 views
0

是否有可能,如果iPhoneiPhone:如果振动启用

Settings -> Sounds -> Vibrate on Ring 

的系统选项启用以编程方式检查程序检查?

在我的应用程序中,如果该选项被禁用,我想向用户显示警报。

回答

-1

可能是你可以给它一个尝试,确保你在运行的iDevice应用,因为模拟器不具有静音或响铃模式:)

新编辑

-(BOOL)silenced 
{ 
    #if TARGET_IPHONE_SIMULATOR 
     // return NO in simulator. Code causes crashes for some reason. 
    return NO; 
    #endif 

    CFStringRef state; 
    UInt32 propertySize = sizeof(CFStringRef); 
    AudioSessionInitialize(NULL, NULL, NULL, NULL); 
    AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &propertySize, &state); 
    if(CFStringGetLength(state) > 0) 
     return NO; 
    else 
     return YES; 
} 

你可以这样调用这个方法

if ([self silenced]) 
{ 
    NSLog(@"silenced"); 
} else { 
    NSLog(@"not silenced"); 
} 

希望它能帮助你!

+0

谢谢,但它没有工作... – Pawel

+0

看看我编辑的答案,希望它会帮助你。 –

+0

我测试了振动打开/关闭和静音开关开/关的算法,但在所有4种情况下,“状态”的值都是@“扬声器”......(在iPhone 5,iOS 7.0.2上测试)。 – Pawel

0

你不能。因为苹果不提供API来访问iPhone设置应用程序。