系统设备输出量不正确

时间:2017-05-04 07:07:53

标签: ios objective-c avaudiosession

我的界面元素在我的应用中显示当前系统音量。在应用程序i中的用户可以使用以下内容监视和设置它时进行音量更改:

[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;
}

然而,当我在app中将音量设置为max然后按home键,然后将系统音量设置为最大2/16,然后当我输入app [[AVAudioSession sharedInstance] outputVolume]时仍显示我该卷设置为max(旧值)。

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我暂时无法发表评论,但我会建议检查方法' didBecomeActive'实际上被称为。从技术上讲,它应该工作,我认为这可能是问题。老实说,当事情不起作用我总是建议你做一些简单的调试,并与我们分享这些,所以我们有了见解,可以更好地帮助你。因此,如果你可以检查方法是否被调用,以及使用NSLog调用该输出中的outputVolume值。