零、前言

欢迎来到安卓秘籍!

如果你正在读这本书,你可能不需要被告知移动设备对软件开发者和用户来说代表着巨大的机会。近年来,Android 已经成为设备用户的顶级移动平台之一。这意味着,作为一名开发者,你必须知道如何利用 Android,这样你才能与这个市场和它提供的潜力保持联系。但是,任何新平台都会带来最佳实践或解决共同需求和问题的不确定性。

我们打算用 Android Recipes 给你工具,通过直接的例子,针对你试图解决的具体问题,为 Android 平台编写应用。这本书没有深入探究 Android SDK、NDK 或任何其他工具。我们不会用幕后的所有细节和理论来拖累你。这并不是说这些细节不有趣或不重要。你应该花时间去学习它们,因为它们可以避免你将来犯错误。然而,当你只是在寻找一个紧急问题的解决方案时,它们往往只是一种干扰。

这本书不是要教你 Java 编程,甚至是 Android 应用的构建模块。你在这本书里找不到很多基本的方法(比如如何用文本视图显示文本),因为我们觉得这些任务一旦学会就很容易记住。相反,我们开始着手解决那些曾经熟悉 Android 的开发人员需要经常做的任务,但是这些任务太复杂了,以至于无法用几行代码记住或完成。

Android 秘籍作为参考资料来查阅,这是一本资源丰富的秘籍,你可以随时打开,找到你需要的实用建议,以便又快又好地完成工作。

你会在书中发现什么?

虽然这本书不是 Android 的入门指南,但第 1 章概述了理解本书其余内容所必需的 Android 基础知识。第 1 章还向你展示了如何设置你的环境,以便你可以开发 Android 应用。具体来说,它向您展示了如何使用 ADT 插件安装 Android SDK 和 Eclipse。

当你成为一名经验丰富的 Android 应用开发人员时,你会希望通过不重新发明轮子来节省时间。相反,您会想要创建和使用自己的可重用代码库,或者使用其他人创建的库。第 7 章向你展示如何以基于 JAR 的库和 Android 库项目的形式创建和使用你自己的库代码。除了创建您自己的库,我们还将在 Android SDK 之外引入几个 Java 库,您的应用可以使用它们。

在中间的章节中,我们深入研究使用 Android SDK 来解决实际问题。您将学习有效创建跨设备边界运行的用户界面的技巧。你将成为整合硬件(收音机、传感器和照相机)的大师,这些硬件使移动设备成为如此独特的平台。我们甚至会讨论如何让这个系统为你服务,整合谷歌和各种设备制造商提供的服务和应用。在此过程中,您将了解到一些由社区开发的工具,这些工具有助于简化应用的开发和测试。

你对脚本语言(比如 Python 或者 Ruby)感兴趣吗?如果是这样的话,你会想看看附录 A ,它向你介绍了 Android 的脚本层。这个特殊的应用可以让你在设备上安装脚本语言解释器和脚本,然后运行这些脚本,这可以加快开发速度。

如果你想让你的应用成功,性能很重要。大多数时候,这不是问题,因为(从 2.2 版本开始)Android 的 Dalvik 虚拟机具有一个即时编译器,可以将 Dalvik 字节码编译成设备的本机代码。然而,如果这还不够,你还需要利用 Android NDK 来提高性能。附录 B 向您介绍了 NDK,并展示了它在 OpenGL 示例中的用途。

当创建应用时,你需要确保它们是高性能的、反应灵敏的和无缝的。运行良好的应用消耗的电池电量更少,响应性应用避免了可怕的应用不响应对话框,无缝应用可以与其他应用正常交互,从而不会打扰或混淆用户。此外,当您将应用发布到 Google 的 Android Market 时,您不希望该应用对不兼容的设备可见。相反,你希望 Android Market 过滤你的应用,让这些不兼容设备的用户无法下载(甚至无法看到)该应用。附录 C 为你提供了创建高性能、响应性和无缝应用的指导方针,从而使本书更加完整;利用过滤功能,只有那些设备与应用兼容的用户才能(从 Android Market)下载应用。

盯紧目标

在整本书中,你会看到我们已经用支持它所需的最低 API 级别标记了大多数秘籍。这本书里的大部分菜谱都标注了 API Level 1,也就是说使用的代码可以在针对 1.0 以后的任何版本 Android 的应用中运行。但是,在必要的地方,我们会使用在以后版本中引入的 API。密切注意每个秘籍的 API 级别标记,以确保您没有使用与您的应用支持的 Android 版本不匹配的代码。