Page 68 - iOS人机界面指导手册
P. 68
如果声音是程序的核心功能之一,使用 Audio Session Service 或者 AVAudioSession
类。这些类不能直接产生声音,但可以帮你设置该声音如何与设备上的其他混响,如何
处理中断或其他设备设置的改变。
在 iPhone 上,无论你用了什么样的技术去控制声音,iPhone 总能打断当前运行中的程
序。因为任何程序都不应妨碍到用户接听来电。
在 Audio Session Service 中,audio session 充当程序与系统的调节者。它最重要的
一面是 category,可以用来定义程序的声音行为。
为了运用 Audio Session Service 的优势,提供用户期待的声音体验,你应当选择与你
的声音行为最相符的那一类。这要看你的程序是只在前台时播放声音,还是在后台也能
播放。可以参照如下指南:
根据 category 的语义来选择,而非对行为的细节描述。这样能保证你的程序能符
合用户期望。另外,如果将来类目对应的行为方式被修订了,也能保证你选择类目
是合适的。
少数情况下可以在标准行为的基础上稍作定制。类别对应的标准行为与大多数用
户的期望一致,所以在自定义前要考虑清楚。例如,你可能想添加“Should Duck”
属性,以便你的程序音比其他声音都大(除了铃声),以便符合用户的需求。
考虑根据设备当前的声音环境来选择类别。这也许是合理的,因为用户也许想使
用你的程序的同时听着其他声音。这样的话,当用户启动你的程序时,不要暂停用
户正在听的声音或强迫用户选择音轨。
一般而言,避免在程序运行过程中改变类别。改变类别的主要原因是你的程序可
能需要在不同的时候支持录音和回放。这种情况下,可以在录音类和回放类之间切
换,而非只用“播放和录音类”。这是因为选择录音类可以避免在录制过程中有警
告声(比如新短信)出现。
表格 7-2 中列述了你可以使用的类别。

