如何以编程方式更改 iOS 设备音量?

Posted

技术标签:

【中文标题】如何以编程方式更改 iOS 设备音量?【英文标题】:How to change an iOS device volume programmatically? 【发布时间】:2015-03-14 13:53:07 【问题描述】:

有没有办法以编程方式更改设备音量?也许使用音频会话?

【问题讨论】:

【参考方案1】:

我很确定无法控制实际的设备音量(因为这也有点突兀) 控制您正在播放的某些媒体是另一回事。但是,您可以查看 MPVolumeView: https://developer.apple.com/library/ios/documentation/MediaPlayer/Reference/MPVolumeView_Class/index.html 以显示用于设置音量的视图。

这里也讨论过这个问题: How to change device Volume on iOS - not music volume

【讨论】:

对不起,我错过了那个讨论。 看这个:import MediaPlayer let volumeView = MPVolumeView() if let view = volumeView.subviews.first as? UISlider view.value = 0.1 //---0 t0 1.0--- 它对我有用【参考方案2】:

看看这个:

import MediaPlayer

let volumeView = MPVolumeView()
if let view = volumeView.subviews.first as? UISlider
    view.value = 0.1 //---0 t0 1.0---


它对我有用

【讨论】:

此方法在iOS 11.4不再有效,请参考***.com/a/50740234/2610888【参考方案3】:

给你,这对我有用。

#import <MediaPlayer/MediaPlayer.h>
musicPlayer = [MPMusicPlayerController applicationMusicPlayer];
musicPlayer.volume = 1; // max volume
musicPlayer.volume = 0; // min volume (mute)
musicPlayer.volume = 0.0625; // 1 bar on the overlay volume display

【讨论】:

这会改变您正在播放的媒体的相对音量,但我很确定实际音量范围从 0 到用户当前的音量设置。因此,如果用户将音量设置为 1/2,则您的 musicPlayer.volume 设置为 1.0 实际上会给您 1/2 的音量。 从 ios7 被弃用的【参考方案4】:

Hacky 但有效(Swift 3):

func setVolumeTo(volume: Float) 
  (MPVolumeView().subviews.filterNSStringFromClass($0.classForCoder) == "MPVolumeSlider".first as? UISlider)?.setValue(volume, animated: false)

别忘了import MediaPlayer

【讨论】:

这确实有效!只需确保在顶部输入import MediaPlayer 我投了反对票,所以我认为它不适用于某些较新的 iOS。如果有人最终对此进行了测试,请在 cmets 中告诉我们您正在运行哪个 iOS。谢谢;)

以上是关于如何以编程方式更改 iOS 设备音量?的主要内容,如果未能解决你的问题,请参考以下文章

iOS 9:如何在不显示系统条形音箱弹出窗口的情况下以编程方式更改音量?

使用 Swift 以编程方式设置设备音量时隐藏音量 Hud

以编程方式快速更改设备方向 4 IOS 11 [重复]

如何以编程方式增加iPhone音量

如何在iOS上获得音量级别和音量更改通知?

Swift:如何以编程方式获取iOS设备的唯一标识符?