【问题标题】:System device output volume is incorrect系统设备输出音量不正确
【发布时间】:2017-10-02 05:37:46
【问题描述】:

我的应用中有显示当前系统音量的界面元素。当用户在应用程序中更改音量时,我可以使用以下方法进行监控和设置:

[RACObserve([AVAudioSession sharedInstance], outputVolume) subscribeNext:^(NSNumber* x) {
        self.knobControl.position = -([x floatValue] * 4.65) + 1e-7;
    }];

但是,当我的应用程序变为非活动状态然后再次变为活动状态时,我尝试使用以下逻辑将该元素设置为当前活动系统音量(即在应用程序处于后台时发生更改):

/* Notifications */

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(didBecomeActive)
                                                 name:UIApplicationDidBecomeActiveNotification object:nil];


-(void)didBecomeActive{

    /* Call it to set correct value after application become active from background */

    CGFloat outputVol = [[AVAudioSession sharedInstance] outputVolume];
    self.knobControl.position = -(outputVol * 4.65) + 1e-7;
}

但是,当我在应用程序中将音量设置为最大然后按主页按钮,然后将系统音量设置为最大的 2/16,然后当我进入应用程序时 [[AVAudioSession sharedInstance] outputVolume] 仍然显示给我该音量设置为最大值(旧值)。

如何解决这个问题?

【问题讨论】:

    标签: ios objective-c avaudiosession


    【解决方案1】:

    我还不能发表评论,但是我建议检查方法“didBecomeActive”是否实际被调用。从技术上讲,它应该可以工作,我认为这可能是问题所在。老实说,当事情不起作用时,我总是建议你做一些简单的调试,并与我们分享这些,这样我们就有洞察力,可以更好地帮助你。因此,如果您可以使用 NSLog 检查该方法是否被调用以及该调用中的 outputVolume 值是什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-08
      • 2011-08-12
      • 2021-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多