iPhone人机界面常见任务处理方法之声音处理 (3)

移动开发 iOS
本文介绍的是iPhone人机界面常见任务处理方法,主要讲述了处理常见的人物,先来看内容。分为几个小节来介绍,请深入的去了解。

iPhone人机界面常见任务处理方法是本文要介绍的内容,如果您具有使用桌面计算机或便携式计算机应用程序的经验,那么您会发现iPhone应用程序处理很多常见任务的方式与它们不同。

本节从人机界面的角度描述了这些常见任务;关于代码实现的技术细节,请参考iPhone应用程序编程指南。继续上一节 iPhone人机界面常见任务处理方法 (2)开始介绍。

使用声音

用户期望iPhone OS设备具有非常美妙的声音,无论是操作系统的声音(比如铃声和警告声),还是应用程序的声音(比如媒体播放,环境声音和配乐)。此外,用户还希望设备发出的声音能够遵从他们的偏好和目的。

用户决定声音的音量,以及他们是否想要听到这些声音。但是有些时候,即使当前的设置表明用户更倾向于静音,他们还是希望听到某些声音。例如,用户总是期望听到他们设置的警告声。从本质上讲,用户想要听到他们期待听到的声音,而不愿听到他们不期待的声音。

为了帮助您顺应这样的需求,iPhone OS提供了一些编程接口,您可以用来:

描述您应用程序的声音应该如何与设备上的其他声音保持一致。

确保应用程序的声音能够按照用户的期望进行播放。

在您决定如何处理应用程序中的声音之前,您需要了解,当用户调整设备控件和使用外部设备(如耳机和耳麦)时,他们期望应用程序和设备如何运作。

振铃/静音切换—用户的期望

如果用户希望做到以下几点,他们可以使用“振铃/静音”切换将他们的设备静音:

避免被意外的声音打扰,比如电话铃声和来信提示音。

避免听到用户操作的附带声音,比如键盘或其它反馈的声音,偶然的声音或应用程序启动的声音。

避免听到游戏的声音,包括附带的声音和配乐,它们并不是使用游戏程序所必需的。

例如,在剧场中,用户会将他们的设备切换至静音状态,以免打扰到剧场中的其他人。在这种情况下,用户仍然想要使用他们设备上的应用程序,但他们不想被不期望的或没有明确要求的声音吓到,比如铃声或新消息提示音。

但是,对于旨在产生声音的用户动作,“振铃/静音”切换不会消除它们产生的声音。例如:

媒体应用程序中的媒体播放不会被“振铃/静音”切换静音,因为媒体播放是用户明确请求的。

时钟应用程序的警告不会被“振铃/静音”切换静音,因为此警告是用户明确设置的。

语言学习程序中的音效素材不会被“振铃/静音”切换静音,因为用户采取明确行动想要听到它。

语音聊天程序中的会话不会被“振铃/静音”切换静音,因为用户启动此类应用程序的唯一目的就是进行语音聊天。

这种行为遵循用户控制的原则,因为是由用户(而不是设备)来决定听到用户明确请求的声音是否合适。

音量按钮—用户的期望

用户使用设备的音量按钮来调节设备播放的所有声音的音量,包括歌曲,应用程序的声音和设备的声音。这意味着用户可以随时使用音量按钮关闭任何声音,无论“振铃/静音”切换的当前状态如何。

在某些情况下,应用程序适宜在其界面为用户提供音量设置功能。例如,YouTube显示了一个音量滑动器,用户可以用它调整正在观看的视频的音量。尽管YouTube正在运行,用户可以交替使用此滑动器和音量按钮来调整视频的音量。这是因为在应用程序运行时,滑动器起到音量按钮代理的作用:滑动器同时作用于应用程序的音量和整个系统的音量(铃声音量除外)。

如果您需要显示音量滑动器,当您使用

  1. MPVolumeView 

类时一定要使用系统提供的滑动器。请注意,如果当前激活的音频输出设备不支持音量控制(比如A2DP设备),音量滑动器将被相应的设备名称取代。

使用音量按钮调整应用程序当前播放的音频,也会同时调整整个系统的音量(铃声音量除外)。(在当前没有播放任何音频时,使用音量按钮调整铃声的音量。)

这种行为遵循用户控制的原则,因为用户可以随时决定设备发出的声音应该有多大。

有时候,应用程序可能需要调整相对和绝对音量级,以便在其音频输出中产生最佳的混合。但是,最终的音频输出的音量应该始终受到系统音量的控制,无论它是通过音量按钮还是音量滑动器进行调整的。这就意味着,对应用程序音频输出的控制仍然掌握在它所归属的用户的手中。

耳机和耳麦—用户的期望

用户插入耳机和耳麦就可以获得私人的声音体验并且解放他们的双手。在使用和不使用附件的情况下,用户对应用程序的行为有着不同的期望。

当用户插入耳机和耳麦时,他们是打算继续听当前的声音,只是转为私下收听。因此,他们希望当前正在播放音频的应用程序继续播放此音频

当用户拔下耳机和耳麦时,他们不想自动将正在收听的内容分享给他人。因此,他们希望当前正在播放音频的应用程序暂停播放,让他们准备好之后显式地重新开始播放。

无线音频—用户的期望

用户非常喜欢无线耳机的便捷,比如蓝牙A2DP设备。人们使用无线耳机和耳麦的理由与使用有线耳机和耳麦的理由是一样的:他们想要私下听到声音,并希望解放他们的双手。

用户对无线耳机的用户体验也有着非常类似的期望:

当用户连接到无线音频设备时,他们打算继续听到当前的声音,只是转为私下收听。在这种情况下,他们希望音频能够继续播放。

当用户断开无线设备时(或者当设备超出作用范围或关闭时),他们不想自动将正在收听的内容分享给他人。在这种情况下,他们希望暂停正在播放的音频,让他们准备好之后显式地重新开始播放。

即使用户没有实际地插入或拔出无线音频设备,他们仍然希望能够选择一个不同的音频通道。为了解决这个问题,iPhone OS自动显示了一个控件,让用户选择音频输出路线。由于选择不同的音频通道是用户发起的动作,所以用户希望正在播放的音频继续播放。

定义应用程序的音频行为

如果声音能够增强用户体验或应用程序的功能,或者是用户体验或应用程序功能必不可少的一部分,您需要决定您的音频应该如何与设备的音频环境保持一致,以及应该如何响应用户的动作。例如,你需要决定:

当设备锁定或切换至静音时,您的音频是否应该继续播放。

您的音频是否应该与当前正在播放的其他音频混合在一起(比如iPod中的歌曲)。

您的应用程序是否需要顺序或并行地同时处理音频输入和输出。

您的音频是否应该在中断后自动恢复播放。

要控制应用程序的音频在这些情况下应该如何表现,请使用“音频会话服务”或AVAudioSession类。这些编程接口不能产生声音;它们可以帮助您说明您的音频应该如何与设备上的音频进行交互,以及如何响应中断和设备配置中的变化。音频会话服务管理采用AV基础框架,音频队列服务,OpenAL和I/O音频单元等技术产生的声音。

注意:如果您的应用程序仅需要产生功能附带的用户界面音效,您可以使用“系统声音服务”。系统声音服务是iPhone OS技术,用于产生警告声音和用户界面音效,以及振动;它不适用于任何其他目的,而且它产生的声音不由“音频会话服务”管理。使用此技术的示例请参考SysSound示例项目。

重要:无论您使用何种技术产生音频,无论您如何定义它的行为,电话可以随时中断当前正在运行的应用程序。这是因为任何应用程序都不应该阻止用户接听来电。

音频会话是您应用程序和系统之间的音频中介。从用户体验的角度来看,音频会话最重要的一个方面就是定义应用程序的音频行为的类别。

为了提供良好的音频用户体验,应选择能最好地描述应用程序音频的类别。一定要基于类别的语义做出选择,而不是其行为的确切集合。这将确保您的应用程序能够按照用户的期望运转。此外,如果日后该类别的行为集合被重新修订,它也能最大限度地保证您的应用程序正常工作。

在极少数情况下,您可能需要通过为音频会话添加属性,来增强或改进某个类别的标准行为。例如,您可以添加

  1. kAudioSessionProperty_OtherMixableAudioShouldDuck 

属性,以确保您应用程序的音频比所有其他音频(电话音频除外)更响亮。如果能够在其他音频播放的同时听到您应用程序的音频对用户来说很重要的话,您可以这样做。但是,您应该注意,一个类别的标准行为代表了大多数用户的期望,所以您应该在添加属性完善此行为之前,认真仔细地考虑一下。要了解有关音频会话属性的更多内容,请参考音频会话编程指南中的“微调类别”一节。

您可以根据设备当前的音频环境选择您的类别。举个例子,如果用户可以在收听其他音频(不是您提供的配乐)的同时使用您的应用程序,您可能想要这样做。如果这对于您的应用程序来说行得通,一定要避免强迫用户停止收听他们的音乐,或是在您的应用程序启动时强迫用户做出明确的配乐选择。要了解如何做到这一点,参考“小结”中的场景2。

当应用程序正在运行时,您也可以改变音频会话的类别,虽然很少有必要这样做。这样做的主要原因是,应用程序需要在不同的时刻支持录音和播放。在这样的应用程序中,更好的做法是根据需要在Record类别和Playback类别之间进行切换,而不是选择Play和Record类别。这是因为选择Record类别,会使警告(比如来信警告)在录音正在进行时没有声音。

表4-1列出了您可以使用的音频会话类别。iPhone OS默认为音频会话分配了Solo Ambient类别。

注意:由于空间有限,表4-1只显示了每个类别名称的最后一部分。每个类别的实际符号名称均以

  1. AVAudioSessionCategory 

开始。例如,

  1. MixWithOthers 

属性的实际符号名称是

  1. kAudioSessionProperty_OverrideCategoryMixWithOthers 

表 4-1  您可以用来在应用程序中定义声音行为的音频会话类别(单击放大)

iPhone人机界面常见任务处理方法 (3)

小结:iPhone人机界面常见任务处理方法 (3)的内容介绍完了,希望本文对你有所帮助!请深入了解,推荐以下几篇文章:

iPhone人机界面常见任务处理方法 (1)

iPhone人机界面常见任务处理方法 (2)

iPhone人机界面常见任务处理方法 (4)

 

责任编辑:zhaolei 来源: 博客园
相关推荐

2011-08-01 14:20:43

iPhone 界面 屏幕

2011-08-01 14:26:41

iPhone 应用程序 事件

2011-08-01 14:42:47

iPhone 应用程序 声音

2020-10-04 13:11:38

物联网工业4.0技术

2014-09-18 10:53:38

Apple Pay开发人机界面

2015-11-04 09:54:34

ios9人机界面ui

2020-08-04 10:40:18

边缘AI人机界面HMI

2016-03-14 10:33:15

应用苹果界面

2017-04-07 14:42:27

人机界面语音触觉

2021-10-28 11:16:26

AI 数据人工智能

2023-06-25 10:10:00

2011-08-11 10:39:46

诺基亚iPhoneAndroid

2021-10-29 10:50:41

技术资讯

2011-08-08 10:23:41

iPhone 流播放 文件

2012-08-17 09:47:01

施耐德电气人机界面

2009-04-05 09:21:24

iphoneNokia移动OS

2013-01-06 10:43:07

Linux集群

2010-04-22 18:17:29

Aix系统故障

2013-05-23 10:23:04

DebianDebian 7.0

2018-06-27 06:33:44

点赞
收藏

51CTO技术栈公众号