第1章 android简介 1
1.1 一些背景信息 2
1.1.1 不远的过去 2
1.1.2 未来的前景 3
1.2 对android的误解 3
1.3 开放的移动开发平台 4
1.4 自带的android应用程序 4
1.5 android sdk的特征 5
1.5.1 访问硬件(包括摄像头、gps和加速计) 6
1.5.2 自带的google地图、地理编码和基于位置的服务 6
1.5.3 后台服务 6
1.5.4 sqlite 数据存储和检索数据库 7
1.5.5 共享数据和应用程序间通信 7
1.5.6 使用小组件、live folder和live wallpaper增强主屏幕 7
1.5.7 广泛的媒体支持和2d/3d图形 8
1.5.8 优化的内存和进程管理 8
1.6 开放手机联盟简介 8
1.7 运行android的环境 8
1.8 从事移动开发的原因 9
1.9 从事android开发的原因 9
.1.9.1 推动android普及的因素 10
1.9.2 android的独到之处 10
1.9.3 改变移动开发格局 11
1.10 开发框架简介 11
1.10.1 开发包中的资源 12
1.10.2 理解android软件栈 12
1.10.3 dalvik虚拟机 14
1.10.4 android应用程序架构 14
1.10.5 android库 15
1.11 小结 15
第2章 开始入手 17
2.1 android开发 18
2.1.1 开始前的准备工作 18
2.1.2 创建第一个android应用程序 22
2.1.3 android应用程序的类型 27
2.2 面向移动设备的开发 29
2.2.1 硬件限制带来的设计考虑事项 29
2.2.2 考虑用户环境 32
2.2.3 android开发 33
2.3 to-do list示例 36
2.4 android开发工具 40
2.4.1 android虚拟设备和sdk管理器 41
2.4.2 android模拟器 42
2.4.3 dalvik调试监控服务(ddms) 43
2.4.4 android调试桥(adb) 43
2.5 小结 44
第3章 创建应用程序和活动 45
3.1 android应用程序的组成部分 46
3.2 应用程序清单简介 47
3.3 使用清单编辑器 52
3.4 android应用程序生命周期 53
3.5 理解应用程序的优先级和进程状态 54
3.6 分离资源 55
3.6.1 创建资源 55
3.6.2 使用资源 62
3.6.3 to-do list资源示例 65
3.6.4 为不同的语言和硬件创建资源 66
3.6.5 运行时配置更改 67
3.7 application类简介 69
3.7.1 扩展和使用application类 69
3.7.2 重写应用程序的生命周期事件 70
3.8 深入探讨android活动 71
3.8.1 创建一个活动 71
3.8.2 活动生命周期 73
3.8.3 android活动类 78
3.9 小结 78
第4章 创建用户界面 79
4.1 android ui基本设计 80
4.2 视图简介 80
4.2.1 使用视图创建活动的用户界面 81
4.2.2 android widget工具箱 82
4.3 布局简介 83
4.3.1 使用布局 83
4.3.2 优化布局 85
4.4 创建新视图 85
4.4.1 修改现有的视图 86
4.4.2 创建复合控件 90
4.4.3 创建定制的视图 93
4.4.4 使用定制的控件 103
4.5 drawable资源 104
4.5.1 形状、颜色和渐变 104
4.5.2 复合drawable 107
4.5.3 ninepatch drawable 110
4.6 分辨率和像素密度无关性 110
4.6.1 资源框架和分辨率无关性 111
4.6.2 分辨率无关性的最佳实践 112
4.6.3 反复测试 114
4.7 创建和使用菜单 115
4.7.1 android菜单系统简介 115
4.7.2 定义活动的菜单 117
4.7.3 菜单项选项 118
4.7.4 动态更新菜单项 119
4.7.5 处理菜单选择 120
4.7.6 子菜单和上下文菜单 120
4.7.7 使用xml定义菜单 122
4.7.8 to-do list示例续 123
4.8 小结 128
第5章 意图、广播接收器、adapter和internet 131
5.1 意图简介 132
5.1.1 使用意图来启动活动 132
5.1.2 使用意图过滤器来为隐式意图提供服务 138
5.1.3 使用意图过滤器作为插件和扩展 146
5.1.4 linkify简介 148
5.1.5 使用意图来广播事件 151
5.2 待处理意图简介 155
5.3 adapter简介 156
5.2.1 部分本地adapter简介 156
5.2.2 定制arrayadapter 156
5.2.3 使用adapter绑定数据 157
5.4 使用internet资源 162
5.4.1 连接到internet资源 163
5.4.2 使用internet资源 164
5.5 对话框简介 164
5.5.1 dialog类简介 164
5.5.2 将活动用作对话框 166
5.5.3 管理和显示对话框 167
5.6 创建一个地震查看器 168
5.7 小结 176
第6章 文件、保存状态和首选项 179
6.1 保存简单的应用程序数据 180
6.2 创建并保存首选项 180
6.3 检索共享首选项 181
6.4 为地震查看器创建一个设置活动 181
6.5 首选项活动和首选项框架概述 189
6.5.1 在xml中定义一个首选项屏幕布局 190
6.5.2 首选项活动简介 192
6.5.3 查找并使用首选项屏幕共享首选项 193
6.5.4 共享首选项变更监听程序简介 193
6.6 为地震查看器创建一个标准的首选项活动 194
6.7 保存活动状态 195
6.7.1 保存并还原实例状态 195
6.7.2 保存to-do list活动状态 196
6.8 保存和加载文件 198
6.9 将静态文件作为资源添加 199
6.10 文件管理工具 200
6.11 小结 200
第7章 数据库和内容提供器 201
7.1 android数据库简介 201
7.1.1 sqlite数据库简介 202
7.1.2 内容提供器简介 202
7.2 sqlite简介 202
7.3 游标和内容值 203
7.4 使用sqlite数据库 203
7.4.1 使用sqliteopenhelper 206
7.4.2 在不使用sqlitehelper的情况下打开和创建数据库 207
7.4.3 android数据库设计注意事项 207
7.4.4 查询数据库 207
7.4.5 从cursor中提取结果 208
7.4.6 添加、更新和删除行 209
7.4.7 保存to-do list 210
7.5 创建一个新的内容提供器 216
7.5.1 提供对数据源的访问 217
7.5.2 注册提供器 219
7.6 使用内容提供器 219
7.6.1 内容解析器简介 219
7.6.2 查询内容 219
7.6.3 添加、更新和删除内容 220
7.6.4 在内容提供器中访问文件 221
7.7 创建和使用地震内容提供器 222
7.7.1 创建内容提供器 222
7.7.2 使用提供器 227
7.8 本地android内容提供器 229
7.8.1 使用媒体库提供器 230
7.8.2 使用联系人提供器 231
7.9 小结 235
第8章 地图、地理编码和基于位置的服务 237
8.1 使用基于位置的服务 238
8.2 配置模拟器来测试基于位置的服务 238
8.3 更新模拟位置提供器中的位置 238
8.4 选择一个位置提供器 239
8.4.1 查找可用的提供器 239
8.4.2 根据标准查找位置提供器 240
8.5 确定自己所在的位置 241
8.5.1 “where am i”示例 241
8.5.2 追踪移动 244
8.5.3 更新“where am i”示例中的位置 245
8.6 使用邻近提醒 247
8.7 使用地理编码器 248
8.7.1 反向地理编码 249
8.7.2 前向地理编码 249
8.7.3 对“where am i”示例进行地理编码 251
8.8 创建基于地图的活动 252
8.8.1 mapview和mapactivity简介 252
8.8.2 获得地图的api键 253
8.8.3 创建一个基于地图的活动 254
8.8.4 配置和使用mapview 255
8.8.5 使用mapcontroller 256
8.8.6 对“where am i”示例使用地图 256
8.8.7 创建和使用覆盖(overlay) 260
8.8.8 mylocationoverlay简介 267
8.8.9 itemizedoverlay和overlayitem简介 267
8.8.10 将视图固定到地图和地图的某个位置上 269
8.9 对earthquake示例添加地图功能 271
8.10 小结 276
第9章 后台工作 277
9.1 服务简介 278
9.1.1 创建和控制服务 279
9.1.2 将活动和服务绑定 289
9.1.3 后台服务的优先级 291
9.2 使用后台线程 292
9.2.1 使用asynctask运行异步任务 292
9.2.2 使用asynctask将earthquake service移动到后台线程 294
9.2.3 手动创建线程和gui线程同步 295
9.3 创建一个toast 297
9.3.1 定制toast 297
9.3.2 在工作线程中使用toast 299
9.4 通知简介 299
9.4.1 通知管理器简介 300
9.4.2 创建通知 300
9.4.3 触发通知 304
9.4.4 向地震监控器中添加通知 304
9.4.5 高级通知技术 307
9.4.6 持续的和连续的通知 310
9.5 使用警报 310
9.5.1 设置重复警报 312
9.5.2 使用重复警报更新earthquake 313
9.6 小结 315
第10章 个性化手机屏幕 317
10.1 主屏幕小组件简介 318
10.2 创建app widgets 318
10.2.1 创建小组件布局 319
10.2.2 定义小组件设置 321
10.2.3 创建小组件意图接收器并将其添加到应用程序清单中 321
10.2.4 remote views(远程视图)和app widget manager简介 322
10.2.5 刷新小组件 327
10.2.6 创建并使用小组件配置活动 329
10.3 创建地震小组件 330
10.4 live folder简介 335
10.4.1 创建live folder 336
10.4.2 创建earthquake live folder 338
10.5 将搜索添加到应用程序以及快速搜索框中 340
10.5.1 将搜索添加到应用程序中 341
10.5.2 在快速搜索框中显示搜索结果 344
10.5.3 将搜索添加到earthquake示例中 344
10.6 创建live wallpaper 348
10.6.1 创建live wallpaper定义资源 348
10.6.2 创建wallpaper服务 348
10.6.3 创建wallpaper服务引擎 349
10.7 小结 350
第11章 音频、视频以及摄像头的使用 351
11.1 播放音频和视频 352
11.1.1 media player简介 352
11.1.2 准备音频播放 353
11.1.3 准备视频播放 354
11.1.4 控制播放 357
11.1.5 管理媒体播放输出 358
11.2 录制音频和视频 358
11.2.1 使用意图录制视频 358
11.2.2 使用媒体刻录机 359
11.3 使用摄像头并拍摄照片 362
11.3.1 使用意图拍摄照片 362
11.3.2 控制摄像头并拍摄照片 364
11.3.3 读取并写入jpeg exif图像详细信息 368
11.4 向媒体库中添加新媒体 369
11.4.1 使用媒体扫描仪 369
11.4.2 向媒体库中插入媒体 370
11.5 原始音频操作 370
11.5.1 录制带有音频记录的声音 370
11.5.2 使用音频轨道播放声音 372
11.6 语音识别 373
11.7 小结 374
第12章 电话服务和sms 377
12.1 电话服务 378
12.1.1 启动拨号程序以初始化电话呼叫 378
12.1.2 替换本机拨号程序 378
12.1.3 访问电话和网络属性以及状态 379
12.1.4 监视电话状态、电话活动以及数据连接中的变化 382
12.2 sms和mms简介 386
12.2.1 在应用程序中使用sms和mms 386
12.2.2 使用意图和本机客户端从应用程序中发送sms和mms 387
12.2.3 手动发送sms消息 388
12.2.4 监听传入的sms消息 391
12.2.5 紧急响应程序sms示例 393
12.2.6 自动化紧急响应程序 402
12.3 小结 410
第13章 蓝牙、网络和wi-fi 411
13.1 使用蓝牙 411
13.1.1 访问本地蓝牙设备适配器 412
13.1.2 管理蓝牙属性和状态 413
13.1.3 可发现性和远程设备发现 415
13.1.4 蓝牙通信 418
13.1.5 蓝牙数据传输示例 424
13.2 管理网络连接 433
13.2.1 connectivity manager(连接管理器)简介 433
13.2.2 读取用户首选项用于后台数据传输 434
13.2.3 监视网络详细信息 435
13.2.4 查找并配置网络首选项以及控制硬件信号 435
13.2.5 监视网络连接 436
13.3 管理wi-fi 436
13.3.1 监视wi-fi连接 437
13.3.2 监视活动连接详细信息 437
13.3.3 扫描热点 438
13.3.4 管理wi-fi配置 438
13.3.5 创建wi-fi网络配置 439
13.4 小结 439
第14章 传感器 441
14.1 使用传感器和传感器管理器 442
14.2 解释传感器数值 445
14.3 使用指南针、加速计和方向传感器 445
14.3.1 加速计简介 446
14.3.2 检测加速度变化 447
14.3.3 创建一个g-forceometer(重力测力计) 448
14.3.4 确定设备方向 451
14.3.5 创建一个指南针和人工地平仪 454
14.4 控制设备振动 458
14.5 小结 459
第15章 android高级开发 461
15.1 android的安全性 462
15.1.1 linux内核安全 462
15.1.2 权限简介 462
15.1.3 声明和实施权限 463
15.1.4 为广播意图实施权限 464
15.2 使用wake lock 464
15.3 android text to speech简介 465
15.4 使用aidl来支持服务的ipc 467
15.4.1 实现aidl接口 467
15.4.2 将类对象作为parcelable传递 468
15.4.3 实现和提供ipc接口 470
15.5 使用internet服务 472
15.6 构建内容丰富的用户界面 473
15.6.1 使用动画 473
15.6.2 高级画布绘图 484
15.6.3 surfaceview简介 499
15.6.4 创建交互式控件 502
15.7 小结 508
· · · · · · (
收起)