标题：Android应用开发详解
图书信息
书名：Android应用开发详解  作者：郭宏志 编著
ISBN 978-7-121-10875-4 
出版日期：2010年6月 
定价：59.80元（含CD光盘1张） 
开本：16开 
页码：508 页
宣传语
案例真实，拿来就用
覆盖全面，从入门到精通
鱼我所欲也，渔亦我所欲也。这是一本鱼渔兼得的好书。
前 言
移动互联网时代 来临，一个崭新的时代开始了。所谓移动互联网就是将移动通信和互联网整合在一起，使移动设备（包括手机和上网本）可以随时随地地访问互联网资源和应用。互联网时代创造了一个经济神话，也造就了很多时代英雄，他们一个个令人仰慕。试想为数亿的手机用户和数亿的网民建立一个共同的平台，使其应用到企业、商业和和农村之间，又会是怎样一个惊天动地的伟业呢？新时代开始了，你愿意输在起跑线上吗？
智能手机 是移动互联网时代一个标志性的客户端工具，它和传统的手机是有区别的，它就像一台“小电脑”，具有独立的操作系统，可以自由安装、卸载软件，具有强大的计算和存储能力，可以通过移动通信网络来实现无线网络接入。智能手机一般具备如下特点：高速度处理芯片、大存储芯片和存储扩展能力、面积大、标准化、可触摸的显示屏、摄像头至少300万像素、支持播放式的手机电视、必须支持GPS导航、操作系统必须支持新应用的安装等。
互联网的竞争格局基本定型，那么移动互联网时代竞争的焦点在智能手机终端上，软件部分包括智能手机操作系统和应用软件。
目前智能手机操作系统有：诺基亚的Symbian、微软的Windows Mobile和Google的Android等。
Google 于1998年9月7日创立，经过十几年在搜索引擎方面的精耕细作，成为全球互联网巨头，尤其在地图搜索的应用更是引人注目。Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统，名称为Android，中文译为“机器人”。这意味着Google在移动互联网时代开始抢跑并领跑。
Android 是一个真正意义上的开源智能手机操作系统，该系统由底层的Linux、中间层的软件包和上层的Java应用程序组合而成。该系统一经推出立即受到了全球移动设备厂商和开发者的热捧。
2008年9月22日，美国运营商T-Mobile USA在纽约正式发布第一款Google手机——T-Mobile G1。该款手机为中国台湾宏达电代工制造，是世界上第一部使用Android操作系统的手机，它支持WCDMA/HSPA网络，理论下载速率为7.2Mbps，并支持Wi-Fi。到了2010年1月，Google开始发布自家品牌手机Nexus One。该款手机使用的操作系统是Android 2.1。如下左图为G1，右图为Nexus One。
图1 G1和Nexus One
内容简介
本书分为三个部分，包括基础篇、技术篇和应用篇。由浅入深地讲述了Android应用开发的方方面面。
篇 名 章 名 内容简介
第一篇 基础篇 第1章 Android概述 Android概述，讲述了Android的前生后世、架构和特点、Android Market、应用程序组件和Android与Java ME的区别及联系
第2章 Android开发基础 Android开发基础，讲述了Android开发环境的搭建、Android常用工具的使用和第一个Android应用程序的开发
第二篇 技术篇 第3章 Android中的资源访问 Android 中的资源访问，讲述了如何定义和访问Android中的外部资源。
第4章 Android用户界面 Android 用户界面，讲述了Android中的事件处理机制、布局管理和常用组件的使用。
第5章 Android基本程序单元Activity Android 基本程序单元Activity，讲述了Android中重要组件Activity的创建、启动和生命周期等内容
续表 
篇 名 章 名 内容简介
第二篇 技术篇 第6章 Android组件之间的信使Intent Android 组件之间的信使Intent，讲述了Intent对象及其属性、Intent的实现策略和Intent的常见应用
第7章 Android Service组件 Android Service组件，讲述了Android中的后台服务Service的概念、创建和使用，并详细讲解了远程服务的调用
第8章 Android广播事件处理 Broadcast Receiver Android 广播事件处理 Broadcast Receiver，讲述了广播事件处理机制、Notification、NotificationManager和AlarmManager的使用
第9章 Android中的数据存取 Android中的数据存取，讲述了Android的四种数据存取方法：Preference、File、SQLite和Network
第10章 Content Provider Content Provider，讲述了Android不同应用程序之间相互共享数据的机制，包括ContentProvider和ContentResolver
第11章 Android中的多媒体应用 Android中的多媒体应用，讲述了Android的图片应用、音频及视频播放、音频及视频录制和照相机的使用
第12章 Android中的图形图像 Android中的图形图像，讲述了Android中的图片、动画、图形绘制和图形特效
第13章 Android中的互联网应用 Android中的互联网应用，讲述了Android中的各种网络应用，包括Socket、URL、HTTP、Web Service和WebView组件
第14章 Android中的GPS应用 Android中的GPS应用，讲述了LocationManager、LocationProvider、跟踪、定位、Geocoder正逆向编解码和可视化位置服务
第三篇 应用篇 第15章 Android应用案例——移动警务通 Android 应用案例——移动警务通，通过一个真实的商业案例讲解了Android的各种应用，本项目包括信息采集、信息查询、照片上传、GPS定位等综合警务应用
第16章 Android应用案例——雷电游戏 Android 应用案例——雷电游戏，通过一个完整的雷电游戏，讲述了Android的游戏开发思路、框架和具体实现，并比较了Android游戏开发和Java ME游戏开发的异同，成功移植了Java ME游戏API到Android当中
第17章 Android应用案例——备忘录 Android 应用案例——备忘录，通过一个Android基础应用项目综合应用了Android中的各种组件，包括Activity、Service、Broadcast Receiver、ContentProvider、Intent和View的应用
第18章 Android应用案例——无线点餐系统 Android 应用案例——无线点餐系统，通过一个真实的商业案例讲解了Android的各种应用，本项目包括操作员登录、点餐、结算、转台、并台、查台、更新数据和退出系统等餐厅点餐的常用操作
本书特点
1．实例丰富，步步为“赢”
作为一名从业多年的开发人员，笔者深刻体会到技术型书籍中的实例代码对读者的重要意义，所以本书实例占据了本书的很大篇幅；作为一名多年的培训讲师，笔者也掌握了如何“传道”的技巧，这种技巧就是“编程思路”，也叫“编程步骤”，所以本书中每个实例开始部分都有概括性的步骤总结，使读者有“画竹必先有成竹于胸”的感受。
2．代码整齐，注释清晰
为了使读者更好更快地学习Android，书中的代码非常整齐，并且每行代码都有注释。下面的代码段演示了有注释的程序和没有注释的程序。
本书内容的介绍：
作为一本android应用开发书籍，本书既适合android初学者，也适合具备了一定android开发经验但需要开发案例的高级读者。
本书分为三个部分，共18章，由浅入深地详细介绍了android的每个开发细节。
本书基础翔实，实例丰富，案例真实。从基础到案例覆盖了android应用开发的三大领域：基础应用、网络应用和游戏应用。读者所需要学习的，正是本书描述的。 
有注释
package com.amaker.ch03.dimen;
import android.app.Activity;
import android.content.res.Resources;
import android.os.Bundle;
import android.widget.Button;
import com.amaker.test.R;
/**
*
* @author 郭宏志
* 测试尺寸资源
*/
public class TestDimensionActivity extends Activity {
private Button myButton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 设置当前Activity的内容布局视图
setContentView(R.layout.test_dimen);
// 通过findViewById方法获得Button实例
myButton = (Button)findViewById(R.id.Button01);
// 获得Resources 实例
Resources r = getResources();
// 通过getDimension方法获得尺寸值
float btn_h = r.getDimension(R.dimen.btn_height);
float btn_w = r.getDimension(R.dimen.btn_width);
// 设置按钮的宽
myButton.setHeight((int)btn_h);
// 设置按钮的高
myButton.setWidth((int)btn_w);
}
}
没有注释
package com.amaker.ch03.dimen;
import android.app.Activity;
import android.content.res.Resources;
import android.os.Bundle;
import android.widget.Button;
import com.amaker.test.R;
public class TestDimensionActivity extends Activity {
private Button myButton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test_dimen);
myButton = (Button)findViewById(R.id.Button01);
Resources r = getResources();
float btn_h = r.getDimension(R.dimen.btn_height);
float btn_w = r.getDimension(R.dimen.btn_width);
myButton.setHeight((int)btn_h);
myButton.setWidth((int)btn_w);
}
}
3．案例真实，覆盖全面
本书分为三篇，从Android的基础知识讲到Android的项目实战，覆盖了Android应用开发的三大领域：基础开发、互联网应用开发和游戏开发。
致谢
最后衷心地感谢我的父母、家人、朋友、同学和同行的伙伴们。再次感谢我的父母，感谢你们对我的培养和寄予的厚望，感谢你们拖着年迈的身体为我照料那个让人可爱又可恨的女儿。
感谢电子工业出版社的胡辛征老师在写作风格和布局谋篇方面给予的建议和帮助，感谢江立老师耐心细致的编辑、修正。他们的丰富经验和认真负责的态度，使得本书从开始粗糙的初稿变成最后精美的成书。
郭宏志 
2010年3月
目 录
第一篇 基础篇
第1章 Android概述 2
1.1 Android的前世今生 3
1.1.1 Android的产生 3
1.1.2 Android的发展 3
1.2 Android的平台架构及特性 4
1.2.1 Android平台特性 5
1.2.2 Android平台架构 5
1.3 Android Market 7
1.4 Android应用程序组件 8
1.4.1 Activity 9
1.4.2 Service 9
1.4.3 Broadcast Receiver 9
1.4.4 ContentProvider 9
1.4.5 View 10
1.4.6 Intent 10
1.5 Android与Java ME的区别与联系 10
1.5.1 二者的区别 10
1.5.2 二者的联系 10
1.5.3 各自的优势 11
第2章 Android开发基础 12
2.1 Android开发环境的搭建 12
2.1.1 下载Android SDK 13
2.1.2 下载安装JDK 15
2.1.3 下载Eclipse 16
2.1.4 下载安装ADT 16
2.2 Android常用工具的使用 18
2.2.1 创建Android Virtual Devices（AVD） 18
2.2.2 模拟器（Emulator）的使用 20
2.2.3 Android Debug Bridge（ADB）的使用 20
2.2.4 Dalvik Debug Monitor Service（DDMS）的使用 21
2.2.5 Android Asset Packaging Tool（AAPT）的使用 22
2.2.6 DX的使用 22
2.2.7 mksdcard的使用 22
2.3 我的第一个Android应用 22
2.3.1 纯手工创建一个Android应用 22
2.3.2 使用Eclipse创建一个Android应用 25
第二篇 技术篇
第3章 Android中的资源访问 32
3.1 资源简介 33
3.1.1 资源的类型和布局 33
3.1.2 资源文件的使用 33
3.2 使用颜色（color）资源 35
3.2.1 颜色值定义 35
3.2.2 颜色资源XML文件的定义 35
3.2.3 使用颜色资源 36
3.3 使用字符串（string）资源 37
3.3.1 字符串资源XML文件的定义 37
3.3.2 字符串资源XML文件的使用 38
3.4 使用尺寸（dimen）资源 39
3.4.1 Android中支持的尺寸单位 39
3.4.2 尺寸资源XML文件的定义 40
3.4.3 尺寸资源XML文件的使用 40
3.5 使用原始XML资源 42
3.5.1 原始XML资源文件的定义 42
3.5.2 原始XML文件的使用 42
3.6 使用drawables资源 45
3.7 使用布局（layout）资源 47
3.7.1 布局文件的定义 47
3.7.2 布局文件的使用 48
3.8 使用菜单（menu）资源 49
3.8.1 菜单资源文件的定义 50
3.8.2 菜单资源文件的使用 51
第4章 Android用户界面 55
4.1 菜单 55
4.1.1 选项菜单（Option Menu） 56
4.1.2 上下文菜单（Context Menu） 57
4.1.3 子菜单（Sub Menu） 59
4.2 对话框 61
4.3 提示信息（Toast） 64
4.4 事件处理 66
4.4.1 事件处理机制 66
4.4.2 Android中的事件监听器 68
4.4.3 事件处理步骤 69
4.5 布局管理（Layout） 72
4.5.1 线性布局 73
4.5.2 帧布局 75
4.5.3 表格布局 76
4.5.4 相对布局 77
4.5.5 绝对布局 78
4.6 组件（Widget） 79
4.6.1 常用组件 79
4.6.2 自动完成文本框（AutoCompleteTextView） 86
4.6.3 选项卡（Tab） 88
4.6.4 进度条（ProgressBar） 91
4.6.5 日期、时间选择对话框（DataPickerDialog、TimePickerDialog） 95
4.6.6 列表视图（ListView） 97
4.6.7 网格视图（GridView） 99
4.6.8 画廊视图（Gallery） 101
4.6.9 地图视图（MapView） 105
4.6.10 网络视图（WebView） 108
第5章 Android基本程序单元Activity 111
5.1 何谓回调 111
5.2 Activity简介 113
5.2.1 Activity的创建 113
5.2.2 启动另一个Activity 115
5.2.3 Activity之间传递数据 117
5.2.4 启动另一个Activity并返回结果 121
5.3 Activity的生命周期 126
第6章 Android组件之间的信使Intent 130
6.1 Intent对象及其属性 131
6.1.1 Intent的ComponentName属性 131
6.1.2 Intent的Action属性 135
6.1.3 Intent的Data属性 140
6.1.4 Intent的Category属性 141
6.1.5 Intent的Extras属性 142
6.2 系统标准Activity Action应用 144
6.2.1 和打电话相关的标准Activity Action应用 145
6.2.2 访问浏览器和地图 147
6.2.3 发邮件 149
6.3 Intent的实现策略 151
第7章 Android Service组件 159
7.1 Service简介 159
7.1.1 创建一个Service 159
7.1.2 启动和停止Service 160
7.1.3 绑定一个已经存在的Service 161
7.1.4 Service实例演示 161
7.2 远程Service调用 166
7.2.1 创建一个AIDL文件 166
7.2.2 实现AIDL文件生成的Java接口 170
7.2.3 将你的接口暴露给客户端 171
7.2.4 客户端调用 171
第8章 Android广播事件处理 Broadcast Receiver 173
8.1 自己定义Broadcast Receiver来处理广播事件 173
8.2 系统广播事件的使用 176
8.3 Notification和NotificationManager的使用 178
8.3.1 Notification和NotificationManager简介 178
8.3.2 通知实例演示 179
8.4 AlarmManager的使用 186
第9章 Android中的数据存取 190
9.1 Preference 190
9.1.1 Preference简介 190
9.1.2 Preference应用实例——保存临时短信 191
9.2 File 193
9.3 SQLite 195
9.3.1 SQLiteDatabase 195
9.3.2 SQLiteOpenHelper 199
9.3.3 SQLite应用实例——收藏管理 201
第10章 Content Provider 208
10.1 Content Provider简介 208
10.1.1 Content Provider的常用方法 208
10.1.2 ContentResolver 209
10.1.3 URI 209
10.1.4 查询系统ContentProvider内容 210
10.1.5 添加系统ContentProvider内容 211
10.1.6 添加系统ContentProvider图片内容 211
10.2 自定义ContentProvider 212
10.2.1 创建ContentProvider的步骤 212
10.2.2 ContentProvider实例 213
第11章 Android中的多媒体应用 221
11.1 音频及视频播放 221
11.1.1 从源文件中播放 221
11.1.2 从文件系统中播放 222
11.1.3 从网络中播放 222
11.2 迷你音乐播放器 223
11.3 迷你视频播放器 228
11.4 音视频的录制 229
11.5 Camera照相 233
第12章 Android中的图形图像 238
12.1 在Android中访问图片 238
12.1.1 使用图片文件创建Drawable对象 239
12.1.2 使用XML文件定义Drawable属性 240
12.1.3 Bitmap和BitmapFactory 241
12.2 Android中的动画 242
12.2.1 Tween动画 242
12.2.2 Frame动画 251
12.3 动态图形绘制 253
12.3.1 动态图形绘制的基本思路 253
12.3.2 动态图形绘制类简介 256
12.3.3 绘制几何图形 257
12.4 图形特效 261
12.4.1 使用Matrix实现旋转、缩放和平移 261
12.4.2 使用Shader类渲染图形 264
第13章 Android中的互联网应用 268
13.1 通过Socket、ServerSocket进行网络编程 268
13.1.1 Socket、ServerSocket编程模型 268
13.1.2 Socket编程实例 269
13.2 通过URL进行网络编程 271
13.3 通过HTTP进行网络编程 273
13.3.1 使用HttpURLConnection 273
13.3.2 使用Apache HTTP客户端 278
13.4 通过Web Service进行网络编程 280
13.5 直接使用WebView视图组件显示网页 285
13.5.1 使用WebView打开网页 285
13.5.2 使用WebView加载HTML 286
第14章 Android中的GPS应用 287
14.1 LocationManager和LocationProvider简介 287
14.1.1 LocationManager 288
14.1.2 LocationProvider 288
14.2 通过模拟器测试位置服务 289
14.3 获得LocationProvider 292
14.3.1 通过名称获得LocationProvider 292
14.3.2 获得当前可利用的LocationProvider 292
14.3.3 根据Criteria条件获得LocationProvider 292
14.4 定位和跟踪 293
14.4.1 定位 294
14.4.2 跟踪 296
14.5 趋近警告 298
14.6 Geocoder正逆向编解码 300
14.6.1 正向编码 301
14.6.2 反向编码 303
第三篇 应用篇
第15章 Android应用案例——移动警务通 306
15.1 移动警务通需求分析 306
15.2 移动警务通总体设计 307
15.2.1 系统架构 307
15.2.2 技术选型 307
15.2.3 系统功能 308
15.3 移动警务通详细设计 309
15.3.1 系统包及其资源规划 309
15.3.2 Activity界面规划及其程序执行流程 310
15.3.3 系统数据库设计 312
15.4 系统编码实现 313
15.4.1 登录模块Android客户端实现 313
15.4.2 登录模块服务器端实现 320
15.4.3 程序主菜单实现 325
15.4.4 信息查询子菜单实现 326
15.4.5 在逃人员查询模块客户端实现 327
15.4.6 在逃人员查询模块服务器端实现 332
15.4.7 信息采集子菜单实现 338
15.4.8 机动车违章信息采集Android客户端实现 339
15.4.9 机动车违章信息采集服务器端实现 345
15.4.10 文件上传子菜单实现 348
15.4.11 现场照片上传Android客户端实现 349
15.4.12 现场照片上传服务器端实现 360
15.4.13 GPS定位功能子菜单实现 363
15.4.14 GPS定位“我的位置”的实现 364
15.4.15 GPS定位“按坐标查询”的实现 369
15.4.16 GPS定位“按地址查询”的实现 374
第16章 Android应用案例——雷电游戏 378
16.1 Android游戏开发基本框架 378
16.1.1 Android游戏开发基础 378
16.1.2 Android游戏开发基本框架 379
16.2 将Java ME游戏API嫁接到Android 384
16.2.1 Layer类的移植 384
16.2.2 Sprite类的移植 386
16.2.3 TiledLayer类的移植 386
16.2.4 LayerManager类的移植 386
16.3 Android版雷电游戏的实现 387
16.3.1 雷电游戏简介 387
16.3.2 雷电游戏的实现 387
第17章 Android应用案例——备忘录 396
17.1 备忘录数据存储实现 396
17.1.1 数据库表设计 396
17.1.2 备忘录ContentProvider实现 397
17.2 备忘录列表展示 402
17.3 备忘录维护 405
17.4 备忘录定时提醒 412
17.4.1 定义提醒广播接收器 412
17.4.2 显示提醒Activity 413
第18章 Android应用案例——无线点餐系统 417
18.1 无线点餐系统需求分析 417
18.2 无线点餐系统概要设计 417
18.2.1 系统物理架构 418
18.2.2 技术选型 418
18.2.3 系统功能 419
18.3 无线点餐系统详细设计 422
18.3.1 系统包及其资源规划 422
18.3.2 系统数据库设计 423
18.4 系统编码实现 424
18.4.1 登录模块Android客户端实现 424
18.4.2 登录模块服务器端实现 432
18.4.3 程序主菜单实现 437
18.4.4 点餐功能客户端实现 440
18.4.5 点餐功能服务器端实现 450
18.4.6 结算模块Android客户端实现 455
18.4.7 结算模块服务器端实现 458
18.4.8 查台模块Android客户端实现 466
18.4.9 查台模块服务器端实现 470
18.4.10 更新模块Android客户端实现 473
18.4.11 更新模块服务器端实现 477
18.4.12 转台模块Android客户端实现 480
18.4.13 转台模块服务器端实现 482
18.4.14 并台模块Android客户端实现 485
18.4.15 并台模块服务器端实现 488