前言

前言

Android是一款用于手机和平板电脑的开源操作系统,由Google及其合作伙伴和其他参与者开发。使用Android的手机和其他移动设备现已超过10亿部,这让它占据了头号应用开发平台的宝座。无论你是业余爱好者还是专业程序员,无论你从事Android开发只是出于好玩还是为了赚钱,都需要更深入地学习。本书旨在帮助你起步。

Android的独特之处

市面上的其他移动平台还有很多,包括iOS、Windows、Tizen、Firefox OS等。为何大家会选择Android?它有什么独特之处呢?

虽然Android的一些功能并不新颖,但它是第一个兼具如下特点的环境。

  • 基于Linux的免费开源平台:手机制造商对其钟爱有加,因为他们可以对这个平台进行定制,而无需支付版权费。开发人员也喜欢它,因为他们知道这个平台不受制于任何可能破产或被收购的厂商。

  • 基于组件的架构(其灵感来自于Internet混搭技术):能够以不同于开发人员最初设想的方式使用应用的组成部分,甚至可以将内置组件替换为改进版本。这在移动领域发起了新一轮的创意运动。

  • 大量现成的服务:基于位置的服务使用GPS或基站三角学定位,让你能够根据设备位置定制用户体验。五脏俱全的SQL数据库能够让你好好地利用本地存储,设备只需时不时地联网同步即可。浏览器和地图视图可以直接嵌入到应用中。这些功能都能使应用的功能得到进一步的提升,同时还降低了开发成本。

  • 自动管理应用的生命周期:多重安全保障能够将程序彼此隔离,从而提高了系统的稳定性。最终用户不必关心哪些应用处于活动状态,也无需关闭一些程序以便运行其他程序。Android针对电量和内存有限的设备进行了彻底优化,这是以前的平台没有尝试过的。

  • 高品质图形和声音:流畅而平滑的2D和3D加速图形支持新的游戏和商业应用。内置的编码/解码器支持常见的行业标准音频和视频格式,包括H.264(AVC)、MP3和AAC。

  • 到各种既有和未来硬件的移植性:所有程序都使用Java编写,并由Android的ART预先编译器或Dalvik虚拟机执行,因此代码可移植到ARM、x86和其他体系结构。支持各种输入方法,如键盘、游戏手柄、触摸、电视遥控、鼠标和跟踪球。可针对任何屏幕分辨率和朝向定制用户界面。

Android在移动应用与用户交互方面进行了新的尝试,并为这种交互提供了技术支持。但在整个Android生态系统中,最重要的还是开发人员为之编写的软件。本书将帮助你在这方面开好头。

针对的读者

本书是为想快速熟悉Android平台的新手编写的。只需几分钟,你就能安装好开发工具并编写第一个程序。阅读完本书后,你将能够编写引人入胜的完整应用。更重要的是,你将能够找到并看懂Android开发旅程中所需要的高级材料。

要阅读本书,你必须明白基本的Java编程概念,如类、方法、作用域和继承,还必须知道importstaticfinalpublicthis等Java关键字的含义。如果你不明白我在说什么,建议先阅读一本Java入门书,如:

  • Java Precisely [Ses05]

  • 《Head First Java(中文版)》(Head First Java)[SB05]

  • 《Effective Java中文版》(Effective Java)[Blo08]

  • 《Java程序设计语言》(The Java Programming Language)[AGH05]

  • 《Java技术手册(第6版)》(Java in a Nutshell)[EF14]

你不需要具备任何移动设备软件开发经验。实际上,如果你有这样的经验,最好将其抛诸脑后,因为Android是如此地与众不同,刚接触它时最好是没有任何的成见。然而,如果你具备IntelliJ IDEA、Eclipse或Visual Studio等集成开发环境(IDE)的使用经验,这些经验将派上用场。

涵盖的内容

本书分为四大部分,大致是按从简单主题到复杂主题,或者说从Android常见方面到不那么常见的方面来安排的。

我们利用几章的篇幅开发了一个示例:Android终极版井字棋游戏。通过逐渐给这个游戏添加功能,你将学习Android编程的很多方面,包括用户界面、多媒体以及Android活动和片段的生命周期。

第一部分首先将简要地介绍Android,你将学习如何安装Android模拟器以及如何使用IDE来编写第一个程序。接下来将介绍几个重要的概念,如Android应用的生命周期。Android编程与你习惯的方式稍有不同,请务必掌握这些概念后再接着往下阅读。

第二部分讨论Android用户界面:显示、输入、多媒体和动画。你编写的很多程序都将用到这些功能。

第三部分更深入地探讨Android平台,包括如何让应用与多种Android设备和版本兼容,以及如何将应用发布到Google Play Store。

第四部分讨论一些较高级的主题,包括嵌入HTML页面、访问Web服务、使用Google Play服务以及使用内置的SQLite数据库存储数据。

本书的最后是附录和参考文献。其中,附录介绍了Android和Java Standard Edition(SE)的差别。

新增内容

本版经过了修订,以支持Android 4.1到Android 5.1的所有版本。本书所说的Android“现代”版,指的是Android 4.1(Jelly Bean)和更高版。

旧版本

Android 2.3(Gingerbread)是最后一个只支持手机的版本。Android 3.0(Honeycomb)是重要的分水岭,但只支持平板电脑,因此采用它的设备十分有限(但在Google内部所处的地位无疑是最高的)。Android 4.0(Ice Cream Sandwich)同时支持手机和平板电脑,但几乎没有在Android 3.0的基础上新增任何功能。

Android 4.1的新特性

在Android 4.1中,Google为改善可用性和性能做了很大努力。这个计划的代号为Project Butter。Google添加了测量系统速度和效率的新方法,进而优化了处理时间的使用效率1

1http://d.android.com/sdk/api_diff/16/changes.html

Android 4.2的新特性

Android 4.1取得了巨大成功。受此鼓励,Google决定在接下来的两个版本中保留原来的代号。Android 4.2(Jelly Bean MR1)在改善性能的道路上继续前行,同时还新增了多用户支持、使用Miracast标准以无线方式将屏幕投射到远程显示器的功能2

2http://d.android.com/sdk/api_diff/17/changes.html

Android 4.3的新特性

Android 4.3(Jelly Bean MR2)的重点是安全性。它将SE(Security Enhanced)Linux作为底层操作系统,并新增了权限设置(restricted profile)功能,让设备所有者能够给不同用户设置不同的权限。它还是第一个支持OpenGL ES 3.0的版本3

3http://d.android.com/sdk/api_diff/18/changes.html

Android 4.4的新特性

在Android 4.4(KitKat)中,最重要的新特性是,将基于WebKit的WebView替换成了Chrome浏览器4使用的Chromium引擎。

4http://d.android.com/sdk/api_diff/19/changes.html

Android 4.4W的新特性

Android Wear(KitKat for Watches)是用于智能手表的操作系统,为支持可穿戴设备5,必须做一些修改和修复。

5http://d.android.com/sdk/api_diff/20/changes.html

Android 5.0的新特性

Android 5.0(Lollipop)最显著的变化是引入了一种新的设计语言——Material Design。在内部,之前所有版本都使用的Dalvik VM被替换为了ART。ART依靠提前编译来改善性能。最后,开启了Project Volta计划6,其目标与Project Butter相同,但旨在延长电池的续航时间,而不是改善性能。

6http://d.android.com/sdk/api_diff/21/changes.html

Android 5.1的新特性

Android 5.1(Lollipop MR1)支持多个SIM卡,新增了通过Google Play分发运营商应用的功能。另外,摒弃了AndroidHttpClient类以及org.apache.http包中大量的类7

7http://d.android.com/sdk/api_diff/22/changes.html

如果我没记错,L后面是M、N、O和P。只要采纳本书的建议,你所编写的程序只需做少量修改(甚至无需修改),就能支持未来的Android版本。第8章介绍了如何创建支持多个版本的程序。

要了解各种Android版本的最新市场份额,请参阅Android Device Dashboard8。本书的所有示例都针对Android 4.1~5.1版进行了测试。

8http://d.android.com/resources/dashboard/platform-versions.html

本书不支持Android 4.1之前的版本,因为它们占据的市场份额很小并且还在不断萎缩。本书也没有过多考虑Android 5.1支持的自定义,因为编写本书时,使用Android 5.1的设备还不多。为确保短小精悍,本书只探讨大多数Android程序都涉及的主题。

在线资源

本书的配套网站9提供了如下资源。

9http://pragprog.com/book/eband4

  • 本书所有示例程序的完整源代码以及声音和图像等资源。

  • 列出本版错误的勘误表(但愿它始终是空的)。

  • 让你能够直接与作者和其他Android开发人员交流的论坛(但愿它内容多多)。

只要你觉得合适,可以在你的应用中随便使用这些源代码。请注意,如果你阅读的是电子书,也可以单击代码清单前面的三角形来直接下载源代码文件。

快速阅读指南

大多数作者都希望读者逐字阅读其著作,但我知道你不会这样做,你只想学习完成手头任务所需的知识,等以后需要完成其他任务时,再回过头来阅读相关的内容。有鉴于此,我尽力提供了相关帮助,以免你迷路。

本书每章都以“快速阅读指南”结束,为下一章的内容提供了指南,让你在不按顺序阅读时知道接下来该阅读的内容;同时还列出了图书和在线文档等其他资源,让你能够更深入地了解相关的主题。

现在就开始阅读吧。第1章将引导你动手创建一个非常简单的Android程序;第2章则会回过头来介绍Android基本概念和理念;第3章将介绍一个井字棋示例,并深入探讨用户界面——大多数Android程序最重要的部分。

你的终极目标是,将应用提交到Play Store进行销售或供人免费下载,因此第9章将演示如何完成这个最后的步骤。

目录

  • 版权声明
  • 致谢
  • 前言
  • 第一部分 Android简介
  • 第 1 章 快速入门
  • 第 2 章 重要概念
  • 第二部分 开发一个游戏
  • 第 3 章 开局走法
  • 第 4 章 定义游戏界面
  • 第 5 章 机器幽灵
  • 第 6 章 添加声音
  • 第 7 章 添加动画
  • 第三部分 创造性思维
  • 第 8 章 编写一次,到处测试
  • 第 9 章 发布到Google Play Store
  • 第四部分 进阶
  • 第 10 章 联网
  • 第 11 章 调用Web服务
  • 第 12 章 使用Google Play服务
  • 第 13 章 使用SQL
  • 第五部分 附录
  • 附录 Java和Android在语言和API方面的异同
  • 参考文献