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 中列述了你可以使用的类别。
   63   64   65   66   67   68   69   70   71   72   73