如何在iOS6中检测iPhone静音按钮状态

时间:2013-08-20 07:01:20

标签: iphone ipad ios6 silent mute

我一直在使用以下代码来检测iPhone静音按钮状态但它有时可以工作但通常不起作用。我搜索了很多,但还不能找出解决方案。

- (void)playWordSoundWithFile:(NSString *)filePath {

audioPlayer = nil;



if (filePath) {

    NSArray *list = [filePath componentsSeparatedByString:@"."];
    if (list && [list isKindOfClass:[NSArray class]] && [list count] > 1) {

        //audioPlayer = [self audioPlayerWithFile:[list objectAtIndex:0] andExtension:@"mp3"];//[list objectAtIndex:1]
        NSString *soundFileIs=[NSString stringWithFormat:@"%@.%@",[list objectAtIndex:0],[list objectAtIndex:1]];
        NSString *paths = [[NSBundle mainBundle] resourcePath];
        NSString *audioFile = [paths stringByAppendingPathComponent:soundFileIs];
        NSData *cdata =[NSData dataWithContentsOfFile:audioFile];

        NSLog(@"Sound file %@",soundFileIs);

        audioPlayer = [[AVAudioPlayer alloc] initWithData:cdata error:nil];
        audioPlayer.delegate = self;

    }
}

if (audioPlayer) {

    [audioPlayer setVolume:1.0];
    playerId = 16;
    [audioPlayer play];

}

}

1 个答案:

答案 0 :(得分:0)

这里只返回你的BOOL值。

-(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;

    }

请同时检查How to programmatically sense the iPhone mute switch?此处提供了所有静音方法。希望这会有所帮助。