我已经使用下面的代码检查静音模式是否打开,它在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];
}
如何将其修改为普遍适用的任何想法?
由于
丹
答案 0 :(得分:0)
在你的XIB中你可以添加一个滑块来检查音量级别,所以基本上你可以判断它是否是静音,并知道音量的大小。为了更好地理解这个类,这里是链接http://blog.stormyprods.com/2008/09/proper-usage-of-mpvolumeview-class.html,但首先尝试这个:
以下代码将创建类似于音量条的内容。
- (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]];
}
我听说由于某些原因,如果您使用某个类(我的示例中的那个),Apple不允许您销售应用程序但我对此不太确定,我会仔细检查并确保你被“允许”使用它。但代码应该可以工作。
答案 1 :(得分:0)