音量控制iOS的最佳做法?

硬件音量控制

我试图了解什么是大多数沉默,但偶尔会发出声音的应用程序的最佳做法。 这样的应用程序可以利用iOS设备上的侧面音量控制,并避免在NSVolume控件中devise,我相信这不像硬件侧音量控制那样方便。 这种方法适用于像MapQuest 4 mobile这样的应用程序,您偶尔会听到与其他音乐播放器(使用audio回避)很好地融合的audio提示,但大部分都是沉默的。 我想知道别人怎么解决同样的问题。

我已经开发出了一个很好的系统。 在我的方法中,我查询audioAPI以确定是否正在播放其他音乐(iPod,AOL Radio,Pandora等),然后只有在没有其他audio正在播放时才开始audio会话。 这将硬件侧音量控制绑定到应用程序,而不是铃声(对于iPhone)。 当你走到背景时,挑战就来了。 只有当应用程序不使用audio时,我的方法才会在后台终止会话(停用)。 如果有audio播放,则会话在播放结束时被停用。

杀死播放的想法是恢复用户调整铃声音量的能力,以适应他们的喜好,如果我的应用程序继续在后台运行。

这个问题来源于2008-2009年在iOS上开发MapQuest 4移动版上的语音导航function时遇到的问题。 在这个应用程序中,我们希望侧音量开关在应用程序运行时始终控制转弯build议的音量。 后来我意识到,到达目的地后,我无法控制我的铃声音量,并将应用程序发送到后台。 这是几年前,但我相信应用程序继续在导致问题的背景下运行。 这是一个有趣的情况,当用户正在导航,但应用程序发送到后台,如果你继续audio会议? 当应用程序在后台运行时,用户是否更愿意更改应用程序音量或铃声音量?

我的一般用例(当我发布这个问题时)涉及到在后台运行另一个应用程序(通常是音乐播放器)的背景。 然而,当用户坐在主屏幕上时,将导航应用发送到背景也是常见的。 这是什么时候停用audio会话是有意义的。

这不像看起来那么简单,但我的方法适用于大多数情况。 不过,我想知道是否还有其他更可行的解决scheme。 其他人在做什么? 将音量控制包含在自动滑入/滑出的视图中会更有意义吗? 有没有我没有考虑过的事情? 你是如何处理这个问题的? 你有什么一般的build议吗?