如何在 iOS 上更改设备音量 - 而不是音乐音量

2024-05-23

我想更改 iOS (iPhone) 上的设备音量。

我知道我可以使用以下几行更改音乐库的音量:

//implement at first MediaPlayer framework
MPMusicPlayerController *musicPlayer = [MPMusicPlayerController iPodMusicPlayer];
musicPlayer.volume = 1;

但这不是我的目标。
我想改变设备体积或者让我说一下音量ringer.

我怎样才能做到这一点?只需更改DEVICE体积?


回答brush51的问题:

我怎样才能做到这一点?只需更改设备音量?

正如 0x7fffffff 所建议的:

您无法以编程方式更改设备音量,但是 MPVolumeView(音量滑块)可以更改设备音量,但只能通过用户交互来更改。

因此,Apple 建议使用MPVolumeView,所以我想出了这个:

Add volumeSlider财产:

@property (nonatomic, strong) UISlider *volumeSlider;

Init MPVolumeView并将某处添加到您的视图中(可以隐藏,没有框架,或者因为showsRouteButton = NO and showsVolumeSlider = NO):

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

查找并保存参考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;
    }
}];

添加目标操作UIControlEventValueChanged:

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

然后检测音量变化(即通过硬件音量控制):

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

或者其他方式,您可以通过以下方式设置音量:

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

希望这会有所帮助(并且 Apple 不会从 MPVolumeView 中删除 MPVolumeSlider)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 iOS 上更改设备音量 - 而不是音乐音量 的相关文章

随机推荐