1.手机的发展趋势
2009年全球手机业出现负增长,但是智能手机今年的销售量将超过1.9亿部,比去年增长11.1%。正当苹果公司与谷歌和RIM(黑莓)公司就各自的智能手机操作系统孰优孰劣大打口水战之际,智能手机领域的前任霸主——塞班(Symbian)系统,却陷入沉默。据记者了解,目前安卓(Android)系统手机和苹果iPhone在全球高歌猛进,微软公司Windows Phone7亦开始大规模推出新品,而塞班(Symbian)系统却日益陷入孤立的局面。有分析认为,除非加强同PC以及互联网的交互及扩展性,否则塞班系统难以改变被历史淘汰的命运。据市场研究公司Strategy Analytics称,在运营商、厂商和开发商推动应用的大力支持下,2009年运行Android操作系统的智能手机出货量将增长900%,苹果iPhone操作系统将是2009年增长速度第二快的智能手机操作系统,增长率将达到79%。从中可以看出,随着智能手机价格的进一步下降,用户将对智能手机的需求大大增强,智能手机将是未来手机发展的主要方向。
未来手机的处理速度将进一步提高,手机的功能更多样化与个性化,手机屏幕将更大、色彩更加炫丽,手机音质也更好。同时,各种不同类型的传感器的使用,手机将会更智能的判断手机的所处的环境信息,所有这些技术的利用都极大的提高了手机的用户体验。
随着移动通信技术的快速发展,无线网络带宽越来越大,通信质量越来越好,安全性得到更大的提高,手机应用将会得到更加蓬勃的发展,移动互联网业务更催生了手机与PC的融合,这也将会影响未来手机界面发展。
2.当前手机界面的现状
当前的手机根据交互的形式可以分为触摸屏手机与键盘手机。两者在交互和界面设计上存在着较大的差异。
Android是一种以Linux为基础的开放源码操作系统,主要使用于便携设备。目前尚未有统一中文名称,中国地区较多人使用安卓(非官方)或安致(官方)。Android操作系统最初由Andy Rubin开发,最初主要支持手机。2005年由Google收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上。Android的主要竞争对手是苹果公司的iOS以及RIM的Blackberry OS。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2011年11月数据,Android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为58%
系统架构
Android是以Linux为核心的手机操作平台,作为一款开放式操作系统,随着Android的快速发展,如今已允许开发者使用多种编程语言来开发Android应用程序,而不再是以前只能使用Java开发Android应用程序的单一局面,因而受到众多开发者的欢迎,成为真正意义上的开发式操作系统。 在Android中,开发者可以使用Java作为编程语言来开发应用程序,也可以通过NDK使用C/C++作为编程语言来开发应用程序,也可使用SL4A来使用其他各种脚本语言进行编程(如:python、lua、tcl、php等等),还有其他诸如:Qt(qt for android)、Mono(mono for android)等一些著名编程框架也开始支持Android编程,甚至通过MonoDroid,开发者还可以使用C#作为编程语言来开发应用程序。另外,谷歌还在2009年特别发布了针对初学者的Android Simple语言,该语言类似Basic语言。而在网页编程语言方面,JavaScript,ajax,HTML5,jquery、sencha、dojo、mobl、PhoneGap等等都已经支持Android开发。 而在Android系统底层方面,Android使用C/C++作为开发语言。
应用程序(部分)
Java开发方面 Android支持使用Java作为编程语言来开发应用程序,而Android的Java开发方面从接口到功能,都有层出不穷的变化。考虑到Java虚拟机的效率和资源占用,谷歌重新设计了Android的Java,以便能提高效率和减少资源占用,因而与J2ME等不同。 Android结构
其中Activity等同于J2ME的MIDlet,一个 Activity 类(Class)负责创建视窗(Windows),一个活动中的Activity就是在 foreground(前景)模式,背景运行的程序叫做Service。两者之间通过由ServiceConnection和AIDL连结,达到复数程序同时运行的效果。如果运行中的 Activity 全部画面被其他 Activity 取代时,该 Activity 便被停止(Stopped),甚至被系统清除(Kill)。 View等同于J2ME的Displayable,程序人员可以通过 View 类与“XML layout”档将UI放置在视窗上,Android 1.5的版本可以利用 View 打造出所谓的 Widgets,其实Widget只是View的一种,所以可以使用xml来设计layout,HTC的Android Hero手机即含有大量的widget。至于ViewGroup 是各种layout 的基础抽象类(abstract class),ViewGroup之内还可以有ViewGroup。View的构造函数不需要再Activity中调用,但是Displayable的是必须的,在Activity 中,要通过findViewById()来从XML 中取得View,Android的View类的显示很大程度上是从XML中读取的。View 与事件(event)息息相关,两者之间通过Listener 结合在一起,每一个View都可以注册一个event listener,例如:当View要处理用户触碰(touch)的事件时,就要向Android框架注册View.OnClickListener。另外还有Image等同于J2ME的BitMap。 C/C++开发方面 早期的Android开发只支持Java作为编程语言开发应用程序,因而使得其他语言开发者只能望而却步。2010年4月,谷歌正式对开发者发布了Android NDK,NDK允许开发者使用C/C++作为编程语言来为Android开发应用程序,初版的NDK使得开发者看到了C/C++在Android开发中的希望。 但是,当前版本的NDK在功能上还有很多局限性:NDK并没有提供对应用程序生命周期的维护;NDK也不提供对Android系统中大量系统事件的支持;对于作为应用程序交互接口的UI API,当前版本的NDK中也没有提供。但是相对于初版的NDK,现在的NDK已经进行了许多重大的功能改进。 由此可见,NDK仍然需要完善和发展,相信未来随着NDK的发展,NDK可以做得更多更好。
中介软件
操作系统与应用程序的沟通桥梁,应用分为两层:函数层(Library)和虚拟机(Virtual Machine)。 Bionic是 Android 改良libc的版本。Android 同时包含了Webkit,所谓的Webkit 就是Apple Safari 浏览器背后的引擎。Surface flinger 是就2D或3D的内容显示到屏幕上。Android使用工具链(Toolchain)为Google自制的Bionic Libc。 Android采用OpenCORE作为基础多媒体框架。OpenCORE可分7大块:PVPlayer、PVAuthor、Codec、PacketVideo Multimedia Framework(PVMF)、Operating System Compatibility Library(OSCL)、Common、OpenMAX。 Android 使用skia 为核心图形引擎,搭配OpenGL/ES。skia与Linux Cairo功能相当,但相较于Linux Cairo, skia 功能还只是雏形的。2005年Skia公司被Google收购,2007年初,Skia GL源码被公开,目前Skia 也是Google Chrome 的图形引擎。 Android的多媒体数据库采用SQLite数据库系统。数据库又分为共用数据库及私用数据库。用户可通过ContentResolver类(Column)取得共用数据库。 Android的中间层多以Java 实现,并且采用特殊的Dalvik 虚拟机(Dalvik Virtual Machine)。Dalvik虚拟机是一种“暂存器型态”(Register Based)的Java虚拟机,变量皆存放于暂存器中,虚拟机的指令相对减少。 Dalvik虚拟机可以有多个实例(instance), 每个Android应用程序都用一个自属的Dalvik虚拟机来运行,让系统在运行程序时可达到优化。Dalvik 虚拟机并非运行Java字节码(Bytecode),而是运行一种称为.dex格式的文件。
硬件抽像层
Android 的 HAL(硬件抽像层)是能以封闭源码形式提供硬件驱动模块。HAL 的目的是为了把 Android framework 与 Linux kernel 隔开,让 Android 不至过度依赖 Linux kernel,以达成 kernel independent 的概念,也让 Android framework 的开发能在不考量驱动程序实现的前提下进行发展。 HAL stub 是一种代理人(proxy)的概念,stub 是以 *.so 档的形式存在。Stub 向 HAL“提供”操作函数(operations),并由 Android runtime 向 HAL 取得 stub 的 operations,再 callback 这些操作函数。HAL 里包含了许多的 stub(代理人)。Runtime 只要说明“类型”,即 module ID,就可以取得操作函数。
内核
Android 是运行于 Linux kernel之上,但并不是GNU/Linux。因为在一般GNU/Linux 里支持的功能,Android 大都没有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic 取代Glibc、以Skia 取代Cairo、再以opencore 取代FFmpeg 等等。Android 为了达到商业应用,必须移除被GNU GPL授权证所约束的部份,例如Android将驱动程序移到 userspace,使得Linux driver 与 Linux kernel彻底分开。bionic/libc/kernel/ 并非标准的kernel header files。Android 的 kernel header 是利用工具由 Linux kernel header 所产生的,这样做是为了保留常数、数据结构与宏。 目前Android 的 Linux kernel控制包括安全(Security),存储器管理(Memory Management),程序管理(Process Management),网络堆栈(Network Stack),驱动程序模型(Driver Model)等。下载Android源码之前,先要安装其构建工具 Repo来初始化源码。Repo 是 Android 用来辅助Git工作的一个工具。
安全权限机制
Android本身是一个权限分立的操作系统。在这类操作系统中,每个应用都以唯一的一个系统识别身份运行(Linux用户ID与群组ID)。系统的各部分也分别使用各自的识别方式。Linux就是这样将应用与应用,应用与系统隔离开。 系统更多的安全功能通过权限机制提供。权限可以某个特定进程的特定操作,也可以每个URI权限对特定数据段的访问。 Android安全架构的核心设计思想是,在默认设置下,所有应用都没有权限对其他应用、系统或用户进行较大影响的操作。这其中包括读写用户隐私数据(联系人或电子邮件),读写其他应用文件,访问网络或阻止设备待机等。 安装应用时,在检查程序签名提及的权限,且经过用户确认后,软件包安装器会给予应用权限。从用户角度看,一款Android应用通常会要求如下的权限: 拨打电话、发送短信或彩信、修改/删除SD卡上的内容、读取联系人信息、读取日程信息,写入日程数据、读取电话状态或识别码、精确的(基于GPS)地理位置、模糊的(基于网络获取)地理位置、创建蓝牙连接、对互联网的完全访问、查看网络状态,查看WiFi状态、避免手机待机、修改系统全局设置、读取同步设定、开机自启动、重启其他应用、终止运行中的应用、设定偏好应用、震动控制、拍摄图片等。 一款应用应该根据自身提供的功能,要求合理的权限。用户也可以分析一款应用所需权限,从而简单判定这款应用是否安全。如一款应用是不带广告的单机版,也没有任何附加内容需要下载,那么它要求访问网络的权限就比较可疑。
iPhone是一部4频段的GSM制式手机,支持EDGE和802.11b/g无线上网(iPhone3G/3Gs/4支持WCDMA上网,iPhone4支持802.11n),支持电邮、移动通话、短信、网络浏览以及其他的无线通信服务。iPhone没有键盘,而是创新地引入了多点触摸(Multi-touch)触摸屏界面,在操作性上与其他品牌的手机相比占有领先地位。iPhone是结合照相手机、个人数码助理、媒体播放器以及无线通信设备的掌上设备,由苹果公司(Apple, Inc.)首席执行官史蒂夫·乔布斯(Steve Paul Jobs)在2007年1月9日举行的Macworld宣布推出,2007年6月29日在美国上市。
苹果公司于2007年推出的iPhone手机引领了这几年的触摸屏手机市场,当前各大公司推出的手机多在追逐或者延伸iPhone的触摸交互设计方案。
iPhone手机的几个主要特点是:
1.屏幕足够大。iPhone手机采用了3.5吋的屏幕,分辨率达到了480*320。使手机操作界面与PC显示器界面更加的接近,其单手操作的理念有机会得以实施。
2.用户易理解的手势操作。双击可以放大或还原图片,手指拨动可以切换图片,双指拉伸可以放大图片,双指收缩可以缩小图片等都是模拟自然的操作方式,用户自然地从现实世界中迁移知识。
3.功能简单。只提供了最简单的功能,在短信中没有转发功能等。
4.逼真的图标。在iPhone上的图标设计都十分形象,使用户一看就能理解其含义。
5.超炫的界面转场效果。在iPhone上使用了多种很炫的转场效果,这些效果不仅使界面的过渡更自然,同时也给了用户提供了正确的反馈信息,使用户很容易就理解并记住交互的形式。
6.传感器的使用。在iPhone手机中使用了温度传感器、重力传感器、光感应传感器等,完成了很多界面的自适应操作,对用户更人性化。
从当前的市场反馈信息可以清晰的看出,iPhone在智能手机领域掀起了巨大的风浪,其模仿者不计其数,也朝着iPhone指引的交互道路上前进。
在iPhone推出的同时,Nokia公司推出了N95系列(12键键盘)、E71系列(QWERT键盘),这些手机做为键盘机的标志产品是延续了Nokia的易用性的产品特性,同时在此基础上大大提高了其配置。
它们具有的特性有:
1.较高的硬件配置。
2.易用性高。延续了N系列产品的特征,用户很容易使用该产品。
3.功能强。手机中内置的功能很多,当前手机的基本功能在N95中都能找到。
4.按键操作。延续了当前市场上的键盘手机操作方式,通过手机导航键和软键完成功能的操作。
虽然很多优秀的公司都推出了许多别具特色的手机,如Blackberry系列,oPhone手机等,但所有的手机都是在现有的交互范式内完成所有的功能,即使是即带键盘又是触摸屏的手机也只不过是两种普通交互范式的整合,没有跳出现有的设计思路。
3.人机界面相关的技术发展趋势
为了更有效地在人机之间传递信息,一些新型的交互技术和设备逐步成熟,如语音、手写、手势、3D交互、鼠标、数据衣、数据手套、头盔以及人机之间的传感设备。这些新的交互技术在手机上的使用发展了手机交互的带宽,突破了人与手机交互的基本障碍,构造了更和谐的人机环境。
由iPhone手机的开发也可以看出,许多新颖的体验是由新的技术创新完成的。在下面内容,我们将讨论几种最有可能影响我们未来手机界面发展的技术。
(1)3D技术
由于人生活在三维空间,习惯于看、听和操纵三维的客观对象,人类都是生活在三维的现实情景中,三维的交互对人类来说是自然的方式。因此,三维的人机交互界面是未来发展界面发展的方向之一。
3D交互技术是为了克服传统交互的2D而发展起来的,其目的是在人机之间构造一种自然直观的三维交互环境,将在现实世界中人与环境交互作用的经验尽可能直接移植到人机环境中,并在人机环境中获得类似于或相同于现实世界中交互的真实三维感受,消除人被动地去适应系统界面所带来的认知负担,增加人机交互的整体效率。
(2)各种识别技术
1)手势识别
手势是人手或者手和臂结合所产生的各种姿势,手势蕴含着丰富的信息,通过手势可以传达大量的信息,实现高速通信。大部分的任务利用手势可以很自然地实现,提供一种可视化的交互方式.但是对某些命令还是难以用手势的形式来表达,使得手势和目标语义表达之间存在差距,并且语义表达是否真正符合用户的意图也不容易判断,设计不好手势的往往会误导用户,影响了功能和可用性。触屏手机通过对手指划动屏幕的手势进行识别,来完成与手机的交互。但是由于识别技术的,可用的手势种类不多,随着其他计算视觉等技术在手机上的成熟运用,则手势识别会有更大的发展。
2)语音识别
语音识别是较早就进行的一种自然交互技术,语音拨号、语音命令控制、简单的数据输入等工具已经开始在手机中使用。利用语音识别技术,用户通过语音输入来拓宽手机输入的窄道,而语音的信息反馈则使用户可以使用除视觉之外的第二感觉通道来接收信息。但是由于手机使用场景非常复杂,而语音识别的性能受到说话方式、环境噪音、不同的说话人同时在场等因素的显著影响,因此语音识别技术在手机中的广泛使用还有需要技术问题需要解决。
3)表情识别
人的各种情绪变化以及对冷热的感觉都是非常复杂的高级神经运动,如何感知、记录、识别这些变化过程是表情识别的关键。产品或者计算机对于面部表情的识别主要体现在跟踪面部表情、对不同的表情进行编码以及识别面部表情。未来在手机中使用表情识别技术,使手机能更进一步了解人的情绪状态,从而能更和谐的完成与人的交互。
(3)各种传感器技术
MEMS(Micro Electrical Mechanical System)微电子机械系统技术的发展将使传感器的使用变得无处不在。同时,集成了传感器、微机电系统和网络三大技术而形成的传感器网络是一种全新的信息获取和处理技术,不仅可以帮助手机检测手机所处的各种状态,同时可以和其他设备进行交互,极大的拓展相关的业务。
(4)虚拟现实技术
虚拟现实交互技术融合了数字图像处理、多媒体技术、计算机图形学、传感器技术等多方面信息技术,它是利用计算机生成一种虚拟环境,通过各种传感设备使操作者“沉浸”到该环境中,实现操作者和该环境直接进行自然交互。它是以计算机技术为核心的技术,生成逼真的视、听、触觉一体化的特定范围的虚拟环境,用户借助必要的设备以自然的方式与虚拟环境中的对象进行交换作用、相互影响,从而产生等同于真实环境的感受和体验。
虚拟现实技术将在未来的3D手机游戏、3D场景中浏览信息时,表现的更真实、有更好的用户体验。
(5)计算视觉
随着处理器速度和内存容量的指数级增长,计算机视觉的研究和应用得到迅速的发展。它的发展将对手势识别、表情识别等交互范式的应用有着重要的意义。如果在手机中使用计算机视觉技术,将能让手机更自然的进行交互,同时也能更好的方便以手势交流的盲人等残疾人士更好的使用手机。
(6)无线通信技术本身的助力
3G、LTE等更高级的技术将会使未来的无线带宽达到甚至超过现有的固网带宽,这将使手机的应用进一步多样化。同时,机器对机器的交互在不久的将来会给交互的范式带来更大的影响。NFC等近距离通讯方式的普及使用,都将要求手机能有更自然的人机交互方式,未来的手机概念也因此得到改变,无处不在的计算将使得界面无处不在。无处不在的界面将会是未来的发展方向之一。
4.移动互联网对手持界面设计的影响
移动互联网是当前的热点话题,它是指通过手机、PDA等手持设备来访问Internet 网络的。然而通过移动设备来访问互联网与传统互联网有很大的不同,不仅可以处在安静环境也可能在嘈杂的环境中;用户周边的环境(包括其他的人员)都会极大的干扰用户,使用户随时转移注意力;与PC相比,还有屏幕大小及输入功能的。
在移动互联网中,不仅包括在手机设备上的浏览内容,也包括物理浏览,即通过物理世界中的对象来访问Internet内容,例如像RFID、NFC等,不仅仅局限于当前的屏幕界面交互。
随着无线带宽的加大,手持设备性能进一步的增强,都会无线互联网业务的发展提供了硬件条件。苹果App Store、谷歌的application market等为代表的手机应用平台更将无线应用的爆发创造了最有利用的条件。五花八门的应用和有创造力的程序员也为创新界面带来了新的活力,他们必然会突破各个平台的基本框架,开发出超想象的应用界面,这也会引领界面的新变革。
从各平台的应用界面可以看出,未来的手机界面将会朝着更智能、更逼真、更灵活的方式设计。
5.手机界面发展的未来
不管未来手机的外观形态如何,手机的交互界面将会朝着以下的几个方面前进。
(1)自适应的人机界面
随着技术的进一步发展,未来的手机将可以判断用户使用它的各种场景,并针对场景进行自然的反馈。手机定位信息、传感器技术、无处不在的计算等技术的发展,使我们能对手机当前的使用环境有更精确的认识。
定位信息使我们能知道用户当前的位置,通过位置信息将可以得到用户的基本场景。再通过各种传感器信息,读取当时环境的声音、温度、湿度、亮度等各种环境信息,手机将能精确的判断所处的环境,然后针对当前的环境信息,进行自动的情景适应;在通过对各种情景的判断,提出适当的用户想要的服务,满足用户的需求。无处不在的计算网络使手机作为整个网络上的一个节点,可以和其他的设备进行自动交互,未来的很多交互都是有手机自动发起,但又是用户正需要做这些操作。