Page 71 - iOS人机界面指导手册
P. 71
管理声音冲突
有时,来自多个程序播放的声音会冲突。例如,打电话的过程中电话声会和正在播放的
其他声音冲突。在多任务环境中,这种冲突的频率会更高。
为了提供符合用户期望的音效,iOS 需要你:
确定你的程序会导致怎样的冲突。
在冲突解除后选择合适的应对方式。
每一个程序都需要确认可能会导致的冲突,但并不是每一个程序都需要制定应对冲突的
方案。这是因为对于大多数程序来说,在冲突解除后继续播放就是一个合适的方案。只
有以录音回放为主,提供回放控件的程序需要额外地定义好应对方案。
从概念上来说,根据导致冲突的声音类型以及用户对冲突后的期待来分,共有两种声音
冲突。
可恢复的冲突。当用户在使用以听觉为核心的程序时被其他声音暂时干扰时,会出
现可恢复的冲突。
可恢复中断结束后, 有回放控件的程序应该恢复到中断发生前的状态,无论之前
是正在播放还是暂停状态。没有回放控件的程序应该恢复到播放状态。(After a
resumable interruption ends, an app that displays media playback controls
should resume what it was doing when the interruption occurred, whether this
is playing audio or remaining paused. An app that doesn’t have media
playback controls should resume playing audio.)
例如,当用户正用 iPhone 听音乐时,突然来了个 VoIP 电话。用户接了电话,希望
在通话过程中音乐保持静音。电话打完后,用户希望回放(playback)型程序能自
动恢复播放音乐。这是因为用户在接电话前并没有主动暂停音乐,所以希望打完电
话后能继续享受歌声。否则,播放器在电话打完后就应该还是暂停状态。
不可恢复的冲突。不可恢复的冲突是由以播放声音为核心功能的程序引起的,比如
媒体播放器。
在不可恢复冲突结束后,显示了回放控件的程序不要恢复播放,没有回放控件的程
序应该恢复到播放状态。
例如,当用户在听 1 号播放器的音乐时被 2 号播放器的声音打断。用户决定听一会
儿 2 号播放。再退出 2 号播放器后,用户不会希望 1 号播放器再自动播放,因为他
已主动将 2 号播放器视作了主程序。
以下指南帮助你判断应提供什么样的信息,以及如何在中断结束后继续:
确定程序导致中断的类型。你可以在你的声音播放完毕后通过以下两种方式屏蔽你的
声音:
如果你的程序导致的是可恢复的中断,给你的声音打上
AVAudioSessionSetActiveFlags_NotifyOthersOnDeactivation 的标。

