iOS播放声音文件的音量恒定,独立于用户设置

3
在iOS中,有没有一种方法可以保持音频文件以恒定的音量播放?所以无论用户是否将手机铃声设置为非常低的音量,我仍然希望以与手机设置为大声时相同的音量播放我的音频文件。就像Siri所做的那样。她也独立于其他所有声音音量设置。
谢谢

你需要的一切都在AVAudioSession文档中 https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVAudioSession_ClassReference/ - NSDmitry
@NSDmitry 我已经看过了... outputVolume,听起来像是可行的,但它是只读的。MPVolumeView 的 hack... 嗯... 就是个 hack... - Georg
1个回答

1
对于所有有疑问的人。AVAudioPlayer有一个属性volume,可以设置高于1。所以,您可以使用AVAudioSession.sharedInstance().outputVolume找出当前设备音量,并相应地调整AVAudioPlayer音量来补偿差异。
请注意,声音质量不会提高;) 所以最好不要这样做;)

这实际上是个不错的想法。你有这方面的公式吗?我正在尝试简单的 player.volume = desiredVolume / session.outputVolume,它会进行一些补偿,但似乎不能以恒定音量播放。这可能是某种指数/对数方程。 - Tricertops
1
我找到了更好的方法:player.volume = pow(desiredVolume / session.outputVolume, 2)。这背后没有科学依据,只是通过听觉经验进行了实证验证。这可以实现任何用户设置下的恒定音量。PS:不要忘记处理除以零的情况。 - Tricertops

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接