AVPlayer 带有滑块和 iphone 按钮的音量控制

Posted

技术标签:

【中文标题】AVPlayer 带有滑块和 iphone 按钮的音量控制【英文标题】:AVPlayer volume control with slider and iphone buttons 【发布时间】:2014-02-24 16:14:03 【问题描述】:

我有一个广播流媒体 AVPlayer,我创建了一个滑块来控制播放器的音量。

-(void)adjustVolume

    if (self.player != nil)
    
        NSLog(@"Adjusting volume...");
        self.player.volume = volumeControl.value;
         NSLog(@"%f",self.player.volume);
    

我需要将滑块中的值连接到按下音量按钮时的值。例如,如果我将滑块移动到 50%,然后按下手机侧面的音量增大按钮,我需要将其从 50% 增大,因为这是我通过滑块设置的音量。

我该怎么做?

稍后编辑:

使用此代码,我在按下音量键时设法更新了滑块,但我无法再拖动滑块,因为它总是随系统音量更新。

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];

还有更新声音:

- (void)updateSound
    volume = audioSession.outputVolume;
    volumeControl.value = volume;

如何在移动滑块时更改系统音量?我试图给 audioSession.outputVolume 一个值,但当然,它不是那样工作的。

【问题讨论】:

所以@Merlevede 建议的代码根本不起作用..什么都不做。有什么方法可以使用滑块影响系统音量?我完全没有想法.. 【参考方案1】:

您可以收听音量变化通知

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

【讨论】:

我是初学者,如果这似乎是一个愚蠢的问题,我很抱歉。我尝试在开始音频会话后将第一段代码添加到 viewDidLoad,但在推动音量时我什么也没得到纽扣。我 NSLog 方法volumeChanged 中的注释后的音量浮动。它应该记录一些东西......对吗?我做错了吗? 根据this link 和this link,您需要初始化一个音频会话才能使此调用正常工作。 是的..我尝试像这样AudioSessionInitialize(NULL, NULL, NULL, NULL); AudioSessionSetActive(true); 初始化音频会话,但仍然没有。我还收到两行的通知:在 iOS7 中已弃用【参考方案2】:

终于找到了我想做的事情的解决方案here

我删除了上述所有代码,并将 MediaPlayer 框架包含在我的 .h 文件中,并将此代码包含在我的 .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];

希望这对其他人也有帮助。

【讨论】:

以上是关于AVPlayer 带有滑块和 iphone 按钮的音量控制的主要内容,如果未能解决你的问题,请参考以下文章

带有滑块和 2 个按钮的 iOS 应用程序

UIView 中的 AVPlayer 视图缺少控件

将本机 iphone 相机缩放滑块和 youtube 播放器控制器添加到我的应用程序

R闪亮:如何将滑块和单选按钮链接到ggplot

将垂直范围滑块与其末端的按钮对齐

Qt5,X11,libxcb。滑块和小部件的其他部分太小