如何将音轨音量滑块连接到物理音量按钮

时间:2014-09-29 02:47:44

标签: iphone volume

我想将音量控制的滑块动作与音量按钮联系起来,因此如果使用按钮,滑块也会调整。我认为这是可能的,但我不确定。

目前我有一个工作滑块音量控制,但它没有绑定物理按钮。

1 个答案:

答案 0 :(得分:2)

我没有测试过这些,只是进行了一些研究并复制和粘贴。

1a上。从设备中获取音量。

    float volume = [[AVAudioSession sharedInstance] outputVolume];
    self.volume = vol;

    #import <MediaPlayer/MediaPlayer.h>
    //...
    float vol = [MPMusicPlayerController iPodMusicPlayer].volume;
    self.volume = vol;

1b中。在音量变化时收到通知

 [[NSNotificationCenter defaultCenter]
       addObserver:self
       selector:@selector(volumeChanged:)
       name:@"AVSystemController_SystemVolumeDidChangeNotification"
       object:nil];

  -(void)volumeChanged:(NSNotification*)notification{
    float vol = [[[notification userInfo] 
                 objectForKey:@"AVSystemController_AudioVolumeNotificationParameter"] 
                 floatValue];
    self.volume = vol;
   }
  // Some said the Notification used is a private apple API so you should do a bit of research for using it in a app you are submitting to apple.
  // There is also this notification though: MPMusicPlayerControllerVolumeDidChangeNotification
  1. 将滑块设置为音量。

    self.volumeSlider.value = (double) self.volume;
    
  2. 或者 使用Apple的MPVolumeView

      

    使用音量视图向用户显示用于设置系统音频输出音量的滑块控件,以及用于选择音频输出路径的按钮。首次显示时,滑块的位置反映当前系统音频输出音量。当用户拖动滑块时,更改会更新卷。如果用户在播放声音时按下设备音量按钮,滑块将移动以反映新音量。       - Apple Docs

         mpVolumeViewParentView.backgroundColor = [UIColor clearColor];
         MPVolumeView *myVolumeView = [[MPVolumeView alloc] initWithFrame: mpVolumeViewParentView.bounds];
         [mpVolumeViewParentView addSubview: myVolumeView];
    

    修改 从阅读MPMediaPlayer文档来看,似乎Apple希望每个人都使用自己的音量滑块并根据需要自定义它的外观。