2017-05-04 62 views
0

我有界面元素,显示我的应用程序当前的系统卷。在体积变化时用户在应用程序,我可以监视和使用其设置以下:系统设备输出量不正确

[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]仍然告诉我,音量设置为最大(旧值)。

如何解决这个问题?

回答

0

我还不能评论,但我会建议检查方法'didBecomeActive'实际上被称为。从技术上讲,它应该工作,我认为这可能是问题。老实说,当事情不起作用时,我总是建议你做一些简单的调试,并与我们分享这些信息,这样我们就能获得见解,并能更好地帮助你。因此,如果您可以检查该方法是否正在调用,并且使用NSLog调用了outputVolume值。