
1.1 Android简介
无论你是一名经验丰富的移动开发工程师、桌面开发人员或者Web开发人员,还是一个初出茅庐的编程新手,Android都为编写具有创新性的移动应用程序带来了令人兴奋的新机遇。
虽然它被命名为Android(机器人),但事实上,Android是一个开源的软件栈,它包含了操作系统、中间件和关键的移动应用程序,以及一组用于编写移动应用程序的API库。所编写的移动应用程序将决定移动设备的样式、观感和功能。
小巧玲珑、外观时尚且功能丰富的现代移动设备,已经成为了集触摸屏、摄像头、媒体播放器、GPS系统和近场通信(Near Field Communications,NFC)硬件为一体的强大工具。随着技术的发展,手机的功能已不再仅仅是打电话那么简单。在添加了对平板电脑和Google TV等的支持后,Android已经不再只是一个手机操作系统,它为在越来越多的硬件上进行应用开发提供了一个一致的平台。
在Android中,本地应用程序和第三方应用程序使用相同的API编写,并且在相同的运行环境(Runtime)上执行。这些API的功能包括硬件访问、视频录制、基于位置的服务(Location-based Service)、后台服务支持、基于地图的Activity、关系数据库、应用程序间的通信、蓝牙、NFC,以及2D和3D图形。通过本书,读者可以学到如何使用这些API来开发自己的Android应用程序。
Android拥有功能强大的API、出色的文档及开发人员社区,而且不需要为开发或发布支付费用。随着移动设备的日益普及,以及越来越多的设备采用Android作为系统,不管具有什么样的开发背景,使用Android来开发新颖的手机应用程序都是一个令人为之振奋的事情。
1 背景信息
在Twitter和Facebook出现之前,当Google还只是一个想法时,手机只是小体积的便携电话,能够放在公文包中,电池足够用上几个小时。虽然没有多余的功能,但是手机确实使人们可以不通过物理通信线路就能自由通信。
现在,小巧、时尚而且功能强大的手机已经相当普及并且不可或缺。硬件的发展使手机在拥有更大更亮的屏幕和越来越多的外围设备的同时,也变得更加小巧和高效。
继集成了摄像头和媒体播放器以后,现在的手机更是包含了GPS系统、加速计、NFC硬件和高分辨率触摸屏。虽然这些硬件上的创新为软件开发提供了广泛的应用基础,但实际情况却不容乐观,手机应用程序的开发已经落后于相应的硬件水平了。
2.Android的发展
过去,那些通常使用C或者C++进行编程的开发人员必须理解在其上编写代码的特定硬件。这些硬件通常是一个设备,但也可能是来自于同一家生产商的一系列设备。随着硬件技术和移动互联网接入技术的发展,这种封闭的方法很难追赶硬件发展的步伐。
后来,人们开发出了类似Symbian这样的平台,从而给开发人员提供了更广泛的目标用户群(Target Audience)。在鼓励移动开发人员开发更为丰富的应用程序以便更高效地利用硬件方面,这些系统比上述那种封闭的方法更加成功。
这些平台提供了一些访问设备硬件的接口,但是要求编写复杂的C/C++代码,而且严重依赖那些因难以使用而著称的专有API。当开发那些必须运行在不同的硬件实现上的应用程序,以及使用特定的硬件功能(如GPS)的应用程序时,这些困难就呈现在了开发人员面前。
近几年,移动开发的最大亮点在于引入了由Java承载(Java-hosted)的MIDlet。MIDlet是在一个Java虚拟机上执行的,它把底层的硬件抽象出来,从而使开发人员可以开发出能运行在多种硬件上的应用程序,只要这些硬件支持Java运行环境(Java Run Time)就可以。遗憾的是,这种便利是以对设备硬件的访问限制为代价的。
在移动开发中,通常第三方应用程序的硬件访问和执行权限与手机制造商编写的本机应用程序的权限是不同的,而MIDlet则通常不具有这两种权限。
Java MIDlet的引入扩大了开发人员的目标用户群,但是由于缺乏对低级硬件的访问权限及沙盒式的执行等原因,大部分移动应用程序都是运行在较小屏幕上的桌面程序或Web站点,而没有充分利用移动平台的固有移动性。
3.Android的未来
Android作为一个出现不久的移动信息设备开发平台,因为具有一些巨大的先天优势,所以发展前景良好。Android的优势主要体现在以下几个方面。
(1)系统的开放性和免费性
Android最震撼人心之处在于Android手机系统的开放性和服务免费。Android是一个对第三方软件完全开放的平台,开发者在为其开发程序时拥有最大的自由度,突破了iPhone等只能添加为数不多的固定软件的枷锁,同时与Windows Mobile、Symbian等操作系统不同,Android操作系统免费向开发人员提供,这一点对开发者和厂商来说是最大的诱惑。
(2)移动互联网的发展
Android采用WebKit浏览器引擎,具备触摸屏、高级图形显示和上网功能,用户能够在手机上查看电子邮件、搜索网址,以及观看视频节目等,比iPhone等具有更强大的搜索功能,界面更强大,可以说是一种融入全部Web应用的互联网络平台。这正顺应了移动互联网这个大潮流,也必将有助于Android的推广及应用。
(3)相关厂商的大力支持
Android项目目前正在从手机运营商、手机制造厂商、开发者和消费者那里获得大力支持。从组建开放手机联盟开始,Google一直在向服务提供商、芯片厂商和手机销售商提供Android平台的技术支持。
但是Android也不是一个完美的系统,它同样面临着许多挑战,主要体现在以下几个方面。
(1)技术的进一步完善
目前,Android系统在技术上仍有许多需要完善的地方,例如,不支持桌面同步功能,还有自身系统的一些bug,这些都是Android需要去继续完善的地方。
(2)开放手机联盟模式的挑战
Android由开放手机联盟开发、维护和完善,还有未来的创新。很多人会担心,最终的结局是否会像当年的Linux和Windows操作系统之争那样?这种开放式联盟的模式,对Android未来的发展、定位是否存在阻碍作用?这些未知的隐忧,也会影响一些开发者的信心。
(3)其他技术的竞争
提到移动信息设备,特别是智能手机,永远都要注意Windows Phone,因为它背后的微软公司拥有PC操作系统市场最大、最牢不可破的占有率。而智能手机与PC互相连动,实现无缝对接,这是智能手机的一个发展趋势。在这方面,Android就显得稍逊一筹。此外,即使在智能手机自身的操作系统上,苹果公司的iPhone目前也拥有很强的竞争力。