《Android开发秘籍(第2版)》秉承“一个清晰可用的范例,胜过千言的文档”的原则,以一百多个范例为骨架,将知识、技巧和理念融入其中,从零开始,介绍了Android移动开发的方方面面。
目录
- 第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:使用VideoView 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 Viewer 324
- 技巧143:使用TraceView 326
- 技巧144:使用lint 327
- 16.4 Android系统调试工具 329
- 技巧145:设置GDB调试 331
- 附录A 使用OpenIntents Sensor Simulator 333
- 附录B 使用兼容包 337
- 附录C 使用持续集成系统 344
- 附录D Android操作系统发布版本一览 346