首页>参考读物>计算机科学与技术>软件与程序设计

深入理解Android网络编程:技术详解与最佳实践
作者 : 陈文 郭依正 著
出版日期 : 2013-08-19
ISBN : 978-7-111-43502-0
定价 : 69.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 377
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

这是一本Android网络编程方面的专著,旨在帮助开发者们高效地编写出高质量的Android网络应用。不仅系统讲解了Android网络编程的各项核心技术和功能模块,通过多个案例解读了Android网络编程的方法和技巧,而且从源码角度深入解析了Android核心网络处理方法和关键应用的实现原理,包含大量最佳实践。
全书共11章,分为三个部分:概述篇(第1章)在介绍了Android开发平台后,重点讲解了Android网络程序的功能及开发环境的配置,引领读者走进Android网络编程的大门;实战篇(2~8章),详细讲解了TCP、UDP、HTTP等基本网络协议在Android上的应用,展示了使用Android处理JSON、SOAP、HTML、XML等数据的方法,讲解了Android中的RSS编程、Email编程、OAuth认证等,解析了Android中Locations、Maps、USB、Wi-Fi、Bluetooth、NFC等网络模块的编程,讨论了Android中线程、数据存取、消息缓存、界面更新等的处理方法;探讨了SIP、XMPP等协议在Android上的应用;源码分析篇(9~11章)分析了Android中与HTML处理、网络处理以及部分网络应用相关的源代码,读者可以从底层原理上加深对相关知识点的理解。

图书特色

Android包含的功能模块非常多,每一个模块都值得开发者们深入研究和学习,网络模块就是其中之一,而且它还相当复杂。机械工业出版社华章分社的Android系列图书规划得既专又精,继之前的探讨Telephony的专著,又推出了这本关于网络编程的专著。本书本着解决实际问题和解释原理两大目标,首先通过若干案例讲解了Android网络编程的核心技术和功能模块,然后对其中的核心网络处理方法和关键应用的源代码进行了分析,让读者能在知其然的同时也知其所以然。
—— 51CTO移动开发频道(http://mobile.51cto.com/)

如果按功能模块划分,Android系统包含通信、多媒体和网络等若干个模块,其中网络模块尤为重要且复杂,因为所有App都必须具备联网的功能。对于所有Android开发工程师而言,如果想开发出高质量的App,就必须掌握Android网络编程的技术和原理。本书对Android系统的网络功能进行了系统梳理,并结合案例,从编程的角度讲解了各项功能的技术原理和开发方法,不仅能很好地解决开发者们遇到的实际问题,还能帮助他们透彻掌握核心技术点的实现原理。
—— 安卓巴士(http://www.apkbus.com/) 做最好的Android开发社区

Android是为网络而生的, 自身也推动了网络的发展,并在移动互联网领域中占有主导地位;Android中的绝大部分应用都包含网络编程。对Android开发工程师来说,Android网络编程是其必修课,只有在掌握了网络编程之后,才能开发出适合Android系统的互联网应用,最大程度地挖掘Android系统的潜力。本书的主要特色在于,较全面地讲解了Android网络编程中实现常用网络协议的原理;通过大量实例展示了Android中网络模块的使用方法;系统分析了Android中常用网络协议的源代码。旨在通过原理、实例和源代码,多个角度帮助读者理解Android网络编程的核心技术。
—— eoe移动开发者社区(www.eoe.cn)
做最棒的移动开发者社区



作者简介
陈文 资深Android开发工程师,深入分析过Android系统的源代码,对Android系统的底层原理有非常深入的认识,尤其是与网络编程相关的功能模块。精通XMPP协议和企业级云端系统的构建,现从事移动互联网系统的框架设计和研发工作。此外,他对Java、HMTL 5、Web数据挖掘、个性化搜索引擎等技术也有一定的研究。

图书前言

为什么要写这本书
  随着Android平台市场占有率的稳步上升,Android应用的数量和种类越来越多,涉及的范围也越来越大。从单机应用发展到联网应用,再到云端体系,其发挥的作用越来越重要。
  Android移动开发领域正处在一个转折点:移动用户的需求日益增长,他们希望在移动终端上拥有一个永远在线的个人管理中心;开发者希望手机成为互联网移动终端,以扩展互联网应用的广度和深度;企业希望在手机平台上实现更多的管理和应用,随时随地保持沟通,进而使企业低成本、高效率地运营。这些需求更多地表现在Android的互联网应用方面,其技术核心正是Android网络编程的相关知识。
  不断扩展网络相关应用是Android平台的主要方向,Android网络编程不但能够实现信息的实时交互、在线存储和计算等基础应用,甚至可以实现移动办公、电子商务等复杂逻辑,进而实现无处不在的移动应用。Android开发者们了解Android网络编程相关的知识,将能更加快速高效地编写Android网络应用。通过本书能和大家一起来分享和探讨这些内容,笔者自觉是一件非常有意义的事情。
读者对象
  本书适合于以下读者阅读:
  Android移动互联网开发者;
  希望了解Android网络编程,利用Android平台实现网络应用的个人;
  开设相关课程的大专院校师生及科研工作者。
如何阅读本书
  全书共分为三个部分。
  第一部分为概述篇,即第1章,这部分在简介了Android开发平台后,重点讲解了Android网络程序的功能及开发环境的配置,引导读者走进Android网络编程的大门。
  第二部分为实战篇,包括第2章到第8章,这部分介绍了基本的网络协议TCP、UDP、HTTP等在Android上的应用;讲解了使用Android处理JSON、SOAP、HTML、XML等数据的方法,同时讲解了Android中的RSS编程、Email编程、OAuth认证等;解析了Android中Locations、Maps、USB、Wi-Fi、Bluetooth、NFC等网络模块的编程;讨论了Android中线程、数据存取、消息缓存、界面更新等的处理方法;探讨了SIP、XMPP等协议在Android上的应用。
  第三部分为源码分析篇,包括第9章到第11章,这部分分析了Android中与HTML处理、网络处理以及部分网络应用相关的源码。读者通过阅读这部分内容,可以进一步加深对相关知识点的理解。
  以下是各章内容的分述:
  第1章:认识Android和Android网络程序的工作原理,简单介绍Android的发展、功能特性、系统构架,重点讲解Android网络编程和设置Android开发环境,探讨用Android编写网络程序的一般步骤并给出简单的Android网络编程的实践案例。
  第2章:介绍支撑Internet的TCP/IP网络模型,重点讨论其中的TCP、UDP协议,讲解基于TCP及UDP协议的Socket编程,并通过聊天程序、FTP客户端及Telnet客户端等案例讲解Socket编程的实践方法。
  第3章:介绍HTTP协议,讨论如何使用Android处理JSON、SOAP、HTML。案例部分给出了基于HTTP协议的文件上传、使用HttpClient和URLConnection访问维基百科、JSON解析wikipedia内容、SOAP解析天气服务及Android自定义打开HTML页面等内容。
  第4章:介绍Android解析XML文件的三种方式,即DOM、SAX、PULL,讨论Android中RSS编程、Email编程等,同时还介绍与Android安全相关的知识,重点讲解Android加密解密及OAuth认证。
  第5章:介绍Android中常用的网络编程组件,包括解析Locations、Maps、USB、Wi-Fi、Bluetooth等重要通信接口在Android上的使用方法,并结合具体案例介绍这些接口的一般使用方法。
  第6章:介绍Android线程机制以及数据存取、消息缓存、UI同步的方法。在线程部分重点讲解利用AsyncTask实现Android多线程应用开发;在数据存取部分介绍Shared Preferences、Internal Storage、External Storage、SQLite Database及Network Connection等5种存储永久性应用程序数据的方法;在消息缓存部分介绍Android本地存储的缓存机制;在UI同步部分讲解了在加载数据前、刷新数据时、完成任务时更新界面的方法。
  第7章:介绍如何使用SIP协议构建VoIP应用。详细阐述了使用Brekeke SIP Server搭建SIP服务器的方法,从设置应用程序的权限到初始化和监听SIP通话,逐步介绍Android中实现SIP通话的一般步骤。
  第8章:介绍如何使用XMPP协议在Android上建立即时通信应用。包括如何使用Openfire搭建XMPP服务器,客户端如何使用Asmack登录服务器。
  第9章:分析Android中与HTML处理相关的源码。重点讲解WebView对HTML文档的处理,涉及WebView加载入口的分析及在WebView中如何调用JavaScript等。同时解析WebKit内核,分析WebKit下一些比较重要的类。
  第10章:分析Android中与网络处理相关的源码。重点分析Android网络处理的流程,包括网络状态监控、网络认证、DHCP处理、网络代理等相关内容。此外,介绍AndroidHttpClient及SSL认证,分析与RTP协议和SIP协议相关的源码。
  第11章:分析Android中部分与网络应用相关的源码。重点分析Android中使用SAX方式解析XML时如何发现XML根元素与子元素,讲解Android中如何实现基于位置的服务,同时简介媒体传输协议(MTP)的概念,对MTP设备、MTP设备上的对象与存储单元等进行具体分析。
  本书内容涉及面广、知识点多,案例部分包括现实中网络开发经常遇到的问题。我们不期望读者通过这一本书就能全面掌握Android的网络编程,但是如果读者能够耐心地从头到尾多读几遍,相信您一定有所收获。如果我们的书能对您有所启迪,我们再辛苦地写作也是值得的。
勘误和支持
  除了陈文和郭依正之外,翟旭军、郭里城、潘道远、周巧扣、章莉、陈海光等也参与了资料的整理和示例的收集等工作。书中源代码大多都是一些代码片段,笔者认为提供电子版下载意义不大,故未专门设置下载链接,若有读者需要可发邮件至book@chenwen.org,笔者会逐一回复,提供所需相应电子版源代码。由于作者的水平有限,加之编写时间仓促,书中难免会出现不足和错误之处,恳请广大读者批评指正。如果您有什么宝贵意见,欢迎您发送邮件至我的邮箱或者到我的博客(http://chenwen.org)上和我一起探讨,期待能够得到你们的真挚反馈。
致谢
  首先要感谢Android,没有开源的Android系统就没有现在如此丰富的移动网络生活,当然也就没有这本书。
  感谢和我一起编写本书的南京师范大学泰州学院的郭依正老师,全书内容是我们共同的劳动结晶,他丰富的教学经验和严谨的写作风格使我受益匪浅。
  感谢在我编程成长中每一位给我力量的朋友:陈亚必、张怀锋、程晓节、李国财、曾旭、孙明坤、孙正然、朱鹏飞、张家荣、曹文、何伟伟、高志立、罗衎、于勇、刘伟、耿飙、梁成全、王超、王军、顾同跃、贺强、周亮、尤慧丽等,以及名单之外的更多热爱Android的朋友们,感谢你们对我的启发和帮助。感谢苗忠良老师的引荐,在您的努力下才促成了这本书的合作与出版。
  我要特别感谢机械工业出版社华章分社的编辑杨福川老师和孙亮海老师,在这一年多的时间中是你们始终支持着我们的写作,你们的鼓励和帮助引导我们顺利完成了全部书稿。
  感谢我亲爱的兄弟姐妹:郑琴、郑邮生、万骞谦、陈莉、戴亚,感谢你们陪伴我一同成长,为我平淡的生活增添了无尽的色彩。
  最后感谢我的父亲陈新明、母亲郑秀兰,感谢你们赋予我生命,将我培养成人,并给我最好的帮助。
  谨以此书献给我最亲爱的家人,以及众多热爱Android的朋友们!

陈 文

上架指导

计算机\程序设计

封底文字

(加eoe、安卓巴士和51cto的logo)
Android包含的功能模块非常多,每一个模块都值得开发者们深入研究和学习,其中网络模块就是其中之一,而且它还相当复杂。机械工业出版社华章分社的Android系列图书规划得既专又精,继之前的探讨Telephony的专著,又推出了这本关于网络编程的专著。本书本着解决实际问题和解释原理的两大目标,首先通过若干案例讲解了Android网络编程的核心技术和功能模块,然后对其中的核心网络处理方法和关键应用的源代码进行了分析,让读者能在知其然的同时也知其所以然。
——51CTO移动开发频道(http://mobile.51cto.com/)
如果按功能模块划分,Android系统包含通信、多媒体和网络等若干个功能模块,其中网络模块尤为重要且复杂,因为所有App都必须具备联网的功能。对于所有Android开发工程师而言,如果想开发出高质量的App,就必须掌握Android网络编程的技术和原理。本书对Android系统的网络功能进行了系统梳理,结合案例,从编程的角度讲解了各项功能的技术原理和开发方法,不仅能很好地解决开发者们遇到的实际问题,而且还能帮助他们透彻掌握核心技术点的实现原理。
安卓巴士(http://www.apkbus.com/) 做最好的Android开发社区
说明:加上阅读路线图,同《深入理解Android:卷II》

作者简介

陈文 郭依正 著:暂无简介

图书目录


前言
第一篇 概述篇
第1章 Android网络编程概要 2
1.1 Android简介 2
1.1.1 Android的发展 2
1.1.2 Android功能特性 3
1.1.3 Android系统构架 4
1.2 Android网络程序的功能 6
1.2.1 通信功能 6
1.2.2 及时分享 6
1.2.3 个人管理 6
1.2.4 娱乐游戏 7
1.2.5 企业应用 7
1.3 设置Android开发环境 7
1.3.1 相关下载 7
1.3.2 安装ADT 9
1.3.3 Hello World! 11
1.4 网络应用实战案例 17
1.4.1 加载一个页面 17
1.4.2 下载一个页面 21
1.5 小结 21
第二篇 实战篇
第2章 Android基本网络技术和编程实践 24
2.1 计算机网络及其协议 24
2.1.1 计算机网络概述 24
2.1.2 网络协议概述 25
2.1.3 IP、TCP和UDP协议 26
2.2 在Android中使用TCP、UDP协议 31
2.2.1 Socket基础 31
2.2.2 使用TCP通信 34
2.2.3 使用UDP通信 36
2.3 Socket实战案例 39
2.3.1 Socket聊天举例 39
2.3.2 FTP客户端 41
2.3.3 Telnet客户端 44
2.4 小结 46
第3章 Android基本Web技术和编程实践 47
3.1 HTTP协议 47
3.1.1 HTTP简介 47
3.1.2 实战案例:基于HTTP协议的文件上传 51
3.2 Android中的HTTP编程 57
3.2.1 HttpClient和URLConnection 57
3.2.2 Post和Get在HttpClient的使用 58
3.2.3 实战案例:使用HttpClient和URLConnection访问维基百科 60
3.3 Android处理JSON 64
3.3.1 JSON简介 64
3.3.2 JSON数据解析 65
3.3.3 JSON打包 67
3.3.4 实战案例:JSON解析wikipedia内容 68
3.4 Android处理SOAP 71
3.4.1 SOAP简介 71
3.4.2 SOAP消息 72
3.4.3 实战案例:SOAP解析天气服务 74
3.5 Android对HTML的处理 79
3.5.1 解析HTML 79
3.5.2 HTML适配屏幕 80
3.5.3 JavaScript混合编程 81
3.5.4 实战案例:Android自定义打开HTML页面 87
3.6小结 91
第4章 Android常见网络接口编程 92
4.1 Android解析和创建XML 92
4.1.1 XML简介 92
4.1.2 DOM解析XML 97
4.1.3 SAX解析XML 102
4.1.4 PULL解析XML 108
4.1.5 实战案例:Android中创建XML 110
4.2 Android订阅RSS 113
4.2.1 RSS简介 113
4.2.2 实战案例:简单RSS阅读器 115
4.3 Android Email编程 122
4.3.1 Android发送Email 122
4.3.2 实战案例:Android下Email的Base64加密 123
4.4 Android网络安全 125
4.4.1 Android网络安全简介 125
4.4.2 Android加密和解密 127
4.4.3 实战案例:Android应用添加签名 133
4.5 OAuth认证 135
4.5.1 OAuth简介 135
4.5.2 实战案例:使用OAuth接口 137
4.6 小结 139
第5章 Android网络模块编程 141
5.1 Android地图和定位 141
5.1.1 获取map-api密钥 141
5.1.2 获取位置 144
5.1.3 实战案例:利用MapView显示地图 146
5.2 USB编程 150
5.2.1 USB主从设备 150
5.2.2 USB Accessory Mode 151
5.2.3 USB Host Mode 157
5.2.4 实战案例:Android和Arduino交互 159
5.3 Wi-Fi编程 168
5.3.1 Android Wi-Fi相关类 168
5.3.2 Android Wi-Fi基本操作 171
5.3.3 实战案例:使用Wi-Fi直连方式传输文件 177
5.4 蓝牙编程 185
5.4.1 蓝牙简介 185
5.4.2 Android蓝牙API分析 185
5.4.3 Android蓝牙基本操作 187
5.4.4 实战案例:蓝牙连接 192
5.5 NFC编程简介 197
5.5.1 NFC技术简介 197
5.5.2 NFC API简介 198
5.5.3 NFC处理流程分析 199
5.6 小结 205
第6章 Android线程、数据存取、缓存和UI同步 206
6.1 Android线程 206
6.1.1 Android线程模型 206
6.1.2 异步任务类 211
6.1.3 实战案例:利用AsyncTask实现多线程下载 213
6.2 数据存取 214
6.2.1 Shared Preferences数据存储 215
6.2.2 Internal Storage数据存储 216
6.2.3 External Storage数据存储 217
6.2.4 SQLite Databases数据存储 219
6.2.5 实战案例:SQLite数据库操作 220
6.3 网络判定 227
6.3.1 判断用户是否连接 228
6.3.2 判断网络连接的类型 228
6.3.3 监控网络连接改变 228
6.3.4 实战案例:根据广播消息判断网络连接情况 228
6.4 消息缓存 230
6.4.1 Android中的缓存机制 230
6.4.2 实战案例:下载、缓存和显示图片 231
6.5 界面更新 236
6.5.1 刷新数据时的界面更新 236
6.5.2 完成任务时的界面更新 237
6.5.3 实战案例:自定义列表显示更新 238
6.6 小结 248
第7章 基于SIP协议的VoIP应用 249
7.1 SIP协议简介 249
7.2 SIP服务器搭建 250
7.2.1 下载安装Brekeke SIP Server 250
7.2.2 访问服务器 251
7.2.3 启动服务器 252
7.3 SIP程序设置 253
7.3.1 Android SIP API中的类和接口 253
7.3.2 Android极限列表 253
7.3.3 完整的Manifest文件 254
7.4 SIP初始化通话 255
7.4.1 SipManager对象 255
7.4.2 SipProfile对象 256
7.5 监听SIP通话 257
7.5.1 创建监听器 258
7.5.2 拨打电话 258
7.5.3 接收呼叫 259
7.6 实战案例:SIP通话 261
7.7 小结 270
第8章 基于XMPP协议的即时通信应用 271
8.1 XMPP协议简介 271
8.2 使用Openfire搭建XMPP服务器 272
8.3 登录XMPP服务器 276
8.3.1 Asmack相关类 276
8.3.2 登录XMPP服务器 277
8.4 联系人相关操作 279
8.4.1 获取联系人列表 279
8.4.2 获取联系人状态 280
8.4.3 添加和删除联系人 280
8.4.4 监听联系人添加信息 281
8.5 消息处理 282
8.5.1 接收消息 282
8.5.2 发送消息 283
8.6 实战案例:XMPP多人聊天 283
8.6.1 创建新多人聊天室 284
8.6.2 加入聊天室 286
8.6.3 发送和接收消息 287
8.7 小结 288
第三篇 源码分析篇
第9章 Android对HTML的处理 290
9.1 Android HTML处理关键类 290
9.2 HTMLViewer分析 292
9.3 浏览器源代码解析 296
9.3.1 WebView加载入口分析 296
9.3.2 调用JavaScript接口 299
9.4 WebKit简单分析 300
9.4.1 HTTP Cache管理 300
9.4.2 Cookie管理 301
9.4.3 处理HTTP认证以及证书 302
9.4.4 处理JavaScript的请求 302
9.4.5 处理MIME类型 305
9.4.6 访问WebView的历史 306
9.4.7 保存网站图标 306
9.4.8 WebStorage 306
9.4.9 处理UI 307
9.4.10 Web设置分析 309
9.4.11 HTML5音视频处理 309
9.4.12 缩放和下载 311
9.4.13 插件管理 311
9.5 小结 313
第10章 Android网络处理分析 314
10.1 Android网络处理关键类及其说明 314
10.2 Android网络处理流程 315
10.2.1 监控网络连接状态 315
10.2.2 认证类 316
10.2.3 DHCP状态机 317
10.2.4 LocalServerSocket 318
10.2.5 响应邮件请求 320
10.2.6 提供网络信息 323
10.2.7 Proxy类 324
10.2.8 VPN服务 325
10.3 Android封装的HTTP处理类 326
10.3.1 AndroidHttpClient类和DefaultHttpClient类 326
10.3.2 SSL认证信息处理类 327
10.3.3 SSL错误信息处理 328
10.3.4 AndroidHttpClient 328
10.4 Android RTP协议 329
10.4.1 传输音频码 330
10.4.2 AudioGroup 331
10.4.3 语音流RtpStream和AudioStream 332
10.5 Android SIP协议 333
10.5.1 SIP通话简介 334
10.5.2 SIP初始化 335
10.5.3 SipProfile 336
10.5.4 SipSession 337
10.5.5 SIP包错误处理 338
10.6 小结 339
第11章 Android网络应用分析 340
11.1 Android中使用SAX解析XML 340
11.1.1 几种XML解析方式讨论 340
11.1.2 SAX解析XML的原理 341
11.1.3 SAX发现XML的根元素 342
11.1.4 SAX发现XML的子元素 345
11.2 基于位置的服务 348
11.2.1 位置服务的基本概念 348
11.2.2 位置服务的基本类 348
11.2.3 调用Google地图 350
11.2.4 根据位置刷新地图显示 351
11.3 媒体传输协议 353
11.3.1 MTP和PTP简介 353
11.3.2 定义MTP和PTP的类型 354
11.3.3 封装MTP设备信息 357
11.3.4 封装MTP对象的信息 358
11.3.5 封装MTP设备上存储单元的信息 360
11.4 小结 362

教学资源推荐
作者: 郑阿奇
作者: 郑阿奇
作者: Brian W.Kernigham
作者: John R.Hubbard
参考读物推荐
作者: (美)Bijay K. Jayaswal Peter C. Patton 著
作者: 马延辉 陈书美 雷葆华 著
作者: 张文亮 编著
作者: (美)Harvey M.Deitel 等