【问题标题】:get ringer volume level using AVSystemController in ios在 ios 中使用 AVSystemController 获取铃声音量级别
【发布时间】:2014-05-07 11:52:44
【问题描述】:

如何使用 AVSystemController 获取 iphone 当前的铃声音量

我也试过下面的代码来检查音量

MPVolumeView *slide = [MPVolumeView new];
UISlider *volumeViewSlider;

for (UIView *view in [slide subviews]){
    if ([[[view class] description] isEqualToString:@"MPVolumeSlider"]) {
        volumeViewSlider = (UISlider *) view;
    }
}
float val = [volumeViewSlider value];

但是当我打印/检查 val 时,它返回 1.00

我也试过下面的代码

musicPlayer = [MPMusicPlayerController applicationMusicPlayer];
Nslog(@"%f",musicPlayer.volume);

但如果我的手机静音,它也会返回 1.00 事件。我参考下面的链接 How to determine the current level of the iPhone ringer? 但我找不到解决方案。

请帮忙。

【问题讨论】:

  • 我知道上面的代码返回的是播放器音量,而不是手机的铃声音量。我从堆栈溢出中引用了许多帖子,但其中大多数都提供了获取音乐播放器音量的解决方案。请问我是否可以使用 ios 编程获得 手机的铃声 音量(不是播放器音量)?

标签: ios volume avsystemcontroller


【解决方案1】:

试试这个:

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(volumeChanged:)
                                             name:@"AVSystemController_SystemVolumeDidChangeNotification"
                                           object:nil];

- (void)volumeChanged:(NSNotification *)notification{
   NSDictionary*dict=notification.userInfo;
   float newVolume =
   [[dict objectForKey:@"AVSystemController_AudioVolumeNotificationParameter"]floatValue];
    //my comment: newVolume is value that you need
}

【讨论】:

  • 我可以设置 NSNotification 并在声音变化时检查音量,但我的应用程序在指定事件发生时使手机静音(即客户端在特定时间设置任何事件)并在该事件结束时使手机处于一般模式。活动结束 15 分钟后,我想检查手机是否处于静音模式?如果是,我想向用户发送通知,该手机仍处于静音模式。所以我需要在不设置 NSNotification 的情况下进行检查
  • 嘿,谢谢你的建议。我设置了 NSNotification 并在 volumeChanged 方法中设置了 NSUserDefaults 中的音量。当我的活动结束时,15 分钟后,我得到了这个 NSUserDefaults 并且它起作用了......再次感谢
  • 不适用于 IOS 10 测试版
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多