我的界面元素在我的应用中显示当前系统音量。在应用程序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(旧值)。
如何解决这个问题?
答案 0 :(得分:0)
我暂时无法发表评论,但我会建议检查方法' didBecomeActive'实际上被称为。从技术上讲,它应该工作,我认为这可能是问题。老实说,当事情不起作用我总是建议你做一些简单的调试,并与我们分享这些,所以我们有了见解,可以更好地帮助你。因此,如果你可以检查方法是否被调用,以及使用NSLog调用该输出中的outputVolume值。