iOS 以恒定音量播放声音文件,与用户设置无关

Posted

技术标签:

【中文标题】iOS 以恒定音量播放声音文件,与用户设置无关【英文标题】:iOS play sound file with constant volume, independent of user settings 【发布时间】:2016-03-07 11:42:59 【问题描述】:

ios 中是否有任何方法可以保持以恒定音量播放声音文件?因此,无论用户是否确实将手机的铃声设置为非常低的音量,我仍然希望以与手机设置为响亮的音量相同的音量播放我的音频文件。有点像 Siri 所做的。她也独立于所有其他音量设置。

谢谢

【问题讨论】:

iOS 9: How to change volume programmatically without showing system sound bar popup?的可能重复 您需要的一切都在 AVAudioSession 文档developer.apple.com/library/ios/documentation/AVFoundation/… @NSDmitry 我已经看过了...outputVolume,听起来好像可行,但它是只读的。 MPVolumeView hack... 是...好吧... hack... 【参考方案1】:

对于每个想知道的人。 AVAudioPlayer 有一个属性 volume 可以设置为大于 1。所以你会弄清楚当前设备使用的音量是多少 AVAudioSession.sharedInstance().outputVolume 然后调整 AVAudioPlayer 的音量来补偿差异。

请注意,音质不会提高;) 所以最好的办法就是不要那样做;)

【讨论】:

这其实是个好主意。你有这个方程吗?我正在尝试简单的player.volume = desiredVolume / session.outputVolume,它做了一些补偿,但它似乎并没有以恒定的音量播放。这可能是一些指数/对数方程。 我找到了更好的:player.volume = pow(desiredVolume / session.outputVolume, 2)。这背后没有科学依据,我只是用我的耳朵凭经验验证了这一点。这可实现任何用户设置的恒定音量。 PS:别忘了处理除以零。

以上是关于iOS 以恒定音量播放声音文件,与用户设置无关的主要内容,如果未能解决你的问题,请参考以下文章

如何在不更改声音指示器的情况下在 iOS 中以最大音量播放声音文件

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

播放录制文件时 iPhone 上的音量太低

AVAudioPlayer 在进行 WebRTC 音频通话时以非常低的音量播放声音

c#如何播放多个.wav文件,并设置每个文件的音量

远程通知音量级别与应用程序中播放的声音不同