我正在创建一个应用程序,我想检测iPhone是否处于静音模式。
我已经阅读了下面的链接
使用AVAudioPlayer检测iPhone的响铃/静音开关无法正常工作?
许多人说这违反了iPhone政策。但我已经看到许多应用程序也提供了这个功能。
查看以下应用程序链接
https://itunes.apple.com/us/app/silentalert/id506092189?mt=8
我也想像上面的应用程序一样更改iPhone的静音模式。
有人知道吗?
我正在创建一个应用程序,我想检测iPhone是否处于静音模式。
我已经阅读了下面的链接
使用AVAudioPlayer检测iPhone的响铃/静音开关无法正常工作?
许多人说这违反了iPhone政策。但我已经看到许多应用程序也提供了这个功能。
查看以下应用程序链接
https://itunes.apple.com/us/app/silentalert/id506092189?mt=8
我也想像上面的应用程序一样更改iPhone的静音模式。
有人知道吗?
有一种方法,但你的应用可能会被苹果拒绝(我不确定,也许不会)。向你的视图添加一个MPVolumeView,但不要向用户显示它(为此,您可以根据您的视图更改框架)。您可以从此控件获取声音级别。以下是代码(已测试iOS +7):
- (void)someMethod
{
MPVolumeView *systemVolumeSlider = [[MPVolumeView alloc] initWithFrame: CGRectMake(-100, -100, 16, 16)];
[systemVolumeSlider setUserInteractionEnabled:NO];
systemVolumeSlider.showsRouteButton = NO;
[self.view addSubview: systemVolumeSlider];
[systemVolumeSlider sendSubviewToBack:self.view];
[[AVAudioSession sharedInstance] setActive:YES error:NULL];
float currentSoundLevel = [self getVolumeLevel];
NSLog(@"volume level : %f", currentSoundLevel); // if it is 0, the phone is in silent mode
// do your job here...
[[MPMusicPlayerController applicationMusicPlayer] setVolume:1.0]; // 1.0 is the max level
// do your job here...
}
- (float)getVolumeLevel
{
MPVolumeView *slide = [MPVolumeView new];
UISlider *volumeViewSlider;
for (UIView *view in [slide subviews]){
if ([[[view class] description] isEqualToString:@"MPVolumeSlider"])
volumeViewSlider = (UISlider *) view;
}
return [volumeViewSlider value];
}