24

過去にこの方法を使用して、サイレント スイッチが有効になっているかどうかを検出しました。

- (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 フォーラムで回答を見つけることができませんでした。

あなたが助けてくれることを願っています...

4

2 に答える 2

8

iOS 5以降、サイレントスイッチの状態を検出できなくなりました...

Apple からの回答は、受け入れられた回答にあります: Detecting the iPhone's Ring / Silent / Mute switch using AVAudioPlayer not working?

于 2011-11-07T12:47:21.457 に答える
1

iOS 開発者ライブラリに記載されているように、プロパティ kAudioSessionProperty_AudioRoute は非推奨です。代わりに、kAudioSessionProperty_AudioRouteDescription を使用します

https://developer.apple.com/library/ios/#documentation/AudioToolbox/Reference/AudioSessionServicesReference/Reference/reference.html

この質問はここで回答されています: AVAudioPlayer を使用した iPhone のリング/サイレント/ミュート スイッチの検出が機能していませんか?

于 2011-10-25T09:15:49.137 に答える