将声音添加到iPhone应用程序的标准方式(全局音量指示器)

时间:2009-07-20 17:13:20

标签: iphone objective-c audio volume

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

因此当有人启动应用并进入主菜单时,如果他更改了设备上的音量,他实际上会更改“Ringer”音量。如果他继续观看其他观点(我们有声音),当他改变设备上的音量时,他会改变游戏音量,而不是铃声。

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

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

2 个答案:

答案 0 :(得分:1)

如果您的应用程序当前没有播放音频,音量按钮将影响铃声音量。一些应用通过播放静音音频文件来解决这个问题。但要仔细考虑一下你是如何做到这一点的 - 当它实际上没有真正有用的东西时调整应用程序的数量?

看起来你应该能够通过修改AudioSession属性来做你想做的事情,但我还没弄明白如何(如果可能的话)。

答案 1 :(得分:0)

有一个名为MPVolumeView的类,用于此目的。这是一个good link explaining the use of MPVolumeView

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

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

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