【发布时间】: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