1

我有一个具有各种视图的应用程序。主菜单没有任何声音,但下一个视图使用 AVAudioPlayer 类播放声音。

因此,当有人启动应用程序并在主菜单中时,如果他更改设备上的音量,他实际上会更改“铃声”音量。如果他继续到其他视图(我们有声音的地方),当他改变设备上的音量时,他改变了游戏的音量,而不是铃声。

在我创建任何 AVAudioPlayer 实例之前,有没有办法让他们每次从我的应用程序开始更改应用程序音量?(有些人误解了。我的意思是每次按下音量按钮时操作系统都会覆盖在屏幕上的那个方块。如果您在主屏幕上,则更改“铃声”。当您在游戏中时,您会更改应用程序的音量)。

PS:我在主菜单上初始化了 AudioSession,但这没有任何区别。我发现的唯一技巧是在我的主菜单上实际创建一个 AVAudioPlayer 实例并将其设置为“preparedToPlay”。但我宁愿听听其他人在做什么(一个适当的解决方案)。

4

2 回答 2

1

如果您的应用程序当前没有播放音频,音量按钮将影响铃声音量。一些应用程序通过播放无声音频文件来解决此问题。不过,请仔细考虑您是如何做到这一点的——当它实际上并没有播放一些真正有用的东西时,它是在调整应用程序的音量吗?

似乎您应该能够通过修改 AudioSession 属性来做您想做的事,但我还没有弄清楚如何(如果可能的话)。

于 2009-07-20T20:42:47.367 回答
0

有一个名为 MPVolumeView 的类用于此目的。这是一个很好的链接,解释了 MPVolumeView 的使用

将 MPVolumeView 添加到您的视图将创建一个类似 iPod 的音量滑块,当您使用摇杆按钮更改音量时,该滑块会发生变化。AVAudioPlayer 类将自动使用该值。

在没有滑块的情况下跟踪音量

默认情况下,摇杆按钮仅在播放某些音频时更改应用音量。这个问题有一个解决方法——这个 SO 线程讨论了一些解决方法。

于 2009-07-20T17:50:54.217 回答