iOS 用户体验之音频
早期某知名公司的应用有这么一个问题,如果我在听音乐时打开该应用,播放一段小视频,视频播放完成之后,音乐没有继续播放。这个问题被很多用户吐槽,很久以后,该公司终于修复了这个问题。
无论声音是应用体验的重要部分,还是作为润色,你都应该知道用户期待声音有怎样的行为。
用户可以通过音量键、静音开关、耳机,以及音量滑条来控制声音,一些第三方的附件也可以控制声音。音频可以通过内部或外接的扬声器、耳机来输出,甚至是无线的 AirPlay 设备或 蓝牙设备。
- 静音(Silence)。静音的情况下,用户希望不被意外的声音打扰,比如来电铃声、信息铃声、以及各种不重要的声音,比如,按键声、游戏配音、其他的听觉反馈等。用户只期待明确开始的声音,比如多媒体播放、闹钟、音频或视频信息。
- 音量(Volume)。当用户使用手机上的物理按键或屏幕上的音量滑条来调节声音时,用户期待这个调整可以在系统层面影响所有的声音,包括音乐播放、应用内声音。唯一的例外是铃音音量(ringer volume),铃音音量总是在没有音频播放的时候单独调节。
- 耳机(Headphone)。当用户插入耳机的时候,希望声音能自动切换线路(route)。当拔掉耳机的时候,期待播放暂停。
必要时可自动调节音量(不是总体的音量)。应用可以调节相对独立的音量来实现想要的效果。然而,最终的输出应该总是受系统音量控制。
合适的时候重新选择线路。比如,你家的客厅有立体声系统,又有 Apple TV。那你应该支持在这些中间切换,除非是特殊原因。
使用系统提供的音量视图来允许音量调节。调节音量时,提供一个界面控件无疑是很好的。iOS 系统为我们提供了MPVolumeView(点击查看详情)。
为短声和震动,使用系统声音服务。这个指的是AudioToolbox(System Sound Services)。
如果你的应用必须使用声音,那么给音频归类。实际上指的是AVAudioSession的 category,当其值不同,表现也不同。具体看下表:
| category | 含义 | 表现 |
|---|---|---|
| Solo ambient | 声音不是必须的(essential),但是它会静默其他音频。比如,带有配乐的游戏。 | 1.受静音开关控制。2.不和其他声音混合(mix)。3.应用在后台时不播放。 |
| Ambient | 声音不是必须的,并且不会静默其他音频。比如,一个游戏应用可以让用户在玩游戏时播放另一个应用中的音乐,来替代游戏的配乐。 | 1.受静音开关控制。2.和其他声音混合。3.应用在后台时不播放。 |
| Playback | 声音是必须的,并且跟其他声音混合。比如,语音电子书应用,用户可能想在离开应用后,仍然可以听。 | 1.不受静音开关控制。2.可能混合,也可能不混合其他声音。3.可以在后台播放。 |
| Record | 录音。比如,语音备忘录这类应用。 | 不受静音开关控制。2.不和其他声音混合。3.可以在后台录音。 |
| Play and Record | 声音可能同时被录制和播放。例如,一个语音信息应用。 | 1.不受静音开关控制。2.可能混合,也可能不混合其他声音。3.可以在后台录制或播放。 |
被打断以后,在合适的时间继续播放。有时候,当前播放的音频可能被另一个应用打断。临时打断可以重新开始,比如打进来的电话。永久打断不能重新开始,比如由 Siri 开始的音乐播放列表。
在你的应用结束一段临时的语音播放时,让其他应用知道。如果你的应用可能会临时打断其他应用的音频,你应该在合适的时候让其他应用可以安全的重新开始时得到通知。实现细节可以看这里:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation。
不要重新调整音频附件。人们希望在所有的应用中,音频附件的行为一致。一定不要重新定义一个语音附件的意义。如果你的应用不支持某种附件,不响应它就好了。
iOS 用户体验之音频的更多相关文章
- (转)iOS Wow体验 - 第二章 - iOS用户体验解析(2)
本文是<iOS Wow Factor:Apps and UX Design Techniques for iPhone and iPad>第二章译文精选的第二部分,其余章节将陆续放出.上一 ...
- (转)iOS Wow体验 - 第二章 - iOS用户体验解析(1)
本文是<iOS Wow Factor:Apps and UX Design Techniques for iPhone and iPad>第二章译文精选的第一部分,其余章节将陆续放出.上一 ...
- ios用户体验
如果转载此文,请注明出处:http://blog.csdn.net/paulery2012/article/details/25157347,谢谢! 前言: 本文是在阅读<ios用户体验> ...
- iOS用户体验之-导航之道
iOS用户体验之-导航之道 用户不会意识到有导航指向的存在除非他遇到非预期的效果. 能够说导航时逻辑跳转的节点.所以导航对用户体验是至关重要的. iOS中有三种类型的导航.每一种适合不同类型的app. ...
- 《iOS用户体验》总结与思考-改动版
假设转载此文.请注明出处:http://blog.csdn.net/paulery2012/article/details/25157347,谢谢. 前言: 本文是在阅读<ios用户体验> ...
- iOS用户体验之-modal上下文
iOS用户体验之-modal上下文 何为模态视图,它的作用时聚焦当前.获得用户的注意,用户仅仅有完毕模态的任务才 退出模态视图.否则你将不能运行app的任务,比如,alert view,model v ...
- (转)iOS Wow体验 - 第三章 - 用户体验的差异化策略
本文是<iOS Wow Factor:Apps and UX Design Techniques for iPhone and iPad>第三章译文精选,其余章节将陆续放出.上一篇:Wow ...
- iOS开发——浅谈构架与用户体验
工作不是千篇一律的重复,从中寻找乐趣才是我们应该做的. 作为一名码农,做过几个项目,每次做项目的时候都会自己构思,如果完全是我自己设计,会怎么去设计?心里一直没有满意的答案,不管怎么布局,好像都感觉差 ...
- 必应词典手机版(IOS版)与有道词典(IOS版)之软件分析【功能篇】【用户体验篇】
1.序言: 随着手机功能的不断更新和推广,手机应用市场的竞争变得愈发激烈.这次我们选择必应词典和有道词典的苹果客户端作对比,进一步分析这两款词典的客户端在功能和用户体验方面的利弊.这次测评的主要评测人 ...
随机推荐
- Java中的自定义数组队列
在Java中,作为所有数据结构中存储和获取速度最快的一种,数组凭借其这种简单易用的优势在各个方面都能大显神威.但是数组也有自身的局限性.数组的长度必须是固定的一旦定义之后就无法动态的更改,这就会造成这 ...
- 一个逼格很低的appium自动化测试框架
Github地址: https://github.com/wuranxu 使用说明 1. 安装配置Mongo数据库 下载地址 mongo是用来存放元素定位的,截图如下: 通过case_id区分每个ca ...
- Nodejs的运行原理-libuv篇
前言 这应该是Nodejs的运行原理的第7篇分享,这篇过后,短时间内不会再分享Nodejs的运行原理,会停更一段时间,PS:不是不更,而是会开挖新的坑,最近有在研究RPG Maker MV,区块链,云 ...
- Pokémon Go呼应设计:让全世界玩家疯狂沉迷
引言:什么样的呼应设计会让移动游戏玩家沉迷?那必须为玩家构建一个属于玩家本人或者被玩家认可的虚拟环境,或者说是被玩家认可的虚拟世界.在移动游戏时代,想要做到这一点并不容易.但Pokémon Go却做到 ...
- java中servletContextListener、httpSessionListener和servletRequestListener使用整理
在java web应用中,listener监听器似乎是必不可少的,常常用来监听servletContext.httpSession.servletRequest等域对象的创建.销毁以及属性的变化等等, ...
- Android WebView的缓存方式分析
WebView的缓存可以分为(1)页面缓存和(2)数据缓存. 页面缓存是指当WebView加载一个网页时的html.JS.CSS等页面或者资源数据.这些缓存资源是由于浏览器的行为而产生,开发者只能通过 ...
- Nginx学习笔记3--Nginx和PHP(fastCGI)的配置和优化
php和nginx的配置 server{ root html; listen 80; server_name a.com; index index.php index.html ; location ...
- MySQL插入数据异常
MySQL插入数据异常 1.错误如下: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:Dupli ...
- 错误代码: 1054 Unknown column 'course' in 'field list'
1.错误描述 1 queries executed, 0 success, 1 errors, 0 warnings 查询:SELECT stu_name, course, score FROM t_ ...
- C# 找出泛型集合中的满足一定条件的元素 List.Wher()
在学习的过程中,发现泛型集合List<T>有一个Where函数可以筛选出满足一定条件的元素,结合Lambda表达式使用特别方便,写出来与大家分享. 1.关于Func<> Fun ...