第1章 Android概览 1
1.1 Android的演化 1
1.2 Android的两面性 2
1.3 运行Android的设备 2
1.3.1 HTC系列机型 4
1.3.2 摩托罗拉系列机型 5
1.3.3 三星系列机型 5
1.3.4 平板电脑 5
1.3.5 其他设备 6
1.4 Android设备间的硬件差异 7
1.4.1 屏幕 7
1.4.2 用户输入法 7
1.4.3 传感器 8
1.5 Android的特性 9
1.5.1 多线程应用微件 9
1.5.2 触摸、手势和多点触摸 9
1.5.3 硬键盘和软键盘 10
1.6 Android开发 10
1.6.1 良好的应用设计 10
1.6.2 保持向前兼容 10
1.6.3 确保健壮性 11
1.7 软件开发工具包(SDK) 11
1.7.1 安装和升级 11
1.7.2 软件特性和API级别 12
1.7.3 用模拟器或Android设备进行调试 13
1.7.4 使用Android调试桥 14
1.7.5 签名和发布 15
1.8 Google Play 15
1.8.1 最终用户许可协议 15
1.8.2 提升应用的曝光度 16
1.8.3 让应用脱颖而出 16
1.8.4 为应用收费 16
1.8.5 管理评价和更新 18
1.8.6 Google Play以外的其他选择 18
第2章 应用程序基础:Activity和Intent 19
2.1 Android应用程序概览 19
技巧1:创建项目和Activity 20
2.1.1 项目目录结构及自动生成的内容 22
2.1.2 Android包和manifest文件 24
技巧2:重命名应用程序的某些部分 25
技巧3:使用库项目 26
2.2 Activity的生命周期 27
技巧4:使用Activity生命周期函数 28
技巧5:强制采用单任务模式 30
技巧6:强制规定屏幕方向 30
技巧7:保存和恢复Activity信息 31
技巧8:使用Fragment 32
2.3 多个Activity 33
技巧9:使用按钮和文本视图 33
技巧10:通过事件启动另外一个Activity 34
技巧11:通过使用语音转文本功能启动一个Activity 37
技巧12:实现选择列表 39
技巧13:使用隐式Intent创建Activity 40
技巧14:在Activity间传递基本数据类型 41
第3章 线程、服务、接收器和警报 44
3.1 线程 44
技巧15:启动一个辅助线程 44
技巧16:创建实现Runnable接口的Activity 47
技巧17:设置线程的优先级 48
技巧18:取消线程 49
技巧19:在两个应用程序间共享线程 49
3.2 线程间的消息机制:Handler 50
技巧20:从主线程调度Runnable型的任务 50
技巧21:使用倒数计时器 52
技巧22:处理耗时的初始化工作 53
3.3 警报 54
技巧23:利用Toast在屏幕上显示一条简单的信息 54
技巧24:使用AlertDialog对话框 55
技巧25:在状态栏中显示通知 56
3.4 服务 60
技巧26:创建自足式服务 61
技巧27:添加唤醒锁 64
技巧28:使用前台服务 66
技巧29:使用IntentService 68
3.5 广播接收器 70
技巧30:当按下拍照按钮时启动一个服务 71
3.6 应用微件 72
技巧31:创建应用微件 73
第4章 高级线程技术 75
4.1 装载器 75
技巧32:使用CursorLoader 75
4.2 AsyncTask 77
技巧33:使用AsyncTask 77
4.3 Android进程间通信 79
技巧34:实现远程过程调用 79
技巧35:使用Messenger 83
技巧36:使用ResultReceiver 89
第5章 用户界面布局 91
5.1 资源目录和常规属性 91
技巧37:指定替代资源 93
5.2 View和ViewGroup 94
技巧38:用Eclipse编辑器生成布局 94
技巧39:控制UI元素的宽度和高度 97
技巧40:设置相对布局和布局ID 99
技巧41:通过编程声明布局 101
技巧42:通过独立线程更新布局 102
5.3 文本操作 104
技巧43:设置和改变文本属性 105
技巧44:提供文本输入 107
技巧45:创建表单 108
5.4 其他微件:从按钮到拖动条 109
技巧46:在表格布局中使用图像按钮 109
技巧47:使用复选框和开关按钮 112
技巧48:使用单选按钮 115
技巧49:创建下拉菜单 115
技巧50:使用进度条 117
技巧51:使用拖动条 119
第6章 用户界面事件 121
6.1 事件处理器和事件监听器 121
技巧52:截取物理按键事件 121
技巧53:构建菜单 124
技巧54:在XML文件中定义菜单 128
技巧55:创建操作栏 129
技巧56:使用ActionBarSherlock 132
技巧57:使用搜索键 134
技巧58:响应触摸事件 135
技巧59:监听滑动手势 137
技巧60:使用多点触控 138
6.2 高级用户界面库 141
技巧61:使用手势 141
技巧62:绘制3D图像 144
第7章 高级用户界面技术 148
7.1 Android自定义视图 148
技巧63:自定义按钮 148
7.2 Android动画 153
技巧64:创建动画 154
技巧65:使用属性动画 157
7.3 辅助功能 159
技巧66:使用辅助功能特性 159
7.4 Fragment 161
技巧67:同时显示多个Fragment 161
技巧68:使用对话框Fragment 165
第8章 多媒体技术 167
8.1 图像 169
技巧69:装载和显示一幅可供操作的图像 170
8.2 音频 174
技巧70:选择和播放音频文件 174
技巧71:录制音频文件 177
技巧72:操作原始音频 178
技巧73:有效利用声音资源 182
技巧74:添加媒体并更新路径 183
8.3 视频 184
技巧75:使用VideoVi ew 184
技巧76:使用MediaPlayer播放视频 185
第9章 硬件接口 187
9.1 摄像头 187
技巧77:自定义摄像头 187
9.2 其他传感器 192
技巧78:获取设备的旋转姿态 192
技巧79:使用温度传感器和光传感器 195
9.3 电话 196
技巧80:使用电话管理器 196
技巧81:监听电话状态 198
技巧82:拨叫一个号码 200
9.4 蓝牙 200
技巧83:开启蓝牙 201
技巧84:发现蓝牙设备 201
技巧85:与已绑定的蓝牙设备配对 202
技巧86:打开蓝牙套接字 202
技巧87:使用设备振动功能 204
技巧88:访问无线网络 205
9.5 近场通信(NFC) 206
技巧89:读取NFC标签 207
技巧90:写入NFC标签 208
9.6 通用串行总线(USB) 210
第10章 网络 212
10.1 响应网络状态 212
技巧91:检查网络连接 212
技巧92:接收连接变化信息 214
10.2 使用短消息 215
技巧93:收到短消息后自动回复 217
10.3 使用Web内容 222
技巧94:自定义Web浏览器 223
技巧95:使用HTTP GET请求 223
技巧96:使用HTTP POST请求 227
技巧97:使用WebView 227
技巧98:解析JSON 229
技巧99:解析XML 231
10.4 社交网络 232
技巧100:读取所有者设定档 233
技巧101:与Twitter集成 233
技巧102:与Facebook集成 240
第11章 数据存储方法 242
11.1 shared preference 242
技巧103:创建和检索shared preference 243
技巧104:使用preference框架 243
技巧105:基于存储的数据改变用户界面 245
技巧106:添加最终用户许可协议 248
11.2 SQLite数据库 250
技巧107:创建一个独立的数据库包 251
技巧108:使用独立的数据库包 253
技巧109:创建个人日记 256
11.3 内容提供器 259
技巧110:创建自定义的内容提供器 260
11.4 文件的保存和载入 264
技巧111:使用AsyncTask进行异步处理 264
第12章 基于位置的服务 267
12.1 位置服务基础 267
技巧112:检索最近保存的位置 269
技巧113:在位置改变时更新信息 269
技巧114:列出所有可用的提供器 271
技巧115:将位置转化为地址(逆向地理编码) 273
技巧116:将地址转化为位置(地理编码) 274
12.2 使用Google地图 276
技巧117:向应用程序中添加Google地图 278
技巧118:为地图添加标记 280
技巧119:向地图上添加视图 283
技巧120:设置临近警告 285
12.3 使用Little Fluffy位置库 286
技巧121:使用Little Fluffy位置库添加通知 287
第13章 应用内计费 290
Google Play应用内计费 290
技巧122:安装Google的应用内计费服务 291
技巧123:为Activity添加应用内计费机制 292
技巧124:列出应用内可购买的项目清单 293
第14章 推送消息 295
14.1 Google云消息设置 295
技巧125:准备Google云消息 295
14.2 发送和接收推送信息 297
技巧126:准备manifest 297
14.3 接收消息 298
技巧127:添加BroadcastReceiver类 299
技巧128:添加IntentService类 299
技巧129:注册设备 301
14.4 发送消息 301
技巧130:发送文本消息 302
技巧131:通过AsyncTask发送消息 303
第15章 原生Android开发 305
Android原生组件 305
技巧132:使用Java原生接口 306
技巧133:使用NativeActivity 308
第16章 测试和调试 313
16.1 Android测试项目 313
技巧134:创建测试项目 313
技巧 135:在Android上加入单元测试 316
技巧136:使用Robotium 316
16.2 Eclipse内建测试工具 317
技巧137:指定运行配置 317
技巧138:使用DDMS 318
技巧139:借助断点进行调试 320
16.3 Android SDK调试工具 322
技巧140:开启和终止Android调试桥 322
技巧141:使用LogCat 322
技巧142:使用Hierachy Viiewer 324
技巧143:使用TraceVi ew 326
技巧144:使用lint 327
16.4 Android系统调试工具 329
技巧145:设置GDB调试 331
附录A使用Openlntents Sensor Simulator 333
附录B使用兼容包 337
附录C使用持续集成系统 344
附录D Android操作系统发布版本一览 346