Android核心技术与实例详解
2013-4
电子工业出版社
欧阳零
《Android核心技术与实例详解(第2版)(畅销书再版)》以Android应用程序的开发为主题,结合真实的案例向读者详细介绍了Android基本组件的使用及应用程序开发的整个流程。全书分为3篇共18章,第1篇以简单易懂的实例为依托,详细介绍了Android平台的基本控件、高级控件、常用界面布局及菜单对话框等相关知识;第2篇介绍了Android平台的高级知识,包括消息与广播服务、网络数据处理、手机通信功能、桌面组件、多媒体采集、Google服务及3D程序开发等;第3篇则详细介绍了三个真实案例的开发步骤,逐步向读者讲解了Android手机应用程序的真实开发过程,同时在源代码中还包含了详细的注释,以尽量帮助读者掌握代码中的每一个细节,尽快掌握Android编程。
欧阳零,本科及研究生就读于电子科技大学。2007年开始从事Java开发,积累了丰富的开发经验,从2010年开始专注Android应用开发,2011年年底从应用开发转向Android安全研究。曾经参与开发过上海科技厅和多家知名网站的Android客户端项目。
基 础 篇
第1章 Android开发起步 1
本章将要介绍的是Android开发起步的相关知识,首先对Android平台进行简单的介绍,其中包括Android的背景及其应用程序的框架。然后会向读者讲解如何搭建Android的开发环境、如何在Eclipse中创建一个项目,以及如何使用Android平台提供的工具调试和监控应用程序。
1.1 Android平台简介 1
1.1.1 Android背景介绍 1
1.1.2 Android平台架构 2
1.2 Android开发环境的搭建 4
1.2.1 相关软件的下载与安装 4
1.2.2 虚拟设备的创建和使用 10
1.2.3 创建“Hello Android” 12
1.2.4 Android应用程序的调试 16
1.3 小结 18
第2章 Android应用程序的构成 19
本章将对Android应用程序的生命周期进行分析,主要目的是让读者了解Android应用程序的构成,掌握Android基本组件的特性及使用方法。
2.1 Android应用程序的解析 19
2.1.1 目录结构 19
2.1.2 资源的管理与使用 20
2.1.3 AndroidManifest.xml简介 23
2.1.4 应用程序的权限 24
2.2 Android基本组件的介绍 25
2.2.1 应用程序的生命周期 25
2.2.2 Activity简介 26
2.2.3 Service简介 28
2.2.4 BroadcastReceiver简介 32
2.2.5 ContentProvider简介 33
2.2.6 Intent和IntentFilter简介 34
2.3 小结 38
第3章 Android布局管理器 39
本章要介绍的内容为Android平台下的布局管理器。Android中的布局包括线性布局、表格布局、相对布局、帧布局和绝对布局。下面将分别对每个布局管理器进行详细的介绍。
3.1 控件类概述 39
3.1.1 View类简介 39
3.1.2 ViewGroup类简介 40
3.2 线性布局 40
3.2.1 LinearLayout类简介 40
3.2.2 线性布局案例 41
3.3 表格布局 43
3.3.1 TableLayout类简介 43
3.3.2 表格布局案例 44
3.4 相对布局 48
3.4.1 RelativeLayout类简介 49
3.4.2 相对布局案例 50
3.5 帧布局 51
3.5.1 FrameLayout类简介 51
3.5.2 帧布局案例 52
3.6 绝对布局 54
3.6.1 AbsoluteLayout类简介 54
3.6.2 绝对布局案例 54
3.7 小结 57
第4章 Android常用基本控件 58
本章将对进行用户界面开发时常用到的Android基本控件进行介绍,主要包括文本框、按钮、单选按钮和复选按钮、状态开关按钮和日期时间控件等。了解这些基本控件的工作方式有助于学习后面要介绍的Android中的高级控件。
4.1 文本控件的介绍 58
4.1.1 TextView类简介 58
4.1.2 EditText类简介 59
4.1.3 文本框使用案例 59
4.2 按钮控件 63
4.2.1 Button类简介 63
4.2.2 ImageButton类简介 66
4.2.3 9Patch图片简介 67
4.2.4 9Patch图片使用案例 68
4.3 状态开关按钮 70
4.3.1 ToggleButton类简介 70
4.3.2 开关按钮的使用 71
4.4 单选按钮与复选框 73
4.4.1 CheckBox和RadioButton类简介 73
4.4.2 单选按钮和复选框使用案例 74
4.5 图片控件 76
4.5.1 ImageView类简介 76
4.5.2 图片查看器 77
4.6 时钟控件 81
4.6.1 AnalogClock和DigitalClock类简介 81
4.6.2 时钟控件使用案例 81
4.7 日期与时间选择控件 82
4.7.1 DatePicker类简介 82
4.7.2 TimePicker类简介 82
4.7.3 日期时间控件使用案例 83
4.8 动画播放技术 85
4.8.1 帧动画简介 85
4.8.2 帧动画使用案例 85
4.8.3 补间动画简介 88
4.8.4 补间动画使用案例 89
4.9 小结 91
第5章 Android常用高级控件 92
上一章已经介绍了Android中的一些基本控件,本章将继续上一章的思路,对Android中常用的高级控件进行逐一介绍。
5.1 自动完成文本框 92
5.1.1 AutoCompleteTextView类简介 92
5.1.2 自动完成文本使用案例 92
5.2 滚动视图 94
5.2.1 ScrollView类简介 94
5.2.2 滚动视图使用案例 94
5.3 网格视图 95
5.3.1 GridView类简介 95
5.3.2 网格视图使用案例 95
5.4 列表视图 100
5.4.1 ListView类简介 100
5.4.2 列表视图使用案例 100
5.5 滑块与进度条 103
5.5.1 ProgressBar类简介 104
5.5.2 SeekBar类简介 104
5.5.3 滑块和进度条案例 104
5.6 星级滑块 105
5.6.1 RatingBar类简介 105
5.6.2 星级滑块使用案例 106
5.7 选项卡 107
5.7.1 TabHost类简介 107
5.7.2 选项卡使用案例 107
5.8 画廊控件 111
5.8.1 Gallery类简介 111
5.8.2 画廊控件使用案例 112
5.9 HorizontalScrollView控件 113
5.9.1 HorizontalScrollView类简介 114
5.9.2 HorizontalScrollView控件使用案例 114
5.10 下拉列表控件 116
5.10.1 Spinner类简介 116
5.10.2 下拉列表使用案例 116
5.11 小结 119
第6章 菜单与对话框 120
在前面的章节中介绍了Android平台开发用户界面时常用的基本控件与高级控件,但在实际开发中只运用这些控件是不够的。本章将介绍用户界面中菜单与对话框的开发,同时还会对Android平台下的Toast和Notification进行介绍。
6.1 菜单功能的开发 120
6.1.1 选项菜单和子菜单简介 120
6.1.2 选项菜单和子菜单使用案例 122
6.1.3 上下文菜单 127
6.2 对话框功能的开发 130
6.2.1 对话框简介 131
6.2.2 普通对话框 131
6.2.3 列表对话框 134
6.2.4 单选按钮对话框 136
6.2.5 复选框对话框 139
6.2.6 日期及时间选择对话框 141
6.2.7 进度对话框 145
6.3 消息提示 148
6.3.1 Toast的使用 148
6.3.2 Notification的使用 150
6.4 小结 153
第7章 Android事件处理模型 154
本章将对Android平台用户界面的各种事件响应进行详细介绍,以加深读者对Android平台的事件处理模型的理解,熟练掌握控件的各种事件处理方法。
Android平台的事件处理机制有两种,一种是基于回调机制的,一种是基于监听接口的,接下来会分别对其进行介绍。
7.1 基于回调机制的事件处理 154
7.1.1 onKeyDown方法简介 154
7.1.2 onKeyUp方法简介 156
7.1.3 onTouchEvent方法简介 157
7.1.4 onTrackBallEvent方法简介 159
7.1.5 onFocusChanged方法简介 160
7.2 基于监听接口的事件处理 162
7.2.1 Android的事件处理模型 162
7.2.2 OnClickListener接口简介 163
7.2.3 OnLongClickListener接口简介 165
7.2.4 OnFocusChangeListener接口简介 168
7.2.5 OnKeyListener接口简介 171
7.2.6 OnTouchListener接口简介 174
7.2.7 OnCreateContextMenuListener接口简介 176
7.3 Handler消息传递机制 177
7.3.1 Handler类简介 177
7.3.2 Handler使用案例 177
7.4 小结 180
高 级 篇
第8章 游戏与3D应用程序开发 181
Android平台下的应用开发,一般来说主要分为商业应用和游戏两种,在开发商业应用时主要会用到本书前面章节曾介绍过的控件和菜单对话框等知识,而开发游戏时就只能自己定义各种控件和界面了。本章将要介绍如何在Android平台下使用View和SurfaceView开发游戏,在本章的最后还将对Android平台下进行3D场景的开发进行简单的介绍。
8.1 自定义View的使用 181
8.1.1 MyView类的开发 181
8.1.2 MyThread类的开发 184
8.1.3 Activity部分代码的开发 185
8.2 SurfaceView的使用 186
8.2.1 GameView类的开发 187
8.2.2 BallGoThread类的开发 191
8.2.3 TimeThread类的开发 194
8.2.4 GameViewDrawThread类的开发 195
8.2.5 Sample_8_2类的开发 196
8.3 GLSurfaceView与3D 196
8.3.1 OpenGL ES简介 197
8.3.2 3D开发的基本知识 197
8.3.3 第一个3D图形示例 198
8.3.4 3D谷仓的开发 203
8.4 小结 208
第9章 消息广播与服务 209
本章将对Android的消息广播机制及服务组件进行详细介绍。在很多应用程序中,都会通过广播形式来发送和接收消息。当应用程序接收到消息后,一般启动一个Activity或者一个Service进行处理。本章将对之前介绍过的服务组件Service进行详细介绍,章末通过对一个单机版的音乐播放盒的介绍帮助读者掌握服务组件的使用方法。
9.1 BroadcastReceiver组件 209
9.1.1 BroadcastReceiver类简介 209
9.1.2 基于广播的案例 210
9.2 Service组件 213
9.2.1 Service类简介 213
9.2.2 基于服务的案例 213
9.3 单机版音乐盒的实现 217
9.4 小结 225
第10章 网络与数据处理 226
本章要介绍的内容是Android平台下进行网络编程及数据处理的相关知识,内容包括网络通信的几种方式(如使用Socket、URL、Socket等)、如何使用WebView浏览网页,以及文件的上传和下载。最后介绍访问手机存储卡的方法及如何在程序中使用SQLite数据库。
10.1 使用Socket进行通信 226
10.1.1 Socket服务端的开发 226
10.1.2 Socket客户端的开发 227
10.2 通过URL和HTTP请求获取网络资源 228
10.2.1 通过URL获取网络资源 228
10.2.2 通过HTTP请求网络资源 232
10.3 使用WebView进行网络开发 237
10.3.1 使用WebView浏览网页 237
10.3.2 使用WebView执行HTML代码 241
10.4 SQLite数据库 244
10.4.1 数据库的基本操作 244
10.4.2 个人通信录的实现之资源文件的组织和开发 245
10.4.3 个人通信录的实现之功能代码的开发 248
10.5 访问存储卡 253
10.5.1 获取存储卡容量 253
10.5.2 读取存储卡信息 256
10.6 小结 257
第11章 手机通信功能开发 258
本章将对Android手机通信功能的开发进行介绍,其中包括短信的收发及状态查询、电话的拨打与接听、来电的过滤和E-mail邮件的收发等,通过本章的学习,读者应该能够对Android平台手机通信功能有一定的了解。
11.1 短信控制 258
11.1.1 短信的发送 258
11.1.2 短消息提示 262
11.1.3 短消息群发 265
11.1.4 查询发送状态 270
11.2 电话控制 272
11.2.1 拨打电话 272
11.2.2 过滤电话 277
11.2.3 查询当前状态 278
11.3 E-mail相关功能开发 279
11.3.1 SMTP协议简介 280
11.3.2 发送E-mail 280
11.4 小结 280
第12章 手机特有Feature开发 281
本章将要介绍的是Android手机特有Feature的开发,主要包括响应系统设置更改事件、设置手机外观和其他的特性。同时还将介绍如何在程序中获取SIM卡和电池电量等信息,最后将以手机闹钟为例讲述如何自己开发特定功能的手机应用。
12.1 系统设置更改的事件 281
12.1.1 Configuration类简介 281
12.1.2 响应Configuration的变化 282
12.2 手机外观更改和提醒设置 284
12.2.1 手机壁纸的改变 285
12.2.2 手机振动的设置 288
12.2.3 音量调节 292
12.3 TelephonyManager的使用 296
12.3.1 TelephonyManager类简介 296
12.3.2 TelephonyManager的使用案例 296
12.4 手机电池电量 300
12.4.1 原理概述 300
12.4.2 电量提示案例 300
12.5 手机闹钟 302
12.5.1 AlarmManager简介 302
12.5.2 开发闹钟应用 302
12.6 小结 306
第13章 桌面组件与多媒体数据采集 307
本章将介绍Android中桌面组件及多媒体相关程序的开发,其中包括桌面快捷方式、桌面控件、声音及图像的采集等。
13.1 桌面组件的介绍 307
13.2 桌面快捷方式 307
13.2.1 通过应用程序创建快捷方式 307
13.2.2 向Launcher添加快捷方式 310
13.3 桌面控件 311
13.3.1 桌面控件概述 311
13.3.2 开发简单的桌面控件 312
13.4 多媒体数据采集 314
13.4.1 录音 314
13.4.2 图像采集 317
13.5 小结 321
第14章 传感器应用的开发 322
Android系统的一大亮点之一就是对传感器的应用,利用传感器可以开发出很多新奇有趣的程序,小到水平仪、计步器,大到传感器游戏,本章将详细介绍各种传感器的原理及使用方法,并通过一个水平仪的开发向读者介绍传感器应用的开发方法,以及如何在模拟器中模拟各种传感器。
14.1 Android平台下传感器简介 322
14.1.1 加速度传感器Accelerometer 322
14.1.2 姿态传感器Orientation 327
14.1.3 磁场传感器Magnetic Field 330
14.1.4 温度传感器Temperature 332
14.1.5 光传感器Light 335
14.2 传感器应用案例 336
14.2.1 开发前的准备工作 336
14.2.2 自定义View的开发 336
14.2.3 开发主逻辑代码 337
14.2.4 运行与调试 340
14.3 小结 341
第15章 Google服务 342
本章将介绍如何在Android平台下开发基于Google服务的应用程序。Google提供了诸如GPS定位、Google Map、天气预报、网络相册和在线翻译等多种服务,将这些服务融合到应用程序中将会带来非常好的用户体验。
15.1 使用GPS获取位置 342
15.1.1 LocationManager及相关类简介 342
15.1.2 获取位置信息案例 343
15.2 Google Map的使用 346
15.2.1 获取Map API Key 346
15.2.2 创建模拟器 348
15.2.3 Google Map地图查询应用 350
15.2.4 Google Map导航应用 355
15.3 Google街景 360
15.3.1 Android整合Google街景服务的原理 360
15.3.2 在程序中调用Google街景 361
15.4 小结 363
案 例 篇
第16章 Android游戏开发实践——快乐数独 364
益智类游戏是一种比较流行的游戏,其画面大都比较简单,很少有很复杂的游戏特效,但是通常用到人工智能的算法来控制游戏的难度。而算法的优化是开发该类游戏的难点。这类游戏主要包括棋牌类游戏和智力测试类游戏,例如麻将、扫雷、五子棋、扑克牌等。
数独就是益智游戏的一种,玩法简单但数字的排列方式千变万化,很多人认为数独是训练头脑的绝佳方式。本章通过讲解数独游戏在Android平台上的设计与实现,使读者了解此类游戏的开发过程,掌握实用的开发技巧,学会此类游戏的开发。
16.1 游戏的背景及功能概述 364
16.1.1 背景概述 364
16.1.2 功能简介 365
16.2 游戏的策划及准备工作 366
16.2.1 游戏的策划 366
16.2.2 Android平台下游戏的准备工作 366
16.3 游戏的架构 367
16.3.1 各类的简要介绍 367
16.3.2 游戏的框架简介 368
16.4 欢迎界面的设计与实现 369
16.4.1 主类KLSDActivity实现 369
16.4.2 欢迎界面WelcomeView类的实现 371
16.4.3 刷帧线程WelcomeViewDrawThread类的实现 374
16.4.4 动画生成线程WelcomeViewGo- Thread类的实现 375
16.5 “帮助”与“关于”界面的设计与实现 376
16.5.1 “帮助”界面HelpView类的实现 376
16.5.2 “关于”界面AboutView的实现 377
16.6 游戏界面的框架搭建 379
16.7 计时线程与数字键盘线程的开发 381
16.7.1 计时线程的开发 381
16.7.2 数字键盘线程的开发 382
16.8 数独生成器的开发 383
16.9 游戏界面逻辑方法的实现 385
16.9.1 初始化方法的完善 385
16.9.2 简单逻辑方法的完善 387
16.9.3 屏幕事件处理方法的完善 388
16.10 游戏界面绘画方法的完善 392
16.10.1 数字键盘的绘制方法drawKey ()的完善 392
16.10.2 绘画方法onDraw()的完善 393
16.11 游戏界面刷帧线程的实现 396
16.12 游戏的优化与改进 397
第17章 Android地图搜索应用——美食天下 398
第15章已经介绍了Google Map的简单使用,本章将通过之前介绍过的知识实现一个美食共享软件,其中包括服务端和手机端,希望通过本章的学习,读者能够掌握Android系统与Tomcat服务器的通信、Google地图的使用及各种控件的综合应用。
17.1 系统背景及功能概述 398
17.1.1 背景简介 398
17.1.2 功能概述 398
17.1.3 开发环境及目标平台 399
17.2 开发前的准备工作 400
17.2.1 数据库的设计 400
17.2.2 表的创建与记录插入 405
17.2.3 数据源的配置 406
17.3 Web端总体架构及功能预览 406
17.3.1 目录结构及系统框架 407
17.3.2 功能预览 408
17.4 Web端登录注册模块的实现 409
17.4.1 首页的搭建 409
17.4.2 用户注册功能的开发 415
17.4.3 用户登录功能的开发 420
17.4.4 用户注销功能的开发 422
17.5 Web端美食上传模块的实现 423
17.5.1 页面的搭建 423
17.5.2 图片上传组件FileUploadServlet的开发 426
17.5.3 DBUtil中相关方法的开发 428
17.6 Android端总体架构及功能预览 430
17.6.1 功能预览 430
17.6.2 总体架构 432
17.7 服务器的设计与实现 433
17.8 Android端登录界面的实现 436
17.8.1 开发前的准备工作 436
17.8.2 框架的搭建 437
17.8.3 监听方法的完善 440
17.8.4 记住密码功能的实现 442
17.8.5 服务器端的完善 443
17.9 Android端注册界面的实现 444
17.9.1 框架的搭建 444
17.9.2 监听方法的完善 446
17.9.3 服务器端的完善 447
17.10 Android端主界面MainActivity的实现 449
17.10.1 布局文件的开发 449
17.10.2 界面框架的搭建 450
17.10.3 初始化方法的完善 452
17.10.4 监听方法的完善 453
17.10.5 网络处理线程的实现 455
17.10.6 服务器端的完善 457
17.11 Android端地图界面的实现 460
17.11.1 布局文件的开发 461
17.11.2 地图界面的开发 461
17.12 美食信息界面的实现 464
17.13 系统的优化与改进 466
第18章 Android社交分享平台——口袋微博 467
本章将介绍社交分享平台——口袋微博的实现,该社交分享平台包括Web端和Android手机端两个部分。在介绍了整个系统的背景及功能架构之后,本书将对该系统在Web端和Android手机端的实现进行介绍。
18.1 系统背景及功能概述 467
18.1.1 背景简介 467
18.1.2 功能概述 467
18.1.3 开发环境和目标平台 468
18.2 开发前的准备工作 469
18.2.1 数据库设计 469
18.2.2 表的创建和测试数据的插入 474
18.2.3 数据源的配置 475
18.3 Web端功能预览及总体架构 476
18.3.1 Web端系统功能预览 476
18.3.2 系统目录结构 477
18.3.3 系统总架构 478
18.4 Web端主页的搭建 478
18.5 Web端登录注册模块的实现 480
18.5.1 用户登录功能的开发 480
18.5.2 用户注册功能的开发 483
18.5.3 用户注销功能的开发 486
18.6 查看和管理日志模块的实现 486
18.6.1 发布日志功能的开发 486
18.6.2 显示日志及评论功能的开发 488
18.6.3 编辑和删除日志功能的开发 490
18.7 查看和管理相册模块的实现 491
18.7.1 查看相册功能的开发 492
18.7.2 查看相册相片功能的实现 493
18.7.3 显示照片功能的实现 494
18.8 Android端功能预览及总体架构 495
18.8.1 Android端功能预览 495
18.8.2 Android端总架构 497
18.9 服务器的设计与实现 498
18.9.1 服务器的设计 498
18.9.2 服务器的实现 498
18.10 Android端的准备工作 501
18.10.1 图片资源的准备 501
18.10.2 XML资源文件的准备 501
18.11 登录注册模块的实现 503
18.11.1 登录模块的开发 503
18.11.2 记录账号密码功能的开发 508
18.11.3 服务器验证登录功能的实现 509
18.11.4 注册模块的开发 509
18.12 个人中心模块的实现 513
18.12.1 个人中心界面的开发 513
18.12.2 个人中心界面菜单功能的开发 515
18.13 快速发布模块的实现 516
18.13.1 发布日志和更新心情功能的实现 516
18.13.2 拍照上传界面的开发 518
18.13.3 UploadActivity通信功能的开发 522
18.14 查看联系人模块的实现 526
18.14.1 ContactsActivity界面的开发 526
18.14.2 ContactsActivity通信功能的开发 528
18.15 日志管理模块的实现 528
18.15.1 查看日志功能的开发 529
18.15.2 编辑日志功能的开发 531
18.16 相册管理模块的实现 531
18.16.1 相册查看和修改功能的实现 531
18.16.2 相片查看功能的实现 534
18.17 系统的优化与改进 536