我过去曾使用过这种方法来检测是否启用了静音开关:
- (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;
}
我的iPad或iPhone上的iOS5不再有效。这是一个已知的问题?我无法在堆栈溢出或Apple dev论坛上找到任何答案。
希望你能帮忙......
答案 0 :(得分:8)
自iOS 5以来,我们将无法再检测静音开关状态......
Apple的回答是接受的答案:Detecting the iPhone's Ring / Silent / Mute switch using AVAudioPlayer not working?
答案 1 :(得分:1)
如iOS Developer Library中所述,不推荐使用属性kAudioSessionProperty_AudioRoute。 而是使用kAudioSessionProperty_AudioRouteDescription
这个问题已在这里得到解答: Detecting the iPhone's Ring / Silent / Mute switch using AVAudioPlayer not working?