【问题标题】:How to change an iOS device volume programmatically?如何以编程方式更改 iOS 设备音量?
【发布时间】:2023-04-11 01:32:02
【问题描述】:

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

【问题讨论】:

    标签: ios objective-c avaudiosession


    【解决方案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---
    
    }
    

    它对我有用

    【讨论】:

    【解决方案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.filter{NSStringFromClass($0.classForCoder) == "MPVolumeSlider"}.first as? UISlider)?.setValue(volume, animated: false)
    }
    

    别忘了import MediaPlayer

    【讨论】:

    • 这确实有效!只需确保在顶部输入import MediaPlayer
    • 我投了反对票,所以我认为它不适用于某些较新的 iOS。如果有人最终对此进行了测试,请在 cmets 中告诉我们您正在运行哪个 iOS。谢谢;)
    猜你喜欢
    • 1970-01-01
    • 2012-05-09
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-20
    相关资源
    最近更新 更多