-
Notifications
You must be signed in to change notification settings - Fork 5
/
android.txt
2950 lines (2180 loc) · 109 KB
/
android.txt
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
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1.1.1 Android系统架构 2
1.1.2 Android已发布的版本 3
1.1.3 Android应用开发特色 4
1.2 手把手带你搭建开发环境 5
1.3 创建你的第一个Android项目 9
1.3.1 创建HelloWorld项目 9
1.3.2 启动模拟器 12
1.3.3 运行HelloWorld 15
1.3.4 分析你的第一个Android程序 16
1.3.5 详解项目中的资源 22
1.3.6 详解build.gradle文件 23
1.4 前行必备——掌握日志工具的使用 26
1.4.1 使用Android的日志工具Log 26
1.4.2 为什么使用Log而不使用System.out 27
1.5 小结与点评 29
2.1 活动是什么 30
2.2 活动的基本用法 30
2.2.1 手动创建活动 31
2.2.2 创建和加载布局 32
2.2.3 在AndroidManifest文件中注册 35
2.2.4 在活动中使用Toast 37
2.2.5 在活动中使用Menu 38
2.2.6 销毁一个活动 40
2.3 使用Intent在活动之间穿梭 41
2.3.1 使用显式Intent 41
2.3.2 使用隐式Intent 44
2.3.3 更多隐式Intent的用法 46
2.3.4 向下一个活动传递数据 50
2.3.5 返回数据给上一个活动 51
2.4 活动的生命周期 53
2.4.1 返回栈 53
2.4.2 活动状态 54
2.4.3 活动的生存期 55
2.4.4 体验活动的生命周期 56
2.4.5 活动被回收了怎么办 62
2.5 活动的启动模式 63
2.5.1 standard 64
2.5.2 singleTop 65
2.5.3 singleTask 67
2.5.4 singleInstance 68
2.6 活动的最佳实践 71
2.6.1 知晓当前是在哪一个活动 71
2.6.2 随时随地退出程序 72
2.6.3 启动活动的最佳写法 74
2.7 小结与点评 75
第3章 软件也要拼脸蛋——UI开发的点点滴滴 76
3.1 如何编写程序界面 76
3.2 常用控件的使用方法 77
3.2.1 TextView 77
3.2.2 Button 80
3.2.3 EditText 82
3.2.4 ImageView 86
3.2.5 ProgressBar 88
3.2.6 AlertDialog 91
3.2.7 ProgressDialog 93
3.3 详解4种基本布局 94
3.3.1 线性布局 94
3.3.2 相对布局 100
3.3.3 帧布局 103
3.3.4 百分比布局 105
3.4 系统控件不够用?创建自定义控件 108
3.4.1 引入布局 109
3.4.2 创建自定义控件 111
3.5 最常用和最难用的控件——ListView 113
3.5.1 ListView的简单用法 114
3.5.2 定制ListView的界面 115
3.5.3 提升ListView的运行效率 119
3.5.4 ListView的点击事件 120
3.6 更强大的滚动控件——RecyclerView 122
3.6.1 RecyclerView的基本用法 122
3.6.2 实现横向滚动和瀑布流布局 125
3.6.3 RecyclerView的点击事件 130
3.7 编写界面的最佳实践 132
3.7.1 制作Nine-Patch图片 132
3.7.2 编写精美的聊天界面 135
3.8 小结与点评 141
4.1 碎片是什么 142
4.2 碎片的使用方式 144
4.2.1 碎片的简单用法 144
4.2.2 动态添加碎片 147
4.2.3 在碎片中模拟返回栈 150
4.2.4 碎片和活动之间进行通信 151
4.3 碎片的生命周期 151
4.3.1 碎片的状态和回调 151
4.3.2 体验碎片的生命周期 153
4.4 动态加载布局的技巧 156
4.4.1 使用限定符 156
4.4.2 使用最小宽度限定符 159
4.5 碎片的最佳实践——一个简易版的新闻应用 160
4.6 小结与点评 169
第5章 全局大喇叭——详解广播机制 170
5.1 广播机制简介 170
5.2 接收系统广播 171
5.2.1 动态注册监听网络变化 171
5.2.2 静态注册实现开机启动 174
5.3 发送自定义广播 177
5.3.1 发送标准广播 177
5.3.2 发送有序广播 179
5.4 使用本地广播 183
5.5 广播的最佳实践——实现强制下线功能 185
5.6 Git时间——初识版本控制工具 192
5.6.1 安装Git 192
5.6.2 创建代码仓库 193
5.6.3 提交本地代码 195
5.7 小结与点评 195
第6章 数据存储全方案——详解持久化技术 196
6.1 持久化技术简介 196
6.2 文件存储 197
6.2.1 将数据存储到文件中 197
6.2.2 从文件中读取数据 201
6.3 SharedPreferences存储 203
6.3.1 将数据存储到SharedPreferences中 203
6.3.2 从SharedPreferences中读取数据 206
6.3.3 实现记住密码功能 208
6.4 SQLite数据库存储 211
6.4.1 创建数据库 211
6.4.2 升级数据库 216
6.4.3 添加数据 219
6.4.4 更新数据 222
6.4.5 删除数据 224
6.4.6 查询数据 225
6.4.7 使用SQL操作数据库 228
6.5 使用LitePal操作数据库 229
6.5.1 LitePal简介 229
6.5.2 配置LitePal 230
6.5.3 创建和升级数据库 231
6.5.4 使用LitePal添加数据 236
6.5.5 使用LitePal更新数据 237
6.5.6 使用LitePal删除数据 240
6.5.7 使用LitePal查询数据 241
6.6 小结与点评 243
第7章 跨程序共享数据——探究内容提供器 244
7.1 内容提供器简介 244
7.2 运行时权限 245
7.2.1 Android权限机制详解 245
7.2.2 在程序运行时申请权限 249
7.3 访问其他程序中的数据 254
7.3.1 ContentResolver的基本用法 254
7.3.2 读取系统联系人 256
7.4 创建自己的内容提供器 260
7.4.1 创建内容提供器的步骤 261
7.4.2 实现跨程序数据共享 265
7.5 Git时间——版本控制工具进阶 275
7.5.1 忽略文件 275
7.5.2 查看修改内容 276
7.5.3 撤销未提交的修改 278
7.5.4 查看提交记录 279
7.6 小结与点评 280
第8章 丰富你的程序——运用手机多媒体 281
8.1 将程序运行到手机上 281
8.2 使用通知 283
8.2.1 通知的基本用法 283
8.2.2 通知的进阶技巧 289
8.2.3 通知的高级功能 291
8.3 调用摄像头和相册 293
8.3.1 调用摄像头拍照 294
8.3.2 从相册中选择照片 298
8.4 播放多媒体文件 303
8.4.1 播放音频 303
8.4.2 播放视频 307
第9章 看看精彩的世界——使用网络技术 312
9.1 WebView的用法 312
9.2 使用HTTP协议访问网络 314
9.2.1 使用HttpURLConnection 315
9.2.2 使用OkHttp 319
9.3 解析XML格式数据 321
9.3.1 Pull解析方式 324
9.3.2 SAX解析方式 326
9.4 解析JSON格式数据 329
9.4.1 使用JSONObject 330
9.4.2 使用GSON 331
9.5 网络编程的最佳实践 334
9.6 小结与点评 338
第10章 后台默默的劳动者——探究服务 339
10.1 服务是什么 339
10.2 Android多线程编程 340
10.2.1 线程的基本用法 340
10.2.2 在子线程中更新UI 341
10.2.3 解析异步消息处理机制 345
10.2.4 使用AsyncTask 347
10.3 服务的基本用法 349
10.3.1 定义一个服务 349
10.3.2 启动和停止服务 352
10.3.3 活动和服务进行通信 355
10.4 服务的生命周期 359
10.5 服务的更多技巧 359
10.5.1 使用前台服务 359
10.5.2 使用IntentService 361
10.6 服务的最佳实践——完整版的下载示例 365
10.7 小结与点评 378
第11章 Android特色开发——基于位置的服务 379
11.1 基于位置的服务简介 379
11.2 申请API Key 380
11.3 使用百度定位 384
11.3.1 准备LBS SDK 384
11.3.2 确定自己位置的经纬度 386
11.3.3 选择定位模式 391
11.3.4 看得懂的位置信息 393
11.4 使用百度地图 395
11.4.1 让地图显示出来 395
11.4.2 移动到我的位置 397
11.4.3 让“我”显示在地图上 400
11.5 Git时间——版本控制工具的高级用法 402
11.5.1 分支的用法 403
11.5.2 与远程版本库协作 404
11.6 小结与点评 406
第12章 最佳的UI体验——MaterialDesign实战 407
12.1 什么是Material Design 407
12.2 Toolbar 408
12.3 滑动菜单 415
12.3.1 DrawerLayout 415
12.3.2 NavigationView 418
12.4 悬浮按钮和可交互提示 423
12.4.1 FloatingActionButton 424
12.4.2 Snackbar 427
12.4.3 CoordinatorLayout 428
12.5 卡片式布局 430
12.5.1 CardView 431
12.5.2 AppBarLayout 437
12.6 下拉刷新 440
12.7 可折叠式标题栏 443
12.7.1 CollapsingToolbarLayout 443
12.7.2 充分利用系统状态栏空间 453
12.8 小结与点评 456
第13章 继续进阶——你还应该掌握的高级技巧 457
13.1 全局获取Context的技巧 457
13.2 使用Intent传递对象 461
13.2.1 Serializable方式 461
13.2.2 Parcelable方式 463
13.3 定制自己的日志工具 464
13.4 调试Android程序 466
13.5 创建定时任务 469
13.5.1 Alarm机制 469
13.5.2 Doze模式 471
13.6 多窗口模式编程 472
13.6.1 进入多窗口模式 473
13.6.2 多窗口模式下的生命周期 475
13.6.3 禁用多窗口模式 479
13.7 Lambda表达式 481
13.8 总结 485
第14章 进入实战——开发酷欧天气 486
14.1 功能需求及技术可行性分析 486
14.2 Git时间——将代码托管到GitHub上 489
14.3 创建数据库和表 494
14.4 遍历全国省市县数据 499
14.5 显示天气信息 509
14.5.1 定义GSON实体类 509
14.5.2 编写天气界面 514
14.5.3 将天气显示到界面上 520
14.5.4 获取必应每日一图 526
14.6 手动更新天气和切换城市 532
14.6.1 手动更新天气 532
14.6.2 切换城市 535
14.7 后台自动更新天气 540
14.8 修改图标和名称 542
14.9 你还可以做的事情 543
第15章 最后一步——将应用发布到360应用商店 545
15.1 生成正式签名的APK文件 545
15.1.1 使用Android Studio生成 546
15.1.2 使用Gradle生成 548
15.1.3 生成多渠道APK文件 551
15.2 申请360开发者账号 554
15.3 发布应用程序 556
15.4 嵌入广告进行盈利 560
15.4.1 注册腾讯广告联盟账号 560
15.4.2 新建媒体和广告位 562
15.4.3 接入广告SDK 564
15.4.4 重新发布应用程序 569
15.5 结束语 570
1.1 Android简介
1.1.1 Android起源
1.1.2 Android的优点
1.1.3 Android的系统架构
1.2 Android开发环境配置
1.3 第一个Android应用程序
第2章 Android应用程序
2.1 基本组件介绍
2.2 Activity生命周期
2.3 Android程序调试
第3章 Android常用基本控件
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.2.4 时钟控件
3.2.5 日期与时间选择控件
3.3 菜单
3.3.1 选项菜单和子菜单
3.3.2 上下文菜单
3.4 对话框
3.4.1 对话框简介
3.4.2 普通对话框
3.4.3 列表对话框
3.4.4 单选按钮和复选框对话框
3.4.5 日期及时间选择对话框
3.4.6 进度对话框
3.5 界面事件
3.5.1 onKeyDown方法简介
3.5.2 onKeyUp方法简介
3.5.3 onTouchEvent方法简介
3.5.4 onTrackBallEvent方法和onFocusChanged方法简介
3.5.5 OnClickListener接口简介
3.5.6 OnFocusChangeListener接口简介
3.5.7 OnKeyListener接口简介
3.5.8 OnTouchListener接口简介
3.5.9 OnCreateContextMenuListener接口简介
3.6 动画播放技术
3.6.1 帧动画
3.6.2 补间动画
第4章 Android常用高级控件
4.1 自动完成文本框
4.2 滚动视图和列表视图
4.2.1 滚动视图
4.2.2 列表视图
4.3 滑块与进度条
4.4 画廊控件与消息提示
4.4.1 画廊控件
4.4.2 Toast的使用
4.4.3 Notification的使用
4.5 下拉列表控件与选项卡
4.5.1 下拉列表控件
4.5.2 选项卡
5.1 自定义View的使用
5.2 SurfaceView的使用
5.3 游戏碰撞与检测技术
5.3.1 碰撞检测技术基础
5.3.2 游戏中实体对象之间的碰撞检测
5.3.3 游戏实体对象与环境之间的碰撞检测
5.4 扫雷游戏实例
第6章 Android消息与广播
6.1 Intent
6.1.1 启动Activity
6.1.2 获取Activity返回值
6.2 Intent过滤器
6.3 BroadcastReceive组件应用
第7章 Service后台服务
7.1 Service组件应用
7.2 进程内服务
7.2.1 服务管理
7.2.2 使用线程
7.2.3 服务绑定
7.3 Handler消息传递机制
7.4 单机版音乐盒实例
第8章 Android数据存储与访问
8.1 简单存储
8.2 文件存储
8.2.1 内部存储
8.2.2 外部存储
8.2.3 资源文件
8.3 SQLite数据库存储
8.3.1 SQLite数据库
8.3.2 手动建库
8.3.3 代码建库
8.3.4 数据操作
8.4 内容提供器——Content Providers
8.5 实训
第9章 Android位置服务与地图应用
9.1 位置服务
9.2 Google地图应用
9.2.1 申请地图密钥
9.2.2 使用Google地图
9.2.3 Google地图上贴上标记
9.3 利用Google API完成天气预报
9.3.1 信息来源
9.3.2 UI设计
9.3.3 解析XML
9.3.4 AndroidManifest.xml(限设置)
第10章 综合案例设计与开发
10.1 需求分析
10.2 策划与准备
10.2.1 图片资源的准备
10.2.2 数据库设计
10.3 程序设计
10.3.1 数据库适配器
10.3.2 主界面类PhotographActivity.java的实现
10.3.3 辅助类的设计
1.1 Android介绍
1.2 Android系统构架
1.3 Android应用程序框架
1.4 本章小结
2.1 获取Android源码
2.1.1 在Linux系统中获取Android源码
2.1.2 在Windows平台获取Android源码
2.1.3 编译源码
2.2 Android Studio应用开发
2.2.1 搭建Android Studio应用开发环境
2.2.2 创建第一个Android项目:HelloWorld
2.2.3 启动模拟器
2.2.4 运行到模拟器
2.2.5 下载到真机
2.2.6 详解项目中的资源
2.2.7 详解build.gradle文件
2.2.8 导入外部项目和Eclipse开发的Android项目
2.2.9 添加外部库
2.2.10 应用程序的调试
2.2.11 项目实战:下载Android的各个版本
2.3 本章小结
第3章 Android界面设计
3.1 用户界面基础
3.2 Android的Activity
3.2.1 Activity的介绍
3.2.2 Activity的生命周期
3.2.3 创建一个Activity
3.2.4 创建和加载布局
3.2.5 销毁一个Activity
3.2.6 使用Intent在Activity之间穿梭
3.2.7 Intent调用常见系统组件
3.3 常用控件的使用方法
3.3.1 TextView和EditText
3.3.2 Button、ToggleButton和ImageView
3.3.3 Spinner
3.3.4 ListView
3.3.5 AlertDialog
3.3.6 ProgressBar
3.4 Android布局
3.4.1 线性布局
3.4.2 相对布局
3.4.3 表格布局
3.4.4 百分比布局
3.4.5 嵌套布局实现计算器界面
3.5 样式和主题
3.5.1 定义样式
3.5.2 使用样式
3.5.3 主题
3.6 新控件RecyclerView、CardView和Palette的使用
3.6.1 新控件的使用
3.6.2 实现纵向滚动和横向滚动
3.6.3 RecyclerView的点击事件
3.7 Android新控件
3.8 综合项目实战:WebView实现监控界面
3.9 本章小结
第4章 创建Android应用程序
4.1 概述
4.2 事件处理机制
4.2.1 基于监听器的事件处理
4.2.2 基于回调的事件处理
4.2.3 事件响应的实现
4.2.4 项目实战:获取屏幕触点坐标
4.3 Android多线程
4.3.1 线程的基本用法
4.3.2 在子线程更新UI
4.3.3 Android线程池
4.3.4 Android四种线程池实例
4.4 Android广播组件
4.4.1 动态注册广播
4.4.2 静态注册广播
4.4.3 自定义本地广播
4.5 后台服务(Service)
4.5.1 定义一个服务
4.5.2 启动和停止服务
4.5.3 Service和Activity通信
4.6 Android实现多任务
4.6.1 多任务实现原理
4.6.2 用Handler实现多任务
4.6.3 项目实战:Handler实现模拟下载
4.6.4 AsyncTask实现多任务
4.6.5 项目实战:AsyncTask实现计时
4.7 本章小结
第5章 Android中数据的存储和访问
5.1 简介
5.2 使用共同偏好的存取数据
5.2.1 存取共享偏好
5.2.2 Preference框架
5.3 文件读取和保存
5.3.1 内部存储
5.3.2 扩展存储
5.4 存取结构化数据
5.4.1 SQLite简介
5.4.2 创建SQLite数据库
5.4.3 操作数据库
5.5 使用LitePal操作数据库
5.5.1 LitePal简介
5.5.2 配置LitePal
5.5.3 创建和升级数据库
5.5.4 SQLite命令调试
5.5.5 数据库操作
5.6 网络存储
5.7 本章小结
第6章 ContentProvider
6.1 查询记录
6.2 修改记录
6.3 添加记录
6.4 删除记录
6.5 创建Content Provider
6.6 本章小结
第二部分 物联网应用
第7章 移动智能终端访问网络摄像机
7.1 简介
7.2 网络摄像机
7.3 系统实现
7.3.1 介绍
7.3.2 网络摄像机参数设置
7.3.3 智能手机端视频监控软件
7.4 本章小结
第8章 物联网语音识别开发
8.1 语音识别技术概述
8.2 TTS语音识别技术
8.2.1 TTS基础
8.2.2 TTS开发流程
8.2.3 项目实战:TTS文字识别实例
8.3 Voice Recognition语言识别
8.3.1 Voice Recognition技术基础
8.3.2 项目实战:Voice Recognition语音识别
8.4 本章小结
第9章 在物联网中媒体动画的实现
9.1 Android多媒体系统架构基础
9.2 Graphics类详解
9.2.1 Graphics类基础
9.2.2 Android图形绘制类
9.2.3 绘制基本图形
9.3 二维动画
9.3.1 类Drawable
9.3.2 实现Tween动画效果
9.3.3 Tween动画的四种动画效果
9.3.4 实现Frame动画效果
9.4 项目实战:物联网环境控制动画
9.5 OpenGL ES详解
9.5.1 OpenGL ES基础
9.5.2 Android中的OpenGL ES
9.5.3 Open GL的基本操作
9.5.4 项目实战:利用OpenGL实现旋转的立方体
9.6 音频实现
9.6.1 音频接口类
9.6.2 AudioManager控制铃声
9.6.3 录音详解
9.6.4 项目实战:使用MediaPlay播放音乐
9.7 二维码的识别
9.7.1 二维码介绍
9.7.2 项目实战:Android实现二维码识别
9.8 本章小结
第10章 Android网络开发
10.1 Android Socket网络传输
10.1.1 什么是Socket
10.1.2 Socket的分类
10.1.3 Socket基本实现原理
10.1.4 Android实现Socket简单通信
10.1.5 Android客户端和PC服务器端通信
10.2 Android HTTP网络传输
10.2.1 HttpURLConnection接口
10.2.2 项目实战:HttpURLConnection获取信息
10.2.3 使用OkHttp
10.2.4 项目实战:OkHttp获取信息
10.3 Android应用程序的权限
10.3.1 Android权限机制详解
10.3.2 在程序运行时申请权限
10.4 解析XML格式数据
10.4.1 Pull解析方式
10.4.2 SAX解析方式
10.5 解析JSON格式数据
10.5.1 使用JSONObject
10.5.2 使用GSON
10.6 本章小结
第11章 Android无线通信
11.1 Android蓝牙传输数据
11.1.1 蓝牙介绍
11.1.2 蓝牙体系结构
11.1.3 蓝牙软件的实现
11.1.4 Android的蓝牙接口类
11.1.5 Android蓝牙开发步骤
11.1.6 项目实战:查找蓝牙设备
11.1.7 项目实战:Android手机蓝牙控制智能小车
11.2 Android系统中的NFC
11.2.1 近场通信技术基础
11.2.2 在Android系统中使用NFC
11.2.3 项目实战:在Android中使用NFC读取MifareClassic卡
11.3 本章小结
第12章 Android访问智能电表或智能插座
12.1 简介
12.1.1 RS-485接口智能插座
12.1.2 无线智能插座
12.1.3 智能电表
12.2 使用智能手机访问智能电表或智能插座
12.2.1 使用智能手机访问智能电表或智能插座的方案
12.2.2 使用智能手机访问Wi-Fi型智能插座或智能电表的方案
12.3 使用Android访问智能电表或智能插座
12.3.1 智能手机和Pad之间的数据通信
12.3.2 蓝牙通信实现
12.3.3 访问智能电表或智能插座的命令格式
12.4 本章小结
第三部分 综合实战
第13章 UI新体验——Material Design
13.1 什么是Material Design
13.2 Design Support库的使用
13.3 DrawerLayout和Navigation View
13.4 Material Design开源项目
13.5 本章小结
第14章 综合项目:Cool Weather
14.1 项目分析
14.2 创建数据库和表
14.3 遍历全国省、市、县数据
14.4 设计天气信息界面
14.5 省、市、县数据界面处理
14.6 处理返回的JSON数据
14.7 将天气信息显示到界面上
14.8 后台自动更新天气
第15章 Android应用程序托管和发布
15.1 Git版本控制工具
15.1.1 安装Git
15.1.2 创建代码仓库
15.1.3 提交本地代码
15.2 GitHub
15.2.1 在GitHub注册创建版本库
15.2.2 将代码托管到GitHub
15.3 将应用程序发布到360应用商店
15.3.1 生成正式签名的APK文件
15.3.2 申请360开发账号
15.3.3 发布应用程序
15.3.4 嵌入广告
8种Android全埋点解决方案包括:
AppClick 全埋点方案1:代理 View.OnClickListener、
AppClick 全埋点方案2:代理 Window.Callback
AppClick 全埋点方案3:代理 View.AccessibilityDelegate
AppClick 全埋点方案4:透明层
AppClick 全埋点方案5:AspectJ
AppClick 全埋点方案6:ASM
AppClick 全埋点方案7:Javassist
AppClick 全埋点方案8:AST
第1章 全埋点概述1
1.1 Android View 类型3
1.2 View 绑定listener 方式7
第2章 $AppViewScreen全埋点
方案10
2.1 关键技术Application.Activity
LifecycleCallbacks10
2.2原理概述11
2.3 案例12
2.4 完善方案24
2.5 扩展采集能力30
第3章 $AppStart、$AppEnd
全埋点方案33
3.1 原理概述34
3.2 案例35
3.3 缺点46
第4章 $AppClick全埋点方案1:代理
View.OnClickListener47
4.1 关键技术47
4.2 原理概述48
4.3 案例49
4.4 引入DecorView62
4.5 引入ViewTreeObserver.
OnGlobalLayoutListener64
4.6 扩展采集能力67
4.7 缺点91
第5章 $AppClick 全埋点方案2:代理
Window.Callback92
5.1 关键技术92
5.2 原理概述93
5.3 案例93
5.4 扩展采集能力101
5.5 缺点111
第6章 $AppClick 全埋点方案3:代理
View.AccessibilityDelegate112
6.1 关键技术112
6.1.1 Accessibility112
6.1.2 View.AccessibilityDelegate113
6.2 原理概述114