检查iPad是否处于静音模式

可能重复:
在iOS5中检测静默模式?

我已经使用下面的代码来检查是否安静模式,它在iPhone上按预期工作,但在iPad上它返回扬声器无论如何。

CFStringRef state; UInt32 propertySize = sizeof(CFStringRef); AudioSessionInitialize(NULL, NULL, NULL, NULL); AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &propertySize, &state); if (CFStringGetLength(state) == 0) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Silent mode" message:@"Please turn sound on" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil]; [alert show]; [alert release]; } 

任何想法如何修改它的普遍工作?

谢谢

担。

在您的XIB中,您可以添加一个滑块来检查音量级别,因此基本上可以判断它是否静音,并知道音量级别。 为了更好的理解这个类,下面的链接http://blog.stormyprods.com/2008/09/proper-usage-of-mpvolumeview-class.html但是先试试这个:

下面的代码会创build一个像音量栏的东西。

 - (void)viewDidLoad { // create a frame for MPVolumeView image CGRect frame = volumeViewHolder.bounds; // CGRectMake(0, 5, 180, 0); volumeView = [[[MPVolumeView alloc] initWithFrame:frame] autorelease]; [volumeView sizeToFit]; [volumeViewHolder addSubview:volumeView]; for (UIView *view in [volumeView subviews]){ if ([[[view class] description] isEqualToString:@"MPVolumeSlider"]) { volumeViewSlider = view; } } [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(volumeChanged:) name:@"AVSystemController_SystemVolumeDidChangeNotification" object:nil]; } - (void) volumeChanged:(NSNotification *)notify { [volumeViewSlider setValue:[[[notify userInfo] objectForKey:@"AVSystemController_AudioVolumeNotificationParameter"] floatValue]]; } 

我听说由于某种原因,如果你使用某个类(在我的例子中),苹果不允许你销售一个应用程序,但我不太确定,我会仔细检查并确保你是'允许'使用它。 但代码应该工作。

这个SO答案很好地回答:

在iOS5中检测静默模式?

而关于Gabe的回答,如果他的回答确实使用私人API,苹果将拒绝你的应用程序。