How to change device Volume on iOS - not music volume

后端 未结 9 714
旧时难觅i
旧时难觅i 2020-11-28 10:30

I want to change the device volume on iOS (iphone).

I know that i can change the volume of music library with this lines below:

//implement at firs         


        
9条回答
  •  被撕碎了的回忆
    2020-11-28 11:10

    To answer brush51's question:

    How can i do that? just change the DEVICE volume?

    As 0x7fffffff suggested:

    You cannot change device volume programatically, however MPVolumeView (volume slider) is there to change device volume but only through user interaction.

    So, Apple recommends using MPVolumeView, so I came up with this:

    Add volumeSlider property:

    @property (nonatomic, strong) UISlider *volumeSlider;
    

    Init MPVolumeView and add somewhere to your view (can be hidden, without frame, or empty because of showsRouteButton = NO and showsVolumeSlider = NO):

    MPVolumeView *volumeView = [MPVolumeView new];
    volumeView.showsRouteButton = NO;
    volumeView.showsVolumeSlider = NO;
    [self.view addSubview:volumeView];
    

    Find and save reference to UISlider:

    __weak __typeof(self)weakSelf = self;
    [[volumeView subviews] enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        if ([obj isKindOfClass:[UISlider class]]) {
            __strong __typeof(weakSelf)strongSelf = weakSelf;
            strongSelf.volumeSlider = obj;
            *stop = YES;
        }
    }];
    

    Add target action for UIControlEventValueChanged:

    [self.volumeSlider addTarget:self action:@selector(handleVolumeChanged:) forControlEvents:UIControlEventValueChanged];
    

    And then detect volume changing (i.e. by the hardware volume controls):

    - (void)handleVolumeChanged:(id)sender
    {
        NSLog(@"%s - %f", __PRETTY_FUNCTION__, self.volumeSlider.value);
    }
    

    and also other way around, you can set volume by:

    self.volumeSlider.value = < some value between 0.0f and 1.0f >;
    

    Hope this helps (and that Apple doesn't remove MPVolumeSlider from MPVolumeView).

提交回复
热议问题