第一篇 基础知识篇 1
第1章 Android系统概述 1
1.1 智能手机系统介绍 1
1.1.1 何谓智能手机 1
1.1.2 当前主流的智能手机操作系统 1
1.2 Android 5.0的新功能 2
1.3 Android的巨大优势 3
1.3.1 优点一——系出名门 3
1.3.2 优点二——强大的开发团队 3
1.3.3 优点三——诱人的奖励机制 4
1.3.4 优点四——开源 4
1.4 搭建Android应用开发环境 4
1.4.1 安装Android SDK的系统要求 5
1.4.2 安装JDK 5
1.4.3 获取并安装Eclipse和Android SDK 9
1.4.4 安装ADT 12
1.4.5 设定Android SDK Home 14
1.4.6 验证开发环境 15
1.4.7 创建Android虚拟设备(AVD) 16
1.4.8 启动AVD模拟器 19
1.5 第一段Android程序 20
1.5.1 新建Android工程 21
1.5.2 编写代码 21
1.5.3 调试 22
1.5.4 运行项目 24
第2章 Android网络开发基础 26
2.1 Android SDK帮助文档介绍 26
2.2 Android工程文件结构介绍 28
2.2.1 src目录 29
2.2.2 文件AndroidManfest.xml 29
2.2.3 定义常量的文件 30
2.3 Android中的数据存储方式 31
2.3.1 SharedPreferences存储 32
2.3.2 文件存储 34
2.3.3 SQLite存储 35
2.3.4 Content Provider存储 42
2.3.5 网络存储 45
2.4 访问操作SD卡(手机中的存储卡) 48
2.4.1 解决思路 49
2.4.2 具体实现 49
2.5 总结和网络开发有关的包 57
第二篇 核心技术篇 58
第3章 Java中的网络通信基础 58
3.1 Java中的网络包 58
3.1.1 InetAddress类详解 58
3.1.2 URLDecoder类和URLEncoder类 59
3.1.3 URL和URLConnection 59
3.1.4 Http URLConnection 64
3.2 Android网络接口 66
3.2.1 android.net.http中的类 67
3.2.2 实战演练——在手机屏幕中传递HTTP参数 67
第4章 下载、上传数据 73
4.1 下载网络中的图片数据 73
4.2 下载网络中的JSON数据 75
4.2.1 JSON基础 76
4.2.2 远程下载服务器中的JSON数据 77
4.3 下载某个网页的源码 82
4.4 多线程下载 85
4.4.1 多线程下载文件的过程 85
4.4.2 在Android系统中实现多线程下载 85
4.5 上传文件到远程服务器 102
4.6 GET上传数据 106
4.6.1 使用GET方式上传数据的流程 106
4.6.2 实战演练——采用GET方法向服务器传递数据 107
4.7 POST上传数据 111
第5章 Socket数据通信 117
5.1 Socket编程初步 117
5.1.1 TCP/IP基础 117
5.1.2 UDP 118
5.1.3 基于Socket的Java网络编程 118
5.2 TCP编程详解 119
5.2.1 使用ServletSocket 120
5.2.2 使用Socket 120
5.2.3 TCP中的多线程 123
5.2.4 实现非阻塞Socket通信 127
5.3 UDP编程 133
5.3.1 使用DatagramSocket 133
5.3.2 使用MulticastSocket 138
5.4 在Android中使用Socket实现数据传输 141
第6章 处理XML数据 145
6.1 XML技术基础 145
6.1.1 XML概述 145
6.1.2 XML的语法 145
6.1.3 获取XML文档 146
6.2 使用SAX解析XML数据 148
6.2.1 SAX的原理 148
6.2.2 基于对象和基于事件的接口 149
6.2.3 常用的接口和类 150
6.2.4 实战演练——在Android系统中使用SAX解析XML数据 153
6.3 使用DOM解析XML 156
6.3.1 DOM概述 156
6.3.2 DOM的结构 157
6.3.3 实战演练——在Android系统中使用DOM解析XML数据 158
6.4 PULL解析技术 161
6.4.1 PULL解析原理 161
6.4.2 实战演练——在Android系统中使用PULL解析XML数据 161
6.5 实战演练——三种解析方式的综合演练 164
第7章 WebKit浏览网页 174
7.1 WebKit类库介绍 174
7.1.1 主要类 174
7.1.2 使用内置浏览器打开网页 175
7.2 Android 5.0中的WebView 178
7.2.1 WebView架构基础 178
7.2.2 WebView类简介 181
7.2.3 WebViewProvider接口 183
7.2.4 WebViewChromium详解 186
7.2.5 WebViewChromiumFactoryProvider详解 187
7.2.6 AwContents架构 190
7.2.7 实现Mixed Content模式 193
7.2.8 引入第三方Cookie 194
7.2.9 实战演练——在手机屏幕中浏览网页 196
第三篇 技术提高篇 199
第8章 开发移动网页 199
8.1 第一段Android网页代码 199
8.1.1 编写HTML文件 199
8.1.2 编写CSS文件 200
8.1.3 控制页面的缩放 203
8.2 为Android中的网页添加CSS样式 203
8.2.1 编写基本的样式 203
8.2.2 添加视觉效果 206
8.3 为Android网页添加JavaScript特效 207
8.3.1 jQuery框架介绍 207
8.3.2 使网页支持动态行为 209
8.4 在Android网页中使用Ajax特效 211
8.5 使用第三方框架实现动画效果 217
8.5.1 一个开源框架——JQTouch 218
8.5.2 一个简单应用 218
8.6 为网页增加数据存储功能 226
8.6.1 在Android网页中使用Web Storage 226
8.6.2 在Android网页中使用Web SQL Database 231
第9章 开发蓝牙应用程序 240
9.1 蓝牙技术基础 240
9.1.1 蓝牙技术的发展历程 240
9.1.2 低功耗蓝牙的特点 240
9.1.3 低功耗蓝牙的架构 241
9.1.4 低功耗蓝牙分类 242
9.2 分析Android系统中的蓝牙模块 243
9.3 Android系统的低功耗蓝牙协议栈 244
9.3.1 Android低功耗蓝牙协议栈基础 244
9.3.2 低功耗蓝牙API详解 245
9.4 总结和蓝牙相关的类 275
9.4.1 BluetoothSocket类 276
9.4.2 BluetoothServerSocket类 276
9.4.3 BluetoothAdapter类 277
9.4.4 BluetoothClass.Service类 281
9.4.5 BluetoothClass.Device.Major类 281
9.4.6 BluetoothClass.Device类 282
9.4.7 BluetoothClass类 282
9.5 实战演练——开发一个蓝牙控制器 283
9.5.1 界面布局 283
9.5.2 响应单击按钮 284
9.5.3 和指定的服务器建立连接 286
9.5.4 搜索附近的蓝牙设备 287
9.5.5 建立和OBEX服务器的数据传输 290
9.5.6 实现蓝牙服务器端的数据处理 293
第10章 开发Wi-Fi应用程序 297
10.1 了解Wi-Fi系统的结构 297
10.1.1 Wi-Fi概述 297
10.1.2 Wi-Fi层次结构 297
10.2 常用的Wi-Fi接口 299
10.2.1 WifiManger接口 299
10.2.2 WifiService接口 299
10.2.3 WifiWatchdogService接口 300
10.2.4 实战演练——在Android系统中控制Wi-Fi 300
第11章 NFC近场通信技术详解 309
11.1 近场通信技术基础 309
11.1.1 NFC技术的特点 309
11.1.2 NFC的工作模式 309
11.1.3 NFC和蓝牙的对比 310
11.2 射频识别技术详解 311
11.2.1 RFID技术简介 311
11.2.2 RFID技术的组成 311
11.2.3 RFID技术的特点 312
11.2.4 RFID技术的工作原理 313
11.3 Android系统中的NFC 313
11.3.1 分析Java层 314
11.3.2 分析JNI部分 330
11.3.3 分析底层 335
11.4 在Android系统中开发NFC App的方法 335
11.5 实战演练——使用NFC发送消息 338
第12章 开发电子邮件应用程序 344
12.1 在Android中发送邮件的方式 344
12.1.1 使用Intent方式 344
12.1.2 使用SmsManager收发邮件 350
12.2 向本地联系人发送邮件 358
12.2.1 界面布局 358
12.2.2 编写主程序文件 360
第13章 Android网络典型应用实践 365
13.1 测试网络下载速度 365
13.2 通过Hander实现异步消息处理 369
13.2.1 实现HTTP通信和XML解析的演示 370
13.2.2 使用Handler实现异步消息处理 375
13.3 实现网络多线程断点下载 380
13.3.1 实现原理 380
13.3.2 具体实现 381
13.4 判断当前网络中GPRS和Wi-Fi的状态 394
13.4.1 ConnectivityManager类和NetworkInfo类 394
13.4.2 在程序启动时对网络状态进行判断 397
13.5 开启或关闭APN 398
第14章 开发移动微博应用程序 402
14.1 微博介绍 402
14.2 微博开发必备技术介绍 403
14.2.1 XML-RPC技术 403
14.2.2 Meta Weblog API客户端 405
14.3 分析腾讯Android版微博API 405
14.3.1 源码和jar包下载 405
14.3.2 具体使用 406
14.4 详解Android版新浪微博 410
14.4.1 新浪微博图片缩放的开发实例 412
14.4.2 添加分享到新浪微博 418
14.4.3 通过JSON对象获取登录新浪微博 423
14.4.4 实现OAuth认证 425
14.4.5 获取用户信息 427
14.4.6 关注用户 429
14.4.7 实现收藏功能 431
14.4.8 实现微博操作功能 432
第15章 开发Web版的电话本管理系统 438
15.1 需求分析 438
15.1.1 产生背景 438
15.1.2 功能分析 438
15.2 创建Android工程 439
15.3 实现系统主界面 440
15.4 实现信息查询模块 442
15.5 实现系统管理模块 444
15.6 实现信息添加模块 448
15.7 实现信息修改模块 451
15.8 实现信息删除模块和更新模块 453
第16章 开发移动微信系统 455
16.1 微信系统基础 455
16.1.1 微信的特点 455
16.1.2 微信和Q信的关系 455
16.2 使用Android ViewPager 456
16.3 开发一个微信系统 462
16.3.1 启动界面 462
16.3.2 系统导航界面 463
16.3.3 系统登录界面 472
16.3.4 发送信息界面 477
16.3.5 摇一摇界面 481
第四篇 综合实战篇 490
第17章 开发仿陌陌交友系统 490
17.1 陌陌介绍 490
17.1.1 陌陌发展现状 490
17.1.2 陌陌特点介绍 490
17.2 实现系统欢迎界面 491
17.2.1 欢迎界面布局 492
17.2.2 欢迎界面Activity 495
17.3 实现系统注册界面 497
17.3.1 注册界面布局 498
17.3.2 注册界面Activity 500
17.3.3 输入验证码界面Activity 506
17.3.4 设置密码界面Activity 509
17.3.5 设置用户名界面Activity 512
17.3.6 设置生日界面Activity 514
17.3.7 设置头像界面Activity 516
17.4 实现系统主界面 520
17.4.1 主界面布局 521
17.4.2 实现主界面Activity 522
17.4.3 实现“附近的人”界面 523
17.4.4 实现“附近的群组”界面 527