我一直在使用以下代码来检测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];
}
}
答案 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?此处提供了所有静音方法。希望这会有所帮助。