我有一个无线电流AVPlayer,我创建了一个控制播放器音量的滑块。
-(void)adjustVolume
{
if (self.player != nil)
{
NSLog(@"Adjusting volume...");
self.player.volume = volumeControl.value;
NSLog(@"%f",self.player.volume);
}
}
我需要将滑块中的值连接到按下音量按钮时的值。因此,例如,如果我将滑块移动到50%,之后我按下手机侧面的音量增大按钮,我需要它从50%增加,因为那是我通过滑块设置的音量。 / p>
我该怎么做?
LATER EDIT:
使用此代码我按下音量键时设法更新滑块,但我不能再拖动滑块,因为它总是随系统音量更新。
audioSession = [AVAudioSession sharedInstance];
BOOL ok;
NSError *setCategoryError = nil;
ok = [audioSession setCategory:AVAudioSessionCategoryPlayback error:&setCategoryError];
volume = audioSession.outputVolume;
volumeControl.value = volume;
NSTimer *volumeTimer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(updateSound) userInfo:nil repeats:YES];
和updateSound:
- (void)updateSound{
volume = audioSession.outputVolume;
volumeControl.value = volume;
}
移动滑块时如何更改系统音量?我试图给audioSession.outputVolume一个值,但当然,它不会那样工作。
答案 0 :(得分:2)
您可以收听音量变化通知
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(volumeChanged:)
name:@"AVSystemController_SystemVolumeDidChangeNotification"
object:nil];
你的选择器看起来像这样
- (void)volumeChanged:(NSNotification *)notification
{
float volume =
[[[notification userInfo]
objectForKey:@"AVSystemController_AudioVolumeNotificationParameter"]
floatValue];
// Do stuff with volume
}
答案 1 :(得分:0)
最后找到了我尝试做的解决方案here
我删除了以上所有代码,并在我的.h文件中包含了MediaPlayer框架,并将此代码包含在我的.m文件中:
UIView *wrapperView = [[UIView alloc] initWithFrame:CGRectMake(30, 350, 260, 20)];
wrapperView.backgroundColor = [UIColor clearColor];
[self.view addSubview:wrapperView];
MPVolumeView *volumeView = [[MPVolumeView alloc] initWithFrame: wrapperView.bounds];
[wrapperView addSubview:volumeView];
希望这也有助于其他人。