AudioSessionGetProperty已弃用,如何知道设备是否已被静音

时间:2014-04-14 11:56:44

标签: ios avfoundation avaudiosession audiotoolbox

我正在尝试检测用户的设备是否已静音(手机侧面的按钮)。 我发现这种方法可以检测到这种情况,但在iOS7中不推荐使用AudioSessionGetProperty。

- (BOOL)deviceIsSilenced {    
    CFStringRef state;
    UInt32 propertySize = sizeof(CFStringRef);
    OSStatus audioStatus = AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &propertySize, &state);
    if (audioStatus == kAudioSessionNoError) {
        NSLog(@"audio route: %@", state) // "Speaker" regardless of silent switch setting, but "Headphone" when my headphones are plugged in
        return (CFStringGetLength(state) <= 0);
    }
    return NO;
}

任何人都有解决方案吗?

1 个答案:

答案 0 :(得分:0)

根据Sound Switch,没有公共API来检测静默开关的状态,但是它们提供了一个黑客攻击(使用公共API,因此被认为可以用于Ap Store批准,但仍然需要处理小心):

http://sharkfood.com/content/Developers/content/Sound%20Switch/