0%

基本信息

名称: Android移动应用开发(第3版)卷1:基础篇
作者信息: 作者: 达西 (Lauren Darcey) [ 中文 pdf ]

简单介绍

依托Android最新的主流平台为Android 4.0,面向最新的SDK和相关工具,同时还涵盖了老版平台中的一些常用功能,以帮助开发人员适应目前市面上所有的主流设备。《Android移动应用开发(第3版)卷Ⅰ:基础篇》涵盖了作者数年来在移动开发领域所积累的经验,以及成功进行移动项目开发所需的全部概念和实用技术,包括移动开发过程与传统软件开发的区别,还包括帮助你节约宝贵时间和规避隐患的技巧。不管你的项目有多大规模,《Android移动应用开发(第3版)卷Ⅰ:基础篇》都能为你提供帮助。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
第一部分 Android平台概览
第1章 Android简介
1.1 移动软件开发简史
1.1.1 遥想当年
1.1.2 “砖头”
1.1.3 无线应用协议(WAP)
1.1.4 专用移动平台
1.2 开放手机联盟(OHA)
1.2.1 无线Google
1.2.2 成立开放手机联盟
1.2.3 制造商:设计Android手机
1.2.4 移动运营商:传播Android体验
1.2.5 应用程序推动的设备销售:开发Android应用程序
1.2.6 充分发挥Android的优势
1.2.7 Android市场:我们的定位
1.3 Android平台的不同之处
1.3.1 Android:下一代平台
1.3.2 免费开放源代码
1.3.3 熟悉和廉价的开发工具
1.3.4 合理的开发人员学习曲线
1.3.5 强大的应用程序开发支持
1.3.6 丰富、安全的应用集成
1.3.7 无障碍发布
1.3.8 为应用程序提供的“自由市场”
1.3.9 新生并逐渐成长的平台
1.4 Android平台
1.4.1 Android的基本体系结构
1.4.2 安全与许可权限
1.4.3 开发Android应用程序
小结
参考资料和更多信息
第2章 搭建你的Android开发环境
2.1 配置你的开发环境
2.1.1 配置操作系统以适应设备调试
2.1.2 配置Android硬件以供调试
2.1.3 升级Android SDK
2.1.4 Android软件开发包的问题
2.2 探索Android SDK
2.2.1 理解Android SDK许可协议
2.2.2 阅读Android SDK文档
2.2.3 探索Android应用程序核心框架
2.2.4 了解Android核心工具
2.2.5 探索Android示例应用程序
小结
参考资料和更多信息
第3章 编写第一个Android应用程序
3.1 测试你的开发环境
3.1.1 在Eclipse工程中导入Snake应用程序
3.1.2 为Snake工程创建Android虚拟设备(AVD)
3.1.3 为Snake工程创建运行配置参数
3.1.4 在Android模拟器中运行Snake应用程序
3.2 构建你的第一个Android应用程序
3.2.1 创建和配置新的Android工程
3.2.2 Android应用程序的核心文件和目录
3.2.3 为新工程创建Android虚拟设备
3.2.4 为工程配置运行参数
3.2.5 在模拟器中运行Android应用程序
3.2.6 在模拟器中调试Android应用程序
3.2.7 为Android应用程序添加日志记录
3.2.8 为应用程序添加媒体支持
3.2.9 为应用程序添加位置服务(LBS)
3.2.10 在硬件上调试应用程序
小结
参考资料和更多信息
第4章 掌握Android开发工具
4.1 使用Android文档
4.2 使用Android模拟器
4.3 使用LogCat查看应用程序日志数据
4.4 使用DDMS调试应用程序
4.5 使用Android调试桥(ADB)
4.6 使用资源编辑器和UI设计器
4.7 使用Android层级浏览器
4.7.1 运行层级浏览器
4.7.2 使用布局浏览模式
4.7.3 优化用户界面
4.7.4 使用精细像素模式
4.8 使用九格拉伸图像
4.9 使用其他Android工具
小结
参考资料和更多信息
第二部分 Android应用程序设计基础
第5章 剖析Android应用程序
5.1 掌握重要的Android术语
5.2 使用应用程序Context
5.2.1 获取应用程序Context
5.2.2 使用应用程序Context
5.2.3 获取应用程序资源
5.2.4 访问应用程序首选项
5.2.5 访问应用程序文件和目录
5.2.6 获取应用程序组件
5.3 使用Activity执行应用程序任务
5.3.1 Android Activity的生命周期
5.3.2 使用Activity回调管理应用程序状态和资源
5.4 使用Fragment组织Activity组件
5.5 使用Intent管理Activity跳转
5.5.1 使用Intent实现Activity之间的跳转
5.5.2 使用Activity和Intent组织应用程序导航
5.6 使用服务
5.7 接收和广播Intent
小结
参考资料和更多信息
第6章 使用Android Manifest文件定义应用程序
6.1 使用Android Manifest文件配置Android应用程序
6.2 管理你的应用程序标识
6.2.1 为你的应用程序指定版本
6.2.2 给你的应用程序加上名称和图标
6.3 强制指定应用程序的系统需求
6.3.1 针对特定SDK版本
6.3.2 强制指定应用程序平台需求
6.3.3 使用外部库
6.3.4 其他应用程序配置及筛选器
6.4 在Android Manifest文件中注册Activity
6.4.1 使用Intent过滤器为应用程序指派主入口点Activity
6.4.2 配置其他Intent过滤器
6.4.3 注册其他应用程序组件
6.5 使用许可权限
6.5.1 注册应用程序所需的许可权限
6.5.2 注册应用程序强制要求的许可权限
6.6 探索Manifest文件的其他设置
小结
参考资料和更多信息
第7章 管理应用程序资源
7.1 什么是资源
7.1.1 存储应用程序资源
7.1.2 资源的类型
7.1.3 使用程序访问资源
7.2 使用Eclipse设置简单资源
7.3 使用不同种类的资源
7.3.1 使用String(字符串)资源
7.3.2 使用格式化的字符串资源
7.3.3 使用字符串数组
7.3.4 使用Boolean(布尔)资源
7.3.5 使用Integer(整型)资源
7.3.6 使用颜色
7.3.7 使用尺寸
7.3.8 使用简单Drawable资源
7.3.9 使用图像
7.3.10 使用动画
7.3.11 使用菜单
7.3.12 使用XML文件
7.3.13 使用原始文件
7.3.14 资源引用
7.3.15 使用布局(Layout)
7.4 引用系统资源
小结
参考资料和更多信息
第三部分 Android用户界面设计精髓
第8章 探索用户界面屏幕元素
8.1 Android视图和布局简介
8.1.1 Android视图简介
8.1.2 Android控件简介
8.1.3 Android布局简介
8.2 使用TextView显示文本
8.2.1 配置布局和尺寸
8.2.2 在文本中创建上下文链接
8.3 使用EditText获取用户数据
8.3.1 使用EditText控件获取用户输入文本
8.3.2 使用输入过滤器约束用户输入
8.4 使用自动补全辅助用户
8.5 使用Spinner控件为用户提供可选输入
8.6 使用按钮、多选框和单选组完成简单的用户选择
8.6.1 使用基本按钮
8.6.2 使用BheckBox和ToggleButton控件
8.6.3 使用RadioGroup和Radio Button
8.7 获取用户输入的日期和时间
8.8 使用指示器向用户显示数据
8.8.1 使用ProgressBar指示进度
8.8.2 使用SeekBar调整进度
8.8.3 使用RatingBar显示评分数据
8.8.4 使用Chronometer显示时间推移
8.8.5 显示时间
小结
参考资料和更多信息
第9章 使用布局设计用户界面
9.1 创建Android用户界面
9.1.1 使用XML资源创建布局
9.1.2 使用代码创建布局
9.2 组织用户界面
9.2.1 为布局设计使用ViewGroup子类
9.2.2 将ViewGroup子类作为视图容器
9.3 使用内建的布局类
9.3.1 使用FrameLayout
9.3.2 使用LinearLayout
9.3.3 使用RelativeLayout
9.3.4 使用TableLayout
9.3.5 使用GridLayout
9.3.6 在屏幕上使用多布局
9.4 使用容器控件类
9.4.1 使用数据驱动容器
9.4.2 使用标签组织视图
9.4.3 添加滚动支持
9.4.4 探索其他视图容器
小结
参考资料和更多信息
第10章 使用Fragment
10.1 理解Fragment
10.1.1 理解Fragment生命周期
10.1.2 使用特化的Fragment
10.1.3 设计基于Fragment的应用程序
10.2 使用Android支持包
10.2.1 为旧版应用程序添加Android Fragment支持
10.2.2 在新应用程序中针对旧版平台使用Fragment
10.2.3 在项目中链接Android支持包
小结
参考资料和更多信息
第11章 使用对话框
11.1 选择一种方式实现对话框
11.2 探索不同类型的对话框
11.3 使用对话框:以前的方法
11.4 使用对话框:Fragment方法
小结
参考资料和更多信息
第四部分 Android应用程序设计精髓
第12章 使用Android首选项
12.1 使用应用程序首选项
12.1.1 正确地使用首选项
12.1.2 存储不同类型的首选项值
12.1.3 创建私有和共享首选项
12.1.4 创建可供多个Activity使用的共享首选项
12.1.5 搜索和读取首选项
12.1.6 新增、修改和删除首选项
12.1.7 处理首选项变更
12.1.8 使用Android文件系统查找首选项数据
12.2 创建可管理的用户首选项
12.2.1 创建首选项资源文件
12.2.2 使用PreferenceActivity类
小结
参考资料和更多信息
第13章 使用文件和目录
13.1 使用设备应用程序数据
13.2 练习良好的文件管理
13.3 理解Android文件许可权限
13.4 使用文件和目录
13.4.1 探索Android应用程序目录
13.4.2 使用Android文件系统操作其他目录和文件
小结
参考资料和更多信息
第14章 使用内容提供器
14.1 探索Android内容提供器
14.1.1 使用MediaStore内容提供器
14.1.2 使用CallLog内容提供器
14.1.3 使用浏览器(Browser)内容提供器
14.1.4 使用CalenderContract内容提供器
14.1.5 使用UserDictionary(用户词典)内容提供器
14.1.6 使用VoicemailContract内容提供器
14.1.7 使用Settings内容提供器
14.1.8 使用联系簿(Contacts)内容提供器
14.2 修改内容提供器的数据
14.2.1 添加记录
14.2.2 修改记录
14.2.3 删除记录
14.3 使用第三方内容提供器
小结
参考资料和更多信息
第15章 设计高兼容性应用程序
15.1 最大化应用程序兼容性
15.2 为兼容性设计用户界面
15.2.1 使用Fragment
15.2.2 使用Android支持包
15.2.3 支持特定屏幕类型
15.2.4 使用九格拉伸图像
15.2.5 使用Working Square原理
15.3 提供应用程序替代资源
15.3.1 理解资源的解析(Resolve)方式
15.3.2 使用替代资源标识符
15.3.3 提供用于不同屏幕方向的资源
15.3.4 在程序中使用替代资源
15.3.5 高效地组织应用程序资源
15.4 面向平板电脑、电视和其他新设备
15.4.1 面向平板设备
15.4.2 面向Google电视设备
小结
参考资料和更多信息
第五部分 对外发布你的Android应用程序
第16章 移动软件开发过程
16.1 移动开发过程概览
16.2 选择一种软件开发方法
16.2.1 理解“瀑布模型”的危险
16.2.2 认识迭代式开发的价值
16.3 整合应用程序需求
16.3.1 确定工程需求
16.3.2 为移动应用程序开发用例
16.3.3 吸纳第三方需求
16.3.4 管理设备数据库
16.4 项目风险评估
16.4.1 确定目标设备
16.4.2 获取目标设备
16.4.3 确定应用程序需求的可行性
16.4.4 理解质量保障的风险
16.5 编写基本项目文档
16.5.1 为质量保障制定测试计划
16.5.2 提供第三方所需的文档
16.5.3 提供维护和移植所需的文档
16.6 使用配置管理系统
16.6.1 选择一个源代码控制系统
16.6.2 实现一个可用的版本管理系统
16.7 设计移动应用程序
16.7.1 认识移动设备的局限
16.7.2 移动应用程序体系结构探索
16.7.3 可扩展和维护设计
16.7.4 应用程序交互设计
16.8 开发移动应用程序
16.9 测试移动应用程序
16.1 发布移动应用程序
16.11 支持和维护移动应用程序
16.11.1 跟踪和定位用户产生的“崩溃”报告
16.11.2 测试固件升级
16.11.3 维护适当的应用程序文档
16.11.4 管理服务器的动态更改
16.11.5 确定低风险移植机会
小结
参考资料和更多信息
第17章 设计和开发“防弹”Android应用程序
17.1 “防弹”移动应用程序设计最佳实践
17.1.1 满足移动用户的需求
17.1.2 为移动设备设计用户界面
17.1.3 设计稳定、灵敏的移动应用程序
17.1.4 设计安全的移动应用程序
17.1.5 在设计移动应用程序时考虑利益的最大化
17.1.6 在Android应用程序设计时使用第三方标准
17.1.7 设计便于维护和升级的移动应用程序
17.1.8 在应用程序设计中使用Andriod工具
17.1.9 避免设计时的愚蠢错误
17.2 “防弹”移动应用程序开发最佳实践
17.2.1 设计有效的移动开发过程
17.2.2 提早和经常地测试应用程序可行性
17.2.3 使用代码标准、代码检查和单元测试以提高代码质量
17.2.4 处理某单一设备的缺陷
17.2.5 在应用程序开发中使用Android工具
17.2.6 避免开发时的愚蠢错误
小结
参考资料和更多信息
第18章 测试Android应用程序
18.1 设计一个应用程序漏洞跟踪系统
18.2 管理测试环境
18.3 尽量全面地进行测试
18.4 在应用程序测试中使用Android工具
18.5 避免测试时的愚蠢错误
小结
参考资料和更多信息
第19章 发布你的Android应用程序
19.1 选择合适的发布模式
19.1.1 保护你的知识产权
19.1.2 向用户收费
19.2 为发布而打包你的应用程序
19.2.1 准备封装你的代码
19.2.2 为你的应用程序打包并签名
19.2.3 测试软件包的发布版本
19.2.4 发布你的应用程序
19.3 在Android Market上发布你的应用程序
19.3.1 在Android Market上注册一个开发人员账号
19.3.2 将你的应用程序上传至Android Market
19.3.3 上传应用程序市场资源
19.3.4 配置应用程序详情页面
19.3.5 配置应用程序发布选项
19.3.6 配置应用程序联系信息和知情通知
19.3.7 将你的应用程序发布至Android Market
19.3.8 在Android Market上管理你的应用程序
19.4 通过其他途径发布应用程序
19.5 通过自主渠道发布应用程序
小结
参考资料和更多信息
第六部分 附录
附录A Android模拟器快速入门
A.1 模拟器的目的:虚拟现实
A.2 使用Android虚拟设备(AVD)
A.2.1 使用Android SDK和AVD管理器
A.2.2 创建AVD
A.3 使用指定AVD启动模拟器
A.3.1 维持模拟器高效运行
A.3.2 配置模拟器启动项
A.3.3 启动模拟器运行应用程序
A.3.4 从Android SDK和AVD管理器中启动模拟器
A.4 配置模拟器的GPS位置信息
A.5 在两个模拟器实例之间拨打电话
A.6 在两个模拟器实例之间发送消息
A.7 通过控制台与模拟器交互
A.7.1 使用控制台模拟来电
A.7.2 使用控制台模拟短消息
A.7.3 使用控制台发送GPS坐标
A.7.4 使用控制台监视网络状态
A.7.5 使用控制台操作电源设置
A.7.6 使用其他控制台命令
A.8 享受模拟器
A.9 认识模拟器的局限
参考资料和更多信息
附录B Android DDMS快速入门
B.1 独立或结合Eclipse使用DDMS
B.2 熟悉DDMS的关键特性
B.3 使用进程、线程和堆
B.3.1 向Android应用程序关联调试器
B.3.2 终止Android进程
B.3.3 监视Android应用程序的线程活动
B.3.4 监视堆活动
B.3.5 触发垃圾回收(GC)
B.3.6 创建和使用HPROF文件
B.4 使用内存分配(allocation)跟踪器
B.5 使用文件浏览器
B.5.1 浏览模拟器或设备上的文件系统
B.5.2 从模拟器或设备上复制文件
B.5.3 向模拟器或设备复制文件
B.5.4 删除模拟器或设备上的文件
B.6 使用模拟器控制
B.6.1 模拟语音来电
B.6.2 模拟短消息接收
B.6.3 发送位置坐标
B.7 在模拟器或目标设备上截屏
B.8 使用应用程序日志
附录C Eclipse技巧和诀窍
C.1 构建你的Eclipse工作空间
C.1.1 集成源代码管理服务
C.1.2 调整视图中的标签面板
C.1.3 最大化窗口
C.1.4 最小化窗口
C.1.5 显示并排窗口
C.1.6 显示同一文件的两个部分
C.1.7 关掉不需要的标签面板
C.1.8 保持对窗口的控制
C.1.9 定制日志过滤器
C.1.10 在项目中搜索
C.1.11 组织Eclipse任务
C.2 编写Java代码
C.2.1 善用自动补全(Autocomplete)
C.2.2 创建类和方法
C.2.3 组织导入
C.2.4 格式化代码
C.2.5 重命名
C.2.6 重构代码
C.2.7 整理代码
C.2.8 使用QuickFix
C.2.9 提供Javadoc风格的文件
C.2.10 解决诡异的构建错误

亚马逊链接

基本信息

名称: Android UI基础教程
作者信息: 作者: Jason Ostrander [ 英文 pdf ]

简单介绍

详尽的知识点介绍,丰富的图示说明,以及清晰实用的示例。作者集多年实际工作经验,给予读者贴近现实的指导和建议。作者以Android编程专家的身份,对诸多现实问题给出了最佳的解决方案。强调建立扎实的技术基础,从而将精彩的创意完美地表现出来。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
第1部分 Android UI基础
第1章 入门
1.1 Hello World
1.2 Android应用程序的基本结构
1.2.1 文件夹结构
1.2.2 Android Manifest
1.2.3 资源
1.3 Android UI基础
1.3.1 主屏幕和通知栏
1.3.2 XML布局
1.3.3 ACTIVIY类
1.3.4 硬件按钮
1.4 工具
1.4.1 Android开发者工具
1.4.2 Android虚拟设备
1.4.3 层次浏览器(Hierarehy Viewer)
1.4.4 用DDMS截屏
1.4.5 其他工具
1.5 结束语
第2章 创建第一个应用
2.1 创建一个应用
2.2 开始使用Android视图
2.3 排布视图
2.3.1 FrameLayout
2.3.2 TableLayout
2.3.3 LinearLayout
2.3.4 RelativeLayout
2.3.5 GridLayout
2.4 显示列表
2.4.1 ListActivity
2.4.2 XML布局
2.4.3 把数据绑定到列表
2.4.4 Loader
2.5 理解活动
2.5.1 声明活动
2.5.2 了解活动的生命周期
2.5.3 了解任务和返回堆栈
2.5.4 处理配置更改
2.6 防止应用程序无响应(ANR)
2.6.1 StrictMode
2.6.2 后台任务
2.7 完成TIMETRACKER
2.8 结束语
第3章 更进一步
3.1 支持多种屏幕尺寸
3.1.1 资源限定符
3.1.2 资源限定符优先级
3.1.3 密度无关的像素
3.1.49-补丁图形
3.2 处理通知
3.2.1 TOAST
3.2.2 状态栏通知
3.2.3 对话框
3.3 处理事件
3.3.1 屏幕点击
3.3.2 长按(long press)
3.3.3 聚焦事件(Focus Event)和关键事件(Key Events)
3.4 创建菜单
3.4.1 菜单布局
3.4.2 菜单回调函数
3.4.3 上下文菜单
3.5 实现Time Tracker
3.6 结束语
第2部分 视图框架
第4章 基本视图
4.1 创建一个基本表格
4.1.1 TextView和EditText
4.1.2 按钮
4.1.3 布尔值按钮
4.1.4 Spinner(下拉列表)
4.1.5 ScrollView
4.2 显示图片
4.2.1 ImageView和资源
4.2.2 位图
4.2.3 Drawable
4.3 创建地图和展示网站
4.3.1 MapView
4.3.2 WebView
4.4 结束语
第5章 可复用UI
5.1 抽象布局
5.1.1 标签 5.1.2 标签 5.1.3 ViewStub 5.2 抽象样式和主题 5.2.1 样式 5.2.2 主题 5.3 使用Fragment 5.3.1 布局 5.3.2 Fragment生命周期 5.3.3 Fragment事务 5.3.4 Fragment回退栈 5.4 结束语 第6章 导航和数据加载 6.1 介绍操作栏 6.1.1 操作项 6.1.2 操作视图 6.1.3 ActionProvider类 6.2 应用导航 6.2.1 操作栏导航 6.2.2 TabWidget 6.2.3 ViewPager 6.3 往视图中加载数据 6.3.1 基础数据绑定 6.3.2 Adapter类 6.3.3 loader 6.4 结束语 第7章 Android部件 7.1 创建一个基础的部件 7.1.1 声明部件 7.1.2 AppWidgetProviderInfo XML 7.1.3 AppWidgetProvider类 7.1.4 Remote视图 7.1.5 应用部件配置活动 7.2 创建集合部件 7.2.1 创建布局 7.2.2 创建服务 7.3 结束语 第3部分 高级UI开发 第8章 处理手势操作 8.1 监听触摸事件 8.2 响应手势操作 8.2.1 GestureDetector 8.2.2 ScaleGestureDetector 8.3 结束语 第9章 动画 9.1 创建Drawable动画 9.2 创建视图动画 9.2.1 定义动画 9.2.2 使用Interpolator 9.2.3 使用动画 9.2.4 为TimeTracker添加一个时钟走动的动画 9.3 创建属性动画 9.3.1 ValueAnimator 9.3.2 Animator集 9.3.3 XML中的属性动画 9.3.4 ViewPropertyAnimator 9.3.5 LayoutTransition 9.4 结束语 第10章 创建自定义视图 10.1 理解Android如何绘制视图 10.2 创建自定义视图 10.2.1 OnMeasure 10.2.2 OnDraw 10.3 向自定义视图中添加自定义属性 10.3.1 声明属性 10.3.2 在XML中使用属性 10.3.3 在代码中使用属性 10.4 创建复合组件 10.4.1 创建一个复合组件 10.4.2 优化布局 10.5 结束语 第11章 创建高级图形 11.1 使用Canvas 11.1.1 实现SurfaceView 11.1.2 在SurfaceView上绘图 11.2 使用RenderScript 11.2.1 RenderScript文件 11.2.2 Java API ll.3 使用OpenGL 11.3.1 OpenGL基础 11.3.2 绘制图形 11.4 结束语 第12章 本地化和辅助功能 12.1 让应用可以使用多国语言 12.1.1 Android的本地化概述 12.1.2 格式和复数 12.2 让应用易于访问 12.2.1 导航和聚焦 12.2.2 内容描述 12.2.3 AccessibilityEvents 12.3 结束语 </merge></include>

亚马逊链接

基本信息

名称: Arduino+Android互动智作
作者信息: 作者: Simon Monk [ 英文 pdf ]

简单介绍

《Arduino+Android互动智作》适合广大“创客”和电子爱好者自学、培训,也可作为高等院校相关专业及电子设计(制作)大赛的教学用书。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Chapter 1 蓝牙自走车
制作
原理讲解
小结

Chapter 2 Android盖革计数器 Google开源附件 制作 原理讲解 小结

Chapter 3 Android彩灯板 制作Arduino USB Host加料扩展板 制作彩灯板 使用效果 原理讲解 小结

Chapter 4 电视遥控器 制作 使用效果 小结

Chapter 5 温度记录器 制作 使用效果 原理讲解 小结

Chapter 6 超声波距离探测器 制作 使用效果 原理讲解 小结

Chapter 7 家居自动化控制器 制作音频连接模块 Android APP 通过互联网访问 原理讲解 小结

Chapter 8 电源控制 电源控制模块的概貌 制作电源控制模块 整合到家居自动化控制器 使用效果 原理讲解 小结

Chapter 9 智能恒温器 制作 使用效果 原理讲解 小结

Chapter 10 RFID门锁 制作 使用效果 原理讲解 小结

Chapter 11 信号旗 制作 原理讲解 小结

Chapter 12 延时器 制作 原理讲解 小结

附录 Android开源附件开发入门 学习Android编程 学习Arduino编程 选择学习示例 Arduino端开发 Android端开发 总结

亚马逊链接

基本信息

名称: Android应用性能优化
作者信息: 作者: Hervé Guihot [ 中文 pdf ]

简单介绍

Android应用开发者经常要想尽办法来提升程序性能。Herve Guihot专著的《Android应用性能优化》主要介绍如何快速高效地优化应用,让应用变得稳定高效。你将学会利用Android SDK和NDK来混合或单独使用Java、C/C++来开发应用。 把Herve Guihot专著的《Android应用性能优化》的内容学以致用,你的编程技术就会得到关键性的提升,写出的应用就会更为健壮高效,从而广受用户好评,并最终获得成功。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
第1章Java代码优化
1.1Android如何执行代码
1.2优化斐波纳契数列
1.2.1从递归到迭代
1.2.2BigInteger
1.3缓存结果
1.4API等级
1.5数据结构
1.6响应能力
1.6.1推迟初始化
1.6.2StrictMode
1.7SQLite
1.7.1SQLite语句
1.7.2事务
1.7.3查询
1.8总结
第2章NDK入门
2.1NDK里有什么
2.2混合使用Java和C/C++代码
2.2.1声明本地方法
2.2.2实现JNI粘合层
2.2.3创建Makefile
2.2.4实现本地函数
2.2.5编译本地库
2.2.6加载本地库
2.3Application.mk
2.3.1为(几乎)所有设备优化
2.3.2支持所有设备
2.4Android.mk
2.5使用C/C++改进性能
2.6本地Acitivity
2.6.1构建缺失的库
2.6.2替代方案
2.7总结
第3章NDK进阶
3.1汇编
3.1.1最大公约数
3.1.2色彩转换
3.1.3并行计算平均值
3.1.4ARM指令
3.1.5ARMNEON
3.1.6CPU特性
3.2C扩展
3.2.1内置函数
3.2.2向量指令
3.3技巧
3.3.1内联函数
3.3.2循环展开
3.3.3内存预读取
3.3.4用LDM/STM替换LDR/STD
3.4总结
第4章高效使用内存
4.1说说内存
4.2数据类型
4.2.1值的比较
4.2.2其他算法
4.2.3数组排序
4.2.4定义自己的类
4.3访问内存
4.4排布数据
4.5垃圾收集
4.5.1内存泄漏
4.5.2引用
4.6API
4.7内存少的时候
4.8总结
第5章多线程和同步
5.1线程
5.2AsyncTask
5.3Handler和Looper
5.3.1Handler
5.3.2Looper
5.4数据类型
5.5并发
5.6多核
5.6.1为多核修改算法
5.6.2使用并发缓存
5.7Activity生命周期
5.7.1传递信息
5.7.2记住状态
5.8总结
第6章性能评测和剖析
6.1时间测量
6.1.1System.nanoTime()
6.1.2Debug.threadCpuTimeNanos()
6.2方法调用跟踪
6.2.1Debug.startMethodTracing()
6.2.2使用Traceview工具
6.2.3DDMS中的Traceview
6.2.4本地方法跟踪
6.3日志
6.4总结
第7章延长电池续航时间
7.1电池
7.2禁用广播接收器
7.3网络
7.3.1后台数据
7.3.2数据传输
7.4位置
7.4.1注销监听器
7.4.2更新频率
7.4.3多种位置服务
7.4.4筛选定位服务
7.4.5最后已知位置
7.5传感器
7.6图形
7.7提醒
7.8WakeLock
7.9总结
第8章图形
8.1布局优化
8.1.1相对布局
8.1.2合并布局
8.1.3重用布局
8.1.4ViewStub
8.2布局工具
8.2.1层级视图
8.2.2layoutopt
8.3Open GLES
8.3.1扩展
8.3.2纹理压缩
8.3.3Mipmap
8.3.4多APK
8.3.5着色
8.3.6场景复杂性
8.3.7消隐
8.3.8渲染模式
8.3.9功耗管理
8.4总结
第9章RenderScript
9.1概览
9.2HelloWorld
9.3HelloRendering
9.3.1创建渲染脚本
9.3.2创建RenderScriptGL Context
9.3.3展开RSSurfaceView
9.3.4设置内容视图
9.4在脚本中添加变量
9.5HelloCompute
9.5.1Allocation
9.5.2rsForEach
9.5.3性能
9.6自带的RenderScript API
9.6.1rs_types.rsh
9.6.2rs_core.rsh
9.6.3rs_cl.rsh
9.6.4rs_math.rsh
9.6.5rs_graphics.rsh
9.6.6rs_time.rsh
9.6.7rs_atomic.rsh
9.7RenderScript与NDK对比
9.8总结

亚马逊链接

基本信息

名称: Android 4游戏编程入门经典
作者信息: 作者: 策希纳 (Mario Zechner) [ 英文 pdf ]

简单介绍

《Android 4游戏编程入门经典》囊括了成为一名成功的Android游戏开发者所需的全部知识。《Android 4游戏编程入门经典》是一本可以信赖的指南,能够帮助你在移动游戏开发中迅速“升级”。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
第1章 Android,后起之秀
1.1 Android简介
1.2 版本分裂
1.3 谷歌的角色
1.3.1 Android开源项目
1.3.2 Android Market
1.3.3 挑战赛、设备播种计划和谷歌I/O
1.4 Android的功能和体系结构
1.4.1 内核
1.4.2 运行库和Dalvik虚拟机
1.4.3 系统库
1.4.4 应用程序框架
1.5 软件开发工具包
1.6 开发人员社区
1.7 设备,设备,设备
1.7.1 硬件
1.7.2 没备的范围
1.8 所有设备之间的兼容性
1.9 不同的手机游戏
1.9.1 人手一台游戏机
1.9.2 随时上网
1.9.3 普通用户与游戏迷
1.9.4 市场很大,开发人员很少
1.10 小结
第2章 从Android SDK开始
2.1 搭建开发环境
2.1.1 安装JDK
2.1.2 安装Android SDK
2.1.3 安装Eclipse
2.1.4 安装ADT Eclipse插件
2.1.5 Eclipse快速浏览
2.1.6 一些实用的Eclipse快捷键
2.2 Android环境下的Hello World
2.2.1 创建项目
2.2.2 进一步分析项目
2.2.3 编写应用程序代码
2.3 运行和调试Android应用程序
2.3.1 连接设备
2.3.2 创建一个Android虚拟设备
2.3.3 运行应用程序
2.3.4 调试应用程序
2.3.5 LogCat和DDMS
2.3.6 使用ADB
2.4 小结
第3章 游戏开发基础
3.1 游戏类型
3.1.1 休闲游戏
3.1.2 益智游戏
3.1.3 动作和街机游戏
3.1.4 塔防游戏
3.1.5 创新
3.2 游戏设计:笔比代码更强大
3.2.1 游戏的核心机制
3.2.2 一个故事和一种艺术风格
3.2.3 画面和切换
3.3 代码:具体细节
3.3.1 应用程序和窗口管理
3.3.2 输入
3.3.3 文件I/O
3.3.4 音频
3.3.5 图形
3.3.6 游戏框架
3.4 小结
第4章 面向游戏开发人员的Android
4.1 定义一个Android应用程序:清单文件
4.1.1 元素 4.1.2 元素 4.1.3 元素 4.1.4 元素 4.1.5 元素 4.1.6 元素 4.1.7 10个简单步骤建立Android游戏项目 4.1.8 市场过滤器 4.1.9 定义游戏图标 4.2 Android Apl基础 4.2.1 创建测试项目 4.2.2 活动的牛命周期 4.2.3 处理输入设备 4.2.4 文件处理 4.2.5 音频编程 4.2.6 播放音效 4.2.7 音乐流 4.2.8 基本图形编程 4.3 最佳实践 4.4 小结 第5章 Android游戏开发框架 5.1 制定计划 5.2 AndroidFileIO类 5.3 AndroidAudio、AndroidSound和AndroidMusic 5.4 Androidlnput和Accelerometer—Handler 5.4.1 AccelerometerHandler:手机哪一面朝上 5.4.2 CompassHandler 5.4.3 Pool类:重用相当有用 5.4.4 KevboardHandler 5.4.5 触摸处理程序 5.4.6 Androidlnput:优秀的协调者 5.5 AndroidGraphics和AndroidPixmap 5.5.1 处理不同屏幕人小和分辨率的问题 5.5.2 AndroidPixmap:人物的像素 5.5.3 AndroidGraphics:满足绘图需求 5.5.4 AndroidFastRenderView 5.6 AndroidGame:合并所有内容 5.7 小结 第6章 Mr.Nom入侵Android 6.1 创建资源 6.2 建立项目 6.3 MrNomGame:主要活动 6.3.1 资源:便捷的资源存储 6.3.2 设置:跟踪用户的选项设置和高分榜 6.3.3 LoadingScreen:从磁盘获取资源 6.4 主菜单画面 6.5 HelpScreen类 6.6 高分榜画面显示 6.6.1 渲染数字 6.6.2 画面的实现 6.7 抽象 6.7.1 抽象Mr.Nom的世界:模型、视图、控制器 6.7.2 GameScreen类 6.8 小结 第7章 OpenGL ES介绍 7.1 OpenGL ES概述以及关注它的原因 7.1.1 编程模型:一个比喻 …… 第8章 2D游戏编程技巧 第9章 Super Jumper:一个2D 第10章 OpenGL ES:进入3D世界 第11章 3D编程技巧 第12章 Droid Invaders游戏 第13章 发布游戏 第14章 进阶内容 </uses></uses></uses></activity></application></manifest>

亚马逊链接

基本信息

名称: Android应用开发入门
作者信息: 作者: 杰克逊 (Wallace Jackson) [ 中文 pdf ]

简单介绍

零基础 轻松学会Android应用开发巧入门 从容探索移动开发新世界大视野 助力Android新起跑线

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
第1章 绪论 1
1.1 Android是什么 1
1.2 Android的优势 2
1.3 本书范围 3
1.3.1 本书所涉及的内容 3
1.3.2 本书未涉及的内容 4
1.4 下载SDK工具 4
1.4.1 Java 5
1.4.2 Eclipse 6
1.4.3 AndroidSDK 7
1.5 小结 7
第2章 本书内容梗概 9
2.1 Android集成开发环境 9
2.2 Java、XML以及Android的工作原理 11
2.3 Android应用程序框架 11
2.4 屏幕布局设计 12
2.5 用户界面设计 12
2.6 图像与动画设计 13
2.7 交互性 13
2.8 内容提供器 13
2.9 Intent和Intent过滤器 14
2.10 Android的未来 14
2.11 小结 15
第3章 配置Android开发环境 16
3.1 安装Java、Eclipse和Android 16
3.1.1 JavaSE和JRE:应用程序开发的基础 16
3.1.2 EclipseIDE:开发环境 18
3.1.3 AndroidSDK:用于Eclipse的Android工具包 21
3.1.4 Android开发工具:用于Eclipse的Android工具 22
3.1.5 Eclipse中的Android环境 25
3.2 升级AndroidSDK 26
3.3 配置AVD与智能手机连接 29
3.3.1 AVD:智能手机模拟器 29
3.3.2 USB智能手机驱动程序:外部设备 31
3.4 在64位平台上进行开发 31
3.5 小结 33
第4章 Android软件开发平台介绍 34
4.1 了解JavaSE与Dalvik虚拟机 34
4.2 Android工程的目录结构 35
4.2.1 典型的默认资源目录 36
4.2.2 Values目录 37
4.3 用好AndroidXML(你的秘密武器) 38
4.3.1 屏幕尺寸 39
4.3.2 桌面时钟 39
4.4 使用Android应用程序资源 40
4.4.1 位图图片 40
4.4.2 可选资源目录 40
4.5 启动应用程序:AndroidManifest.xml文件 41
4.6 创建第一个Android应用 42
4.6.1 启动Eclipse 42
4.6.2 创建一个Android工程 43
4.6.3 查看并编辑应用程序文件 45
4.6.4 在strings.xml中设置一个变量的值 49
4.6.5 运行应用 51
4.6.6 添加应用程序图标 52
4.7 小结 55
第5章 Android框架概览 56
5.1 OOP的基础:对象 56
5.1.1 一些OOP术语 58
5.1.2 对象的设计图:类 58
5.1.3 为类赋予结构:继承 62
5.1.4 定义接口 64
5.1.5 将类组织起来:包 65
5.2 XML概览 66
5.3 剖析Android应用程序:APK文件 66
5.4 Android应用程序组件 68
5.4.1 Android活动:定义UI 68
5.4.2 Android服务:后台处理 69
5.4.3 广播接收器:消息和通知 69
5.4.4 内容提供器:数据管理 70
5.5 AndroidIntent对象:组件的通信 71
5.6 AndroidManifestXML:组件的声明 71
5.7 小结 73
第6章 屏幕布局设计:视图与布局 75
6.1 Android视图结构 75
6.1.1 使用View类 75
6.1.2 嵌套视图:使用ViewGroup类 76
6.2 定义屏幕布局:使用XML 77
6.2.1 配置屏幕布局 77
6.2.2 使用线性布局 78
6.2.3 使用相对布局 88
6.2.4 滑动抽屉:扩展你的UI 91
6.2.5 在视图和布局中使用内外边距和外外边距 94
6.2.6 在View中设置内边距 95
6.2.7 在ViewGroup中设置外边距 95
6.3 小结 95
第7章 按钮、菜单与对话框 97
7.1 使用常见的UI元素 97
7.1.1 为布局添加图像按钮 97
7.1.2 为布局添加文本 107
7.1.3 添加图片 108
7.2 使用菜单 110
7.2.1 用XML创建菜单结构 111
7.2.2 定义菜单项文本 112
7.2.3 通过Java载入菜单结构 115
7.2.4 在Android模拟器中运行应用 116
7.2.5 让菜单发挥作用 117
7.3 添加对话框 119
7.3.1 使用自定义对话框子类 120
7.3.2 显示警告对话框 120
7.4 小结 124
第8章 Android图像资源介绍 125
8.1 图像资源简介 125
8.1.1 调用图片 126
8.1.2 核心图像资源子类 126
8.2 使用位图 127
8.2.1 PNG图片 127
8.2.2 JPEG和GIF图片 128
8.3 创建动画 128
8.3.1 基于帧的2D动画 128
8.3.2 补间动画 136
8.4 使用过渡 141
8.5 创建9—Patch自定义伸缩图片 145
8.6 播放视频 150
8.6.1 添加VideoView对象 150
8.6.2 为视频添加Java代码 152
8.7 小结 154
第9章 增加交互性:处理UI事件 155
9.1 UI事件概述 155
9.1.1 监听及处理事件 155
9.1.2 通过View类处理UI事件 155
9.1.3 事件回调方法 156
9.2 处理onClick事件 157
9.2.1 为UI元素实现onClick监听器 157
9.2.2 向活动添加onClick监听器 158
9.3 Android触摸屏事件:onTouch 165
9.4 触屏版右键点击:onLongClick 166
9.5 键盘事件监听器:onKeyUp和onKeyDown 169
9.5.1 添加用于键盘事件的XML代码 169
9.5.2 添加用于键盘事件的Java代码 170
9.6 上下文菜单:onCreateContextMenu 171
9.6.1 添加用于上下文菜单的XML代码 172
9.6.2 添加用于上下文菜单的Java代码 173
9.7 焦点控制 178
9.7.1 添加用于焦点控制的XML代码 179
9.7.2 添加用于焦点控制的Java代码 182
9.7.3 设置焦点可用性 184
9.8 小结 185
第10章 了解内容提供器 186
10.1 Android内容提供器概述 186
10.1.1 数据库和数据库管理系统 186
10.1.2 Android内置内容提供器 188
10.2 定义内容提供器 190
10.2.1 在Eclipse中创建内容提供器示例 191
10.2.2 定义安全权限 192
10.2.3 向联系人数据库添加数据 195
10.3 操作数据库 197
10.3.1 查询内容提供器 197
10.3.2 向内容提供器添加数据 203
10.3.3 修改内容提供器数据 208
10.3.4 删除内容提供器数据 212
10.4 小结 217
第11章 了解Intent和Intent过滤器 218
11.1 什么是Intent 218
11.2 通过Intent对象传递消息 219
11.3 Intent解析:显式Intent和隐式Intent 221
11.3.1 显式Intent 221
11.3.2 隐式Intent 222
11.4 在活动中使用Intent 223
11.4.1 编写数字时钟活动 227
11.4.2 连接到应用程序 230
11.4.3 发送Intent 231
11.5 Android服务:在自己的类中处理数据 234
11.5.1 在服务中使用Intent 234
11.5.2 创建服务 237
11.5.3 实现媒体播放功能 241
11.5.4 将按钮连接到服务 241
11.5.5 运行应用程序 243
11.6 在广播接收器中使用Intent 244
11.6.1 用XML创建定时器用户界面 244
11.6.2 创建一个定时广播接收器 246
11.6.3 配置AndroidManifest.xml文件的标签 247
11.6.4 实现Intent 248
11.6.5 在Android1.5模拟器中运行定时器应用程序 252
11.7 小结 253
第12章 探索未来 254
12.1 创建自定义部件 254
12.2 位置服务 256
12.3 Google地图 256
12.4 Google搜索 259
12.5 数据存储 260
12.5.1 共享配置选项 260
12.5.2 内部存储 261
12.5.3 外部存储 261
12.5.4 使用SQLite 261
12.6 设备管理:IT安全部署 262
12.7 用Camera类控制摄像头 262
12.8 3D图形:使用OpenGLES1.x 262
12.9 面部识别 263
12.10 音频池 263
12.11 媒体录制 264
12.12 小结 265

亚马逊链接

基本信息

名称: Android软件安全与逆向分析
作者信息: 作者: 丰生强 [ 中文 pdf ]

简单介绍

国内第一本Android软件安全书别让你的代码成为别人的炮灰eoe全球最大中文Android开发者社区、看雪论坛、安卓巴士 推荐每一位Android开发者的必备之书!在Android这个平台,我们已面临诸多威胁!2013年超过1800万台Android设备会遭遇某种形式的恶意软件的攻击。 恶意代码和病毒数量呈指数增长; 应用软件和数字内容的版权不断遭到侵害; 软件破解、篡改、广告库修改和植入、应用内付费破解等普遍存在; 软件本身的安全漏洞也频繁出现在国内外互联网企业的产品中; 数据泄露和账户被盗等潜在风险让人担忧; 官方系统、第三方定制系统和预装软件的漏洞不断被发现。要掌握主动,免除威胁,你应了解真相!安全技术几乎都是双刃剑,它们既能协助我们开发更有效的保护技术,也几乎必定会被攻击者学习和参考。这里的问题是,大量安全技术的首次大范围公开,是否会带来广泛的模仿和学习,从而引发更多的攻击?在这个问题上,安全界一直存在争议。这是任何一本里程碑式的安全书籍都无法绕开的话题。在《信息安全工程》中,Ross Anderson说:”尽管一些恶意分子会从这样的书中获益,但他们大都已经知道了这些技巧,而好人们获得的收益会多得多。”正是基于对这种观念的认同,才使得这本书呈现于此。强实践性。这本书的几乎每一个部分,都结合实际例子,一步步讲解如何操作。缺乏可操作性,是Android安全方面现有论文、白皮书、技术文章最大的问题之一,很多人读到最后可能对内容有了一些概念,却不知道从何下手。强时效性。作者在写作的同时,持续跟随业界最新进展,刚刚发布不久的Santoku虚拟机、APIMonitor等工具,以及Androguard的新特性等,已然出现在了这本书中。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
第1章Android程序分析环境搭建
1.1Windows分析环境搭建
1.1.1安装JDK
1.1.2安装Android SDK
1.1.3安装Android NDK
1.1.4Eclipse集成开发环境
1.1.5安装CDT、ADT插件
1.1.6创建Android Virtual Device
1.1.7使用到的工具
1.2Linux分析环境搭建
1.2.1本书的Linux环境
1.2.2安装JDK
1.2.3在Ubuntu上安装Android SDK
1.2.4在Ubuntu上安装Android NDK
1.2.5在Ubuntu上安装Eclipse集成开发环境
1.2.6在Ubuntu上安装CDT、ADT插件
1.2.7创建Android Virtual Device
1.2.8使用到的工具
1.3本章小结
第2章如何分析Android程序
2.1编写第一个Android程序
2.1.1使用Eclipse创建Android工程
2.1.2编译生成APK文件
2.2破解第一个程序
2.2.1如何动手?
2.2.2反编译APK文件
2.2.3分析APK文件
2.2.4修改Smali文件代码
2.2.5重新编译APK文件并签名
2.2.6安装测试
2.3本章小结
第3章进入Android Dalvik虚拟机
3.1Dalvik虚拟机的特点——掌握Android程序的运行原理
3.1.1Dalvik虚拟机概述
3.1.2Dalvik虚拟机与Java虚拟机的区别
3.1.3Dalvik虚拟机是如何执行程序的
3.1.4关于Dalvik虚拟机JIT(即时编译)
3.2Dalvik汇编语言基础为分析Android程序做准备
3.2.1Dalvik指令格式
3.2.2DEX文件反汇编工具
3.2.3了解Dalvik寄存器
3.2.4两种不同的寄存器表示方法——v命名法与p命名法
3.2.5Dalvik字节码的类型、方法与字段表示方法
3.3Dalvik指令集
3.3.1指令特点
3.3.2空操作指令
3.3.3数据操作指令
3.3.4返回指令
3.3.5数据定义指令
3.3.6锁指令
3.3.7实例操作指令
3.3.8数组操作指令
3.3.9异常指令
3.3.10跳转指令
3.3.11比较指令
3.3.12字段操作指令
3.3.13方法调用指令
3.3.14数据转换指令
3.3.15数据运算指令
3.4Dalvik指令集练习——写一个Dalvik版的Hello World
3.4.1编写smali文件
3.4.2编译smali文件
3.4.3测试运行
3.5本章小结
第4章Android可执行文件
4.1Android程序的生成步骤
4.2Android程序的安装流程
4.3dex文件格式
4.3.1dex文件中的数据结构
4.3.2dex文件整体结构
4.3.3dex文件结构分析
4.4odex文件格式
4.4.1如何生成odex文件
4.4.2odex文件整体结构
4.4.3odex文件结构分析
4.5dex文件的验证与优化工具dexopt的工作过程
4.6Android应用程序另类破解方法
4.7本章小结
第5章静态分析Android程序
5.1什么是静态分析
5.2快速定位Android程序的关键代码
5.2.1反编译apk程序
5.2.2程序的主Activity
5.2.3需重点关注的Application类
5.2.4如何定位关键代码——六种方法
5.3smali文件格式
5.4Android程序中的类
5.4.1内部类
5.4.2监听器
5.4.3注解类
5.4.4自动生成的类
5.5阅读反编译的smali代码
5.5.1循环语句
5.5.2switch分支语句
5.5.3try/catch语句
5.6使用IDA Pro静态分析Android程序
5.6.1IDA Pro对Android的支持
5.6.2如何操作
5.6.3定位关键代码——使用IDA Pro进行破解的实例
5.7恶意软件分析工具包——Androguard
5.7.1Androguard的安装与配置
5.7.2Androguard的使用方法
5.7.3使用Androguard配合Gephi进行静态分析
5.7.4使用androlyze.py进行静态分析
5.8其他静态分析工具
5.9阅读反编译的Java代码
5.9.1使用dex2jar生成jar文件
5.9.2使用jd—gui查看jar文件的源码
5.10集成分析环境——santoku
5.11本章小结
第6章基于Android的ARM汇编语言基础——逆向原生!
6.1Android与ARM处理器
6.1.1ARM处理器架构概述
6.1.2ARM处理器家族
6.1.3Android支持的处理器架构
6.2原生程序与ARM汇编语言——逆向你的原生Hello ARM
6.2.1原生程序逆向初步
6.2.2原生程序的生成过程
6.2.3必须了解的ARM知识
6.3ARM汇编语言程序结构
6.3.1完整的ARM汇编程序
6.3.2处理器架构定义
6.3.3段定义
6.3.4注释与标号
6.3.5汇编器指令
6.3.6子程序与参数传递
6.4ARM处理器寻址方式
6.4.1立即寻址
6.4.2寄存器寻址
6.4.3寄存器移位寻址
6.4.4寄存器间接寻址
6.4.5基址寻址
6.4.6多寄存器寻址
6.4.7堆栈寻址
6.4.8块拷贝寻址
6.4.9相对寻址
6.5ARM与Thumb指令集
6.5.1指令格式
6.5.2跳转指令
6.5.3存储器访问指令
6.5.4数据处理指令
6.5.5其他指令
6.6用于多媒体编程与浮点计算的NEON与VFP指令集
6.7本章小结
……
第7章Android NDK程序逆向分析
第8章动态调试Android程序
第9章Android软件的破解技术
第10章Android程序的反破解技术
第11章Android系统攻击与防范
第12章DroidKongFu变种病毒实例分析

亚马逊链接

基本信息

名称: Arduino从基础到实践
作者信息: 作者: 米歇尔•麦克罗伯茨 (Michael McRoberts) [ 英文 pdf ]

简单介绍

《Arduino从基础到实践》对读者的基础知识要求非常低,非常适合学生进行课外电子制作项目使用,同时《Arduino从基础到实践》也介绍了一些相当有难度和实用性很强的项目,对于有一定基础的电子爱好者也有很好的参考价值。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
作者简介
校订者简介
致谢
简介
第1章 引言
如何使用本书
你需要的东西
Arduino到底是什么?
可以开始了
在Windows XP上安装
在Windows 7或Vista上安装
在Mac OSX上安装
板子和接口的选择
加载第一个程序
Arduino的IDE
第2章 让我们开始吧
项目1——LED闪灯器
需要的元件
连接所有的东西
输入代码
代码回顾
硬件回顾
项目2——S.O.S莫尔斯码信号源
代码回顾
项目3——交通信号灯
需要的元件
把元件连起来
输入代码
项目4——互动交通灯
需要的元件
把元件连接起来
输入代码
代码回顾
硬件回顾
逻辑状态
下拉电阻
上拉电阻
Arduino的内部上拉电阻
小结
本章的主题和概念
第3章 LED效果
项目5——LED跑马灯效果
需要的元件
把元件连接起来
代码回顾
项目6——互动LED跑马灯效果
需要的元件
把元件连接起来
输入代码
代码回顾
硬件回顾
项目7——闪烁灯
需要的元件
把元件连起来
输入代码
代码回顾
项目8——RGB彩灯
需要的元件
把元件连接起来
输入代码
代码回顾
项目9——LED火焰效果
需要的元件
把元件连接起来
输入代码
代码回顾
项目10——串口控制彩灯
输入代码
代码回顾
小结
本章的主题和概念
第4章 简单的发声器和传感器
项目11——压电声音报警器
需要的元件
把元件连接起来
输入代码
代码回顾
硬件回顾
项目12——压电扬声器音乐演奏
输入代码
代码回顾
项目13——压电震动传感器
需要的元件
把元件连接起来
输入代码
代码回顾
项目14——光敏元件
需要的元件
把元件连接起来
输入代码
硬件回顾
小结
本章的主题和概念
第5章 驱动直流电机
项目15——简单的电机控制系统
需要的元件
把元件连接起来
输入代码
代码回顾
硬件回顾
项目16——使用L293D电机驱动芯片
需要的元件
把元件连接起来
输入代码
代码回顾
硬件回顾
小结
本章的主题和概念
第6章 二进制计数器
项目17——移位寄存器8位二进制计数器
需要的元件
把元件连接起来
输入代码
二进制数制
硬件回顾
代码回顾
按位操作
代码回顾(继续)
项目18——16位二进制计数器
需要的元件
把元件连接起来
输入代码
代码和硬件回顾
小结
本章的主题和概念
……
第7章 LED显示器
第8章 液晶显示器
第9章 舵机
第10章 步进电机和机器人
第11章 压力传感器
第12章 触摸屏
第13章 温度传感器
第14章 超声测距
第15章 读写SD卡
第16章 RFID读卡器
第17章 连接到Internet

亚马逊链接

基本信息

名称: 明解C语言
作者信息: 作者: 柴田望洋 [ 中文 pdf ]

简单介绍

原版畅销20万册! 日本C语言入门第一书 荣获日本工学教育协会著作奖《明解C语言》是日本的C语言经典教材,自出版以来不断重印、修订,被誉为“C语言圣经”。作者在日本IT界家喻户晓,出版过一系列极富影响力的计算机教材和参考书。其简洁、通俗的文风深受读者的喜爱。 《明解C语言》图文并茂,示例丰富,设有190段代码和164幅图表,对C语言的基础知识进行了彻底剖析,内容涉及数组、函数、指针、文件操作等。对于C语言语法以及一些难以理解的概念,均以精心绘制的示意图,清晰、通俗地进行讲解。原著在日本广受欢迎,始终位于网上书店C语言著作排行榜首位。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
第1章 初识C语言
1—1 显示计算结果
计算整数的和并显示结果 2
程序和编译 2
注释 3
固定代码 4
格式化输出函数printf 4
语句 5
计算并显示整数的差 5
格式化字符串和转换说明 6
符号的称呼 7
无格式化输出 8
字符串常量 9
转义字符 9
1—2 变量
常量和变量 10
声明多个变量 11
赋值 11
1—3 输入和显示
通过键盘进行输入 12
格式化输入函数scanf 12
乘法运算 13
输出函数puts 14
第2章 运算和数据类型
2—1 运算
四则运算 18
运算符和操作数 18
商和余数 19
乘除运算符和加减运算符 19
使用printf函数打印 % 19
获取整数的最后一位数字 20
多个转换说明 21
单目运算符 22
赋值运算符 23
表达式和赋值表达式 23
表达式语句 23
2—2 数据类型
求平均值 24
数据类型 24
int类型和double类型 25
数据类型和对象 26
整数常量和浮点数常量 27
double类型的运算 27
数据类型和运算 28
类型转换 30
转换说明 32
第3章 分支结构程序
3—1 if语句
程序的流程 36
if语句(1) 36
奇数的判定 37
if语句(2) 38
奇数和偶数 39
判断 39
非0的判断 40
语法结构 40
相等运算符 42
比较余数 43
关系运算符 44
嵌套的if语句 45
计算较大值 46
计算三个数的最大值 47
条件运算符 48
差值计算 49
复合语句(程序块) 50
判断季节 52
逻辑运算符 52
3—2 switch语句
程序的流程 54
switch语句和if语句 57
选择语句 57
第4章 程序的循环控制
4—1 do语句
do语句 60
复合语句(程序块)中的声明 61
逻辑非运算符 61
逆向显示整数值 62
计算整数的位数 63
初始化 64
复合赋值运算符 66
后置递增运算符和
后置递减运算符 67
4—2 while语句
while语句 68
字符常量 69
putchar 69
用递减运算符简化程序代码 70
数据递增 71
限定次数的循环操作 72
前置递增运算符和
前置递减运算符 73
4—3 for语句
for语句 74
循环语句 75
固定次数的循环 76
4—4 多重循环
九九乘法表 78
多重循环 79
长方形 80
直角三角形 80
4—5 程序的组成元素和格式
关键字 82
标识符 82
分隔符 83
运算符 83
常量和字符串常量 83
自由的书写格式 84
连接相邻的字符串常量 85
缩进 85
第5章 数组
5—1 数组
数组 88
数组和for语句 90
数组初始化 92
数组的复制 93
输入数组元素的值 94
对数组进行倒序排列 94
使用数组进行成绩处理 96
对象式宏 96
赋值表达式 98
及格学生一览表 100
数组的元素个数 100
成绩分布图 101
5—2 多维数组
矩阵 102
5—3 质数计算
质数 104
质数计算程序(第1版) 104
大整数 104
break语句 104
质数计算程序(第2版) 106
质数计算程序(第3版) 107
质数计算程序(第4版) 108
质数计算程序(第5版) 110
逗号运算符 110
第6章 函数
6—1 什么是函数
main函数 114
库函数 114
函数定义和函数调用 114
三个数中的最大值 118
平方差 119
幂 120
值传递 120
调用其他函数 121
6—2 函数设计
没有返回值的函数 122
通用性 122
不含形参的函数 124
函数返回值的初始化 125
作用域 125
计算最高分的程序 126
文件作用域 126
声明和定义 127
函数原型声明 127
头文件和文件包含指令 128
函数的通用性 129
数组的传递 130
对接收到的数组进行写入处理 132
const类型的修饰符 133
顺序查找 134
哨兵查找法 135
表达式语句和空语句 137
多维数组的传递 138
6—3 作用域和存储期
作用域和标识符的可见性 140
存储期 142
第7章 基本数据类型
7—1 基本数据类型和数
基本数据类型 148
基数 149
基数转换 150
7—2 整型和字符型
字符型和整型 152
<limits.h>头文件 154
字符型 155
sizeof运算符 156
size_t型和typedef声明 157
整型的灵活运用 157
整型常量 158
整型常量的数据类型 158
内部表示和位 160
无符号整数的内部表示 160
有符号整数的内部表示 161
反码表示法和补码表示法 162
窥探整数内部 163
按位操作的逻辑运算 164
位移运算符 166
位数的计算 168
求出unsigned型的位数 168
显示位的内容 169
整数的显示 170
数据溢出和异常 171
7—3 浮点型
浮点型 172
浮点型常量 173
循环的控制 174
<math.h>头文件 175
7—4 运算
运算符一览 176
优先级 176
结合性 176
数据类型转换 178
sizeof运算符 180
sizeof运算符和数组 181
第8章 动手编写各种程序吧
8—1 函数式宏
函数和数据类型 184
函数式宏 185
函数和函数式宏 186
不带参数的函数式宏 187
函数式宏和逗号运算符 188
8—2 枚举类型
枚举类型 190
枚举常量 192
命名空间 193
8—3 递归
阶乘 194
最大公约数 196
问题和递归 197
8—4 输入输出和字符
数字字符计数 198
getchar函数 198
EOF 198
字符和数值 199
字符 200
转义字符 203
复制 204
第9章 字符串的基本知识
9—1 什么是字符串
字符串字面量 208
字符串字面量的长度 208
字符串 210
字符数组的初始化赋值 211
空字符串 212
字符串的读取 212
格式化显示字符串 213
9—2 字符串数组
字符串数组 214
读取字符串数组中的字符串 215
9—3 字符串处理
字符串长度 216
遍历字符串 218
数字字符的出现次数 219
字符串数组的参数传递 220
大小写字符转换 222
第10章 指针
10—1 指针
函数的参数 226
变量和对象 227
地址 227
取址运算符 228
指针 229
指针运算符 231
10—2 指针和函数
作为函数参数的指针 232
二值互换 234
引用传递(C++语言) 235
计算和与差 236
scanf函数和指针 236
将两个值升序排列 237
指针的类型 238
标量型 239
10—3 指针和数组
指针和数组 240
数组的传递 244
第11章 字符串和指针
11—1 字符串和指针
字符串和指针 248
数组和指针的相同点 249
数组和指针的不同点 250
字符串数组 252
11—2 通过指针操作字符串
字符串和指针 254
判断字符串长度 254
const 254
使用指针进行遍历 255
字符串的复制 256
不正确的字符串复制 258
返回指针的函数 259
11—3 字符串处理库函数
字符串处理函数 260
字符串转换函数 264
第12章 结构体
12—1 结构体
排序 268
冒泡排序法 269
数据关联性 270
结构体 272
结构体成员(运算符) 274
成员的初始化 275
结构体成员(—>运算符) 276
结构体和typedef 278
结构体和程序 279
聚合类型 280
命名空间 280
返回结构体的函数 281
结构体数组 282
派生类型 282
表示日期和时间的结构体 284
12—2 作为成员的结构体
表示坐标的结构体 286
表示具有定位功能的汽车的
结构体 286
第13章 文件处理
13—1 文件与流
文件 290
流 290
标准流 291
FILE型 291
打开文件 292
关闭文件 294
打开与关闭文件示例 295
文件数据汇总 296
写入日期和时间 298
获取上一次运行时的信息 300
标准输入输出 302
显示文件内容 302
文件的复制 304
13—2 文本和二进制
在文本文件中保存实数 306
文本文件和二进制文件 307
在二进制文件中保存实数 308
显示文件自身 310
附录1 C语言简介
C语言的历史 314
K&R——C语言的圣经 314
C语言标准规范 314
附录2 printf函数与scanf函数
printf函数 318
scanf函数 322
致谢 326
参考文献 326
索引 327
版权声明 338

</math.h></limits.h>

亚马逊链接

基本信息

名称: Android 4高级编程(第3版)
作者信息: 作者: Reto Meier [ 中文 pdf ]

简单介绍

《Android 4高级编程(第3版)》由Android权威专家编写,涵盖了所有最新的内容,是学习使用Android 4 SDK开发移动应用程序的理想指南,经典图书升级版本!

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
第1章 Android简介 1
1.1 一些背景信息 2
1.1.1 不远的过去 2
1.1.2 未来的前景 2
1.2 对Android的误解 3
1.3 Android:开放的移动开发平台 3
1.4 原生Android应用程序 4
1.5 Android SDK的特征 5
1.5.1 访问硬件(包括摄像头、GPS和传感器) 5
1.5.2 使用Wi-Fi、蓝牙技术和NFC进行数据传输 6
1.5.3 地图、地理编码和基于位置的服务 6
1.5.4 后台服务 6
1.5.5 使用SQLite数据库进行数据存储和检索 7
1.5.6 共享数据和应用程序间通信 7
1.5.7 使用Widget和Live Wallpaper增强主屏幕 7
1.5.8 广泛的媒体支持和2D/3D图形 7
1.5.9 Cloud to Device Messaging 8
1.5.10 优化的内存和进程管理 8
1.6 开放手机联盟简介 8
1.7 运行Android的环境 9
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

第2章 开始入手 17 2.1 Android开发 18 2.1.1 开始前的准备工作 18 2.1.2 创建第一个Android应用程序 24 2.1.3 Android应用程序的类型 31 2.2 面向移动设备和嵌入式设备的开发 32 2.2.1 硬件限制带来的设计考虑事项 32 2.2.2 考虑用户环境 35 2.2.3 Android开发 36 2.3 Android开发工具 40 2.3.1 Android虚拟设备管理器 41 2.3.2 Android SDK管理器 42 2.3.3 Android模拟器 42 2.3.4 Dalvik调试监控服务(DDMS) 42 2.3.5 Android调试桥(ADB) 43 2.3.6 Hierarchy Viewer和Lint工具 43 2.3.7 Monkey和Monkey Runner 43

第3章 创建应用程序和Activity 45 3.1 Android应用程序的组成部分 46 3.2 应用程序Manifest文件简介 47 3.3 使用Manifest编辑器 54 3.4 分离资源 55 3.4.1 创建资源 55 3.4.2 使用资源 63 3.4.3 为不同的语言和硬件创建资源 66 3.4.4 运行时配置更改 68 3.5 Android应用程序生命周期 70 3.6 理解应用程序的优先级和进程状态 70 3.7 Android Application类简介 72 3.7.1 扩展和使用Application类 72 3.7.2 重写应用程序的生命周期事件 73 3.8 深入探讨Android Activity 74 3.8.1 创建Activity 74 3.8.2 Activity的生存期 76 3.8.3 Android Activity类 81

第4章 创建用户界面 83 4.1 Android UI基本设计 84 4.2 Android UI的基础知识 84 4.3 布局简介 85 4.3.1 定义布局 86 4.3.2 使用布局创建设备无关的UI 87 4.3.3 优化布局 90 4.4 To-Do List示例 93 4.5 Fragment介绍 100 4.5.1 创建新的Fragment 101 4.5.2 Fragment的生命周期 101 4.5.3 Fragment Manager介绍 105 4.5.4 向Activity中添加Fragment 105 4.5.5 Fragment和Activity之间的接口 110 4.5.6 没有用户界面的Fragment 111 4.5.7 Android Fragment 类 112 4.5.8 对To-Do List示例使用Fragment 112 4.6 Android widget 工具箱 116 4.7 创建新视图 117 4.7.1 修改现有的视图 118 4.7.2 创建复合控件 122 4.7.3 使用布局创建简单的复合控件 124 4.7.4 创建定制的视图 124 4.7.5 使用定制的控件 137 4.8 Adapter简介 137 4.8.1 部分原生Adapter简介 138 4.8.2 定制ArrayAdapter 138 4.8.3 使用Adapter绑定数据到视图 139

第5章 Intent和Broadcast Receiver 145 5.1 Intent简介 145 5.1.1 使用Intent来启动Activity 146 5.1.2 Linkify简介 153 5.1.3 使用Intent广播事件 155 5.1.4 Local Broadcast Manager 159 5.1.5 Pending Intent简介 160 5.2 创建Intent Filter和Broadcast Receiver 161 5.2.1 使用Intent Filter为隐式Intent提供服务 161 5.2.2 使用Intent Filter作为插件和扩展 170 5.2.3 监听本地Broadcast Intent 173 5.2.4 使用Broadcast Intent监控设备的状态变化 174 5.2.5 在运行时管理Manifest Receiver 176

第6章 使用Internet资源 177 6.1 下载和分析Internet资源 177 6.1.1 连接Internet资源 178 6.1.2 使用XML Pull Parser分析XML 179 6.1.3 创建一个地震查看器 180 6.2 使用Download Manager 186 6.2.1 下载文件 186 6.2.2 自定义Download Manager Notification 187 6.2.3 指定下载位置 188 6.2.4 取消和删除下载 189 6.2.5 查询Download Manager 189 6.3 使用Internet服务 192 6.4 连接到Google App Engine 192 6.5 下载数据而不会耗尽电量的最佳实践 194

第7章 文件、保存状态和首选项 195 7.1 保存简单的应用程序数据 195 7.2 创建并保存Shared Preference 196 7.3 检索Shared Preference 197 7.4 为地震查看器创建一个设置Activity 197 7.5 首选项框架和Preference Activity概述 205 7.5.1 在XML中定义一个Preference Screen布局 206 7.5.2 Preference Fragment简介 208 7.5.3 使用Preference Header定义Preference Fragment的层次结构 208 7.5.4 Preference Activity简介 209 7.5.5 向后兼容性与Preference Screen 210 7.5.6 找到并使用Preference Screen设置的Shared Preference 210 7.5.7 Shared Preference Change Listener简介 211 7.6 为地震查看器创建一个标准的Preference Activity 211 7.7 持久化应用程序实例的状态 215 7.7.1 使用Shared Preference保存Activity状态 215 7.7.2 使用生命周期处理程序保存和还原Activity实例 215 7.7.3 使用生命周期处理程序保存和还原Fragment实例状态 216 7.8 将静态文件作为资源添加 218 7.9 在文件系统下工作 218 7.9.1 文件管理工具 218 7.9.2 使用特定于应用程序的文件夹存储文件 219 7.9.3 创建私有的应用程序文件 219 7.9.4 使用应用程序文件缓存 220 7.9.5 存储公共可读的文件 220

第8章 数据库和Content Provider 223 8.1 Android数据库简介 223 8.1.1 SQLite数据库简介 224 8.1.2 Content Provider简介 224 8.2 SQLite简介 224 8.3 Content Value和Cursor 225 8.4 使用SQLite数据库 225 8.4.1 SQLiteOpenHelper简介 226 8.4.2 在不使用SQLiteOpenHelper的情况下打开和创建数据库 228 8.4.3 Android数据库设计注意事项 228 8.4.4 查询数据库 228 8.4.5 从Cursor中提取值 229 8.4.6 添加、更新和删除行 230 8.5 创建Content Provider 232 8.5.1 注册Content Provider 233 8.5.2 发布Content Provider的URI地址 233 8.5.3 创建Content Provide的数据库 234 8.5.4 实现Content Provider查询 235 8.5.5 Content Provider事务 236 8.5.6 在Content Provider中存储文件 239 8.5.7 一个Content Provider的实现框架 240 8.6 使用Content Provider 244 8.6.1 Content Resolver简介 244 8.6.2 查询Content Provider 244 8.6.3 使用Cursor Loader异步查询内容 247 8.6.4 添加、删除和更新内容 249 8.6.5 访问Content Provider中存储的文件 251 8.6.6 创建一个To-Do List数据库和Content Provider 253 8.7 将搜索功能添加到应用程序中 260 8.7.1 使Content Provider可搜索 261 8.7.2 为应用程序创建一个搜索Activity 261 8.7.3 将搜索Activity设置为应用程序的默认搜索Provider 263 8.7.4 使用搜索视图微件 266 8.7.5 由Content Provider支持搜索建议 267 8.7.6 在快速搜索框中显示搜索结果 270 8.8 创建可搜索的地震Content Provider 270 8.8.1 创建Content Provider 270 8.8.2 使用地震Content Provider 276 8.8.3 搜索EarthquakeContent Provider 279 8.9 本地Android Content Provider 285 8.9.1 使用Media StoreContent Provider 285 8.9.2 使用Contacts Contract Content Provider 286 8.9.3 使用Calendar Content Provider 293

第9章 在后台操作 297 9.1 Service简介 298 9.1.1 创建和控制Service 298 9.1.2 将Service绑定到Activity 302 9.1.3 地震监控Service示例 304 9.1.4 创建前台Service 308 9.2 使用后台线程 309 9.2.1 使用AsyncTask运行异步任务 310 9.2.2 Intent Service简介 312 9.2.3 Loader简介 313 9.2.4 手动创建线程和GUI线程同步 313 9.3 使用Alarm 315 9.3.1 创建、设置和取消Alarm 316 9.3.2 设置重复Alarm 317 9.3.3 使用重复Alarm调度网络刷新 318 9.4 使用Intent Service简化Earthquake更新Service 320

第10章 扩展用户体验 323 10.1 操作栏简介 324 10.1.1 自定义操作栏 325 10.1.2 自定义操作栏来控制应用程序的导航行为 328 10.1.3 操作栏操作简介 333 10.2 向地震监控程序添加一个操作栏 333 10.3 创建并使用菜单和操作栏操作项 339 10.3.1 Android菜单系统简介 340 10.3.2 创建菜单 341 10.3.3 指定操作栏的操作 342 10.3.4 菜单项选项 343 10.3.5 添加操作View和操作提供程序 344 10.3.6 在Fragment中添加菜单项 345 10.3.7 使用XML定义菜单层次结构 345 10.3.8 动态更新菜单项 347 10.3.9 处理菜单选择 347 10.3.10 子菜单和上下文菜单简介 348 10.4 更新地震监控程序 351 10.5 全屏显示 353 10.6 对话框简介 355 10.6.1 创建一个对话框 356 10.6.2 使用AlertDialog类 356 10.6.3 使用专门的输入对话框 357 10.6.4 通过Dialog Fragment管理和显示对话框 358 10.6.5 通过Activity事件处理程序管理和显示对话框 360 10.6.6 将Activity用作对话框 361 10.7 创建Toast 361 10.7.1 自定义Toast 362 10.7.2 在工作线程中使用Toast 364 10.8 Notification简介 365 10.8.1 Notification Manager简介 366 10.8.2 创建Notification 366 10.8.3 设置和自定义通知托盘UI 369 10.8.4 配置持续和连续的Notification 373 10.8.5 触发、更新和取消Notification 374 10.9 向地震监控程序中添加Notification和对话框 376

第11章 高级用户体验 381 11.1 为每个屏幕尺寸和分辨率做设计 382 11.1.1 分辨率无关 382 11.1.2 为不同的屏幕大小提供支持和优化 383 11.1.3 创建可缩放的图形资源 386 11.1.4 创建优化的、自适应的、动态的设计 390 11.1.5 反复测试 390 11.2 确保可访问性 391 11.2.1 为非触屏设备提供导航 391 11.2.2 为每个View提供文本描述 391 11.3 Android Text-to-Speech简介 392 11.4 使用语音识别 394 11.4.1 使用语音识别进行语音输入 395 11.4.2 使用语音识别进行搜索 396 11.5 控制设备振动 396 11.6 使用动画 397 11.6.1 补间View动画 397 11.6.2 创建和使用逐帧动画 400 11.6.3 插值属性动画 400 11.7 强化View 404 11.7.1 高级Canvas绘图 404 11.7.2 硬件加速 419 11.7.3 Surface View简介 420 11.7.4 创建交互式控件 423 11.8 高级Drawable资源 428 11.9 复制、粘贴和剪贴板 431 11.9.1 向剪贴板中复制数据 431 11.9.2 粘贴剪贴板数据 431

第12章 硬件传感器 433 12.1 使用传感器和传感器管理器 433 12.1.1 受支持的Android传感器 434 12.1.2 虚拟传感器简介 435 12.1.3 查找传感器 435 12.1.4 监视传感器 436 12.1.5 解释传感器值 438 12.2 监视设备的移动和方向 439 12.2.1 确定设备的自然方向 440 12.2.2 加速计简介 441 12.2.3 检测加速度变化 442 12.2.4 创建一个重力计 443 12.2.5 确定设备方向 446 12.2.6 创建一个指南针和人工地平仪 450 12.2.7 陀螺仪传感器简介 453 12.3 环境传感器简介 454 12.3.1 使用气压计传感器 454 12.3.2 创建气象站 455

第13章 地图、地理编码和基于位置的服务 461 13.1 使用基于位置的服务 461 13.2 在模拟器中使用基于位置的服务 462 13.2.1 更新模拟器位置提供器中的位置 463 13.2.2 配置模拟器来测试基于位置的服务 463 13.3 选择一个位置提供器 464 13.3.1 查找位置提供器 464 13.3.2 通过指定条件查找位置提供器 464 13.3.3 确定位置提供器的能力 465 13.4 确定当前位置 466 13.4.1 位置的隐私性 466 13.4.2 找出上一次确定的位置 466 13.4.3 Where Am I示例 466 13.4.4 刷新当前位置 469 13.4.5 在Where Am I中跟踪位置 472 13.4.6 请求单独一次位置更新 473 13.5 位置更新的最佳实践 474 13.6 使用近距离提醒 477 13.7 使用地理编码器 478 13.7.1 反向地理编码 479 13.7.2 前向地理编码 480 13.7.3 对“Where Am I”示例进行地理编码 481 13.8 创建基于地图的Activity 482 13.8.1 MapView和MapActivity简介 482 13.8.2 获得地图的API key 483 13.8.3 创建一个基于地图的Activity 483 13.8.4 地图和Fragment 485 13.8.5 配置和使用MapView 486 13.8.6 使用MapController 486 13.8.7 对“Where Am I”示例使用地图 487 13.8.8 创建和使用覆盖(Overlay) 490 13.8.9 MyLocationOverlay简介 497 13.8.10 ItemizedOverlay和OverlayItem简介 498 13.8.11 将视图固定到地图和地图的某个位置上 500 13.9 对Earthquake示例添加地图功能 501

第14章 个性化主屏幕 507 14.1 主屏幕Widget简介 507 14.2 创建App Widgets 509 14.2.1 创建Widget的XML布局资源 509 14.2.2 定义Widget设置 511 14.2.3 创建Widget Broadcast Receiver并将其添加到应用程序的manifest文件中 512 14.2.4 AppWidgetManager和RemoteView简介 513 14.2.5 刷新Widget 518 14.2.6 创建并使用Widget配置Activity 521 14.3 创建地震Widget 522 14.4 Collection View Widget简介 528 14.4.1 创建Collection View Widget的布局 529 14.4.2 创建RemoteViewsService 530 14.4.3 创建一个RemoteViews-Factory 531 14.4.4 使用RemoteViewsService填充CollectionViewWidget 533 14.4.5 向Collection View Widget中的项添加交互性 534 14.4.6 将Collection View Widget绑定到Content Provider 535 14.4.7 刷新Collection View Widget 537 14.4.8 创建Earthquake Collection View Widget 537 14.5 Live Folder简介 543 14.5.1 创建Live Folder 544 14.5.2 创建Earthquake Live Folder 548 14.6 使用快速搜索框显示应用程序搜索结果 551 14.6.1 在快速搜索框中显示搜索结果 551 14.6.2 将Earthquake示例的搜索结果添加到快速搜索框中 552 14.7 创建Live Wallpaper 553 14.7.1 创建Live Wallpaper定义资源 553 14.7.2 创建Wallpaper Service 554 14.7.3 创建Wallpaper Service引擎 555

第15章 音频、视频以及摄像头的使用 557 15.1 播放音频和视频 558 15.1.1 Media Player简介 559 15.1.2 准备音频播放 559 15.1.3 准备视频播放 560 15.1.4 控制Media Player的播放 564 15.1.5 管理媒体播放输出 566 15.1.6 响应音量控制 566 15.1.7 响应Media播放控件 567 15.1.8 请求和管理音频焦点 569 15.1.9 当音频输出改变时暂停播放 571 15.1.10 Remote Control Client简介 572 15.2 操作原始音频 574 15.2.1 使用AudioRecord录制声音 574 15.2.2 使用AudioTrack播放音频 575 15.3 创建一个Sound Pool 577 15.4 使用音效 578 15.5 使用摄像头拍摄照片 579 15.5.1 使用Intent拍摄照片 579 15.5.2 直接控制摄像头 581 15.5.3 读取并写入 JPEG EXIF图像详细信息 588 15.6 录制视频 589 15.6.1 使用Intent录制视频 589 15.6.2 使用MediaRecorder录制视频 590 15.7 使用媒体效果 593 15.8 向媒体库中添加新媒体 594 15.8.1 使用媒体扫描仪插入媒体 594 15.8.2 手动插入媒体 595

第16章 蓝牙、NFC、网络和Wi-Fi 597 16.1 使用蓝牙 597 16.1.1 管理本地蓝牙设备适配器 598 16.1.2 可发现性和远程设备发现 600 16.1.3 蓝牙通信 604 16.2 管理网络和Internet连接 609 16.2.1 Connectivity Manager简介 609 16.2.2 支持用户首选项以进行后台数据传输 609 16.2.3 查找和监视网络连接 611 16.3 管理Wi-Fi 612 16.3.1 监视Wi-Fi连接 613 16.3.2 监视活动的Wi-Fi连接的详细信息 613 16.3.3 扫描热点 613 16.3.4 管理Wi-Fi配置 614 16.3.5 创建Wi-Fi网络配置 615 16.4 使用Wi-Fi Direct传输数据 615 16.4.1 初始化Wi-Fi Direct框架 615 16.4.2 启用Wi-Fi Direct并监视其状态 617 16.4.3 发现对等设备 618 16.4.4 连接对等设备 618 16.4.5 在对等设备之间传输数据 620 16.5 近场通信 621 16.5.1 读取NFC标签 622 16.5.2 使用前台分派系统 623 16.5.3 Android Beam简介 625

第17章 电话服务和SMS 629 17.1 电话服务的硬件支持 629 17.1.1 将电话功能指定为必需的硬件功能 629 17.1.2 检查电话硬件 630 17.2 使用电话服务 630 17.2.1 启动电话呼叫 630 17.2.2 替换本机拨号程序 631 17.2.3 访问电话服务的属性及状态 632 17.2.4 使用PhoneStateListener监视电话状态的变化 635 17.2.5 使用Intent Receiver监视传入的电话呼叫 639 17.3 SMS和MMS简介 640 17.3.1 在应用程序中使用SMS和MMS 640 17.3.2 使用Intent从应用程序中发送SMS和MMS 640 17.3.3 使用SMS Manager发送SMS消息 641 17.3.4 监听传入的SMS消息 644 17.3.5 紧急响应程序SMS示例 646 17.3.6 自动紧急响应程序 654 17.4 SIP和VOIP简介 662

第18章 Android高级开发 663 18.1 Android的安全性 664 18.1.1 Linux内核安全 664 18.1.2 权限简介 664 18.2 Cloud to Device Messaging简介 666 18.2.1 C2DM的局限性 667 18.2.2 注册使用C2DM 667 18.2.3 在C2DM服务器上注册设备 667 18.2.4 向设备发送C2DM消息 670 18.2.5 接收C2DM消息 672 18.3 使用License Verification Library实现版权保护 673 18.3.1 安装License Verification Library 673 18.3.2 获得License Verification公钥 673 18.3.3 配置License Validation Policy 674 18.3.4 执行许可验证检查 674 18.4 应用程序内收费 675 18.4.1 应用程序内收费的局限性 676 18.4.2 安装IAB库 676 18.4.3 获得公钥和定义可购买的物品 676 18.4.4 开始IAB交易 677 18.4.5 处理IAB购买请求的响应 678 18.5 使用Wake Lock 679 18.6 使用AIDL支持Service的IPC 680 18.7 处理不同硬件和软件的可用性 686 18.7.1 指定硬件的要求 686 18.7.2 确认硬件可用性 687 18.7.3 构建向后兼容的应用程序 687 18.8 利用STRICT模式优化UI性能 689

第19章 推广和发布应用程序并从中获利 691 19.1 签名和发布应用程序 691 19.2 发布应用程序 693 19.2.1 Google Play简介 693 19.2.2 开始使用Google Play 694 19.2.3 发布应用程序 695 19.2.4 开发者控制台上的应用程序报告 697 19.2.5 查看应用程序错误报告 697 19.3 如何通过应用程序赚钱 698 19.4 应用程序销售、推广和分发的策略 699 19.4.1 应用程序的起步策略 699 19.4.2 在Google Play上推广 700 19.4.3 国际化 700 19.5 分析数据和跟踪推荐人 701 19.5.1 使用移动应用程序的Google Analytics 702 19.5.2 使用Google Analytics追踪推荐 703

亚马逊链接