在应用程序运行时将iPhone的音量控制转移到应用程序

时间:2016-02-17 05:23:00

标签: ios iphone swift audio

我正在使用AVSpeechSynthesizer在我的应用中将文本转换为语音。此应用程序在一定时间间隔后读取文本。

每当应用发言时,如果我按下设备的音量按钮,它会改变当前语音的音量以及设备的媒体音量。 (即如果正在播放任何音乐并且AVSpeechSynthesizer开始说话,音乐会暂停,并且一旦语音结束就会恢复。因此,如果我改变音量,它也会应用到音乐播放器的音量。)

因此,当应用程序运行时,是否可以强制音量控制按钮单独更改应用程序卷?

PS。该应用适用于iOS 8.0 +。

任何帮助都将不胜感激。

感谢。

2 个答案:

答案 0 :(得分:1)

不,您无法拦截硬件音量并仅调整您的应用音量,它不是为此而设计的。然后,操作系统需要跟踪每个应用程序的所有卷,例如如果您将AudioBus与多个连接在一起的应用音频流一起运行,该怎么办?

您需要重新考虑您的问题。要控制应用的音量,请在UI中添加音量控制。

答案 1 :(得分:0)

据我所知,您希望在应用程序中单独控制音量而不影响设备音量。听起来很困难&我不认为它是可以实现的。

我可以在这里尝试一下我已解释的选项:

  • 存储设备音量和放大器App中的App音量值
  • 使用App音量控制时,不要更改App音量,只需将该值存储在App volume
  • 现在使用应用程序卷值
  • 在应用程序更改卷中播放任何内容时
  • 完成播放后,只需使用设备音量值更改音量
  • 即可

重要提示:

  • 这是在不影响系统音量的情况下控制应用程序中的声音的纯逻辑方式。你不会在App文档的任何地方找到这样的方法。

修改

如果要在按设备音量按钮的同时按原样制作应用音量。您可以尝试这个步骤。它看起来没有经过测试,但可能有用。

  • 检查应用程序中是否可以不断检查设备音量值是否已更新。
  • 如果您收到有关设备音量更改的通知,请参阅相应内容。当它从设备音量按钮更改时,您可以从应用程序再次重置它。

我希望它会对你有所帮助。