android网络编程

第一篇 概述篇
第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 安装ADT9
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

在Android中可以使用第三方库来操作FTP,这里使用Apache的包,下载地址http://commons.apache.org/net/download_net.cgi 文件名为commons-net-3.2-bin.zip

使用ftp通信步骤

1、 import org.apache.commons.net.ftp.FTPClient;//引入FTP客户端

2. mFtp = new FTPClient();//初始化FTPClient

3. mFtp.connect(FTP_URL,21);//设置登陆地址和端口号   

4. mFtp.login(name,password);//设置登陆用户名和秘密

5. mFtp.setFileType(FTP.BINARY_FILE_TYPE);//设置文件类型和采用被动传输方式

mFtp.enterLocalPassiveMode();

6. boolean aRtn = mFtp.storeFile(remoteFileName,aInputStream);//传输文件

7. mFtp.disconnect(); //关闭连接

2.3.3 Telnet客户端44

第三方库下载地址:http://commons.apache.org/net/download_net.cgi 文件名为commons-net3.2-bin.zip

代码如下:

 import org.apache.commons.net.telnet.TelnetClient;

TelnetClient tc = new TelnetClient();//初始化TelnetClient

tc.connect(remoteip,remoteport);//打开连接

tc.getInputStream();

tc.getOutputStream();//读写数据

telnet.disconnect();//断开telnet连接

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和URLConnection57
3.2.2 Post和Get在HttpClient的使用58
3.2.3 实战案例:使用HttpClient和URLConnection访问维基百科60
3.3 Android处理JSON64
3.3.1 JSON简介64
3.3.2 JSON数据解析65
3.3.3 JSON打包67
3.3.4 实战案例:JSON解析wikipedia内容68
3.4 Android处理SOAP71
3.4.1 SOAP简介71
3.4.2 SOAP消息72
3.4.3 实战案例:SOAP解析天气服务74
3.5 Android对HTML的处理79
3.5.1 解析HTML79
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解析和创建XML92
4.1.1 XML简介92

XML最大的特点是标签没有被预定义,用户需要自行定义标签。

     1 XML元素的命名规则:

            1名称可以包含字母、数字以及其他的字符;但不能一数字或者标点符号开始,下划线除外

            2 名称不能以xml(XML,Xml,xmL等)开始

            3  名称不能包含空格

            4. 可以使用任何名称,没有保留的字词。

        2. XML文档必须有根元素

        3. 每个开始标签必须有一个结束标签

        4. 所有标签都要区分大小写

        5. 所有标签都必须合理嵌套

        6. 所有标签的属性值都必须用双引号或者单英华阔起来

        7. XML中的空格问题

        8. 关于XMl实体引用问题

                 

实体引用

符号

含义

<

小于号

>

大于号

&

&

和号

'

单引号

"

引号

 

 

格式形式良好:

1.XML声明

2. XML文档类型

3. 元素

4. XML注释

5. XML处理

 
4.1.2 DOM解析XML97

DOM解析XML文件时,会将XML文件的所有内容以文档树的方式放入内存中,然后允许用户使用DOM  API遍历XMl树,检索所需要的数据。
4.1.3 SAX解析XML102

SAX(Simple API for XML)是基于事件驱动的,边加载边解析。
4.1.4 PULL解析XML108

PULL解析XML的方式与SAX解析XML的方式一样,也是基于事件驱动的。
4.1.5 实战案例:Android中创建XML110


4.2 Android订阅RSS113
4.2.1 RSS简介113

简易信息聚合。

RSS是一种描述和同步网站内容的格式,用于与其他站点之间共享内容,发布感兴趣的信息。
4.2.2 实战案例:简单RSS阅读器115
4.3 Android Email编程122
4.3.1 Android发送Email122
4.3.2 实战案例:Android下Email的Base64加密123
4.4 Android网络安全125

      4.4.1 Android网络安全简介125

应用层主要涉及代码安全和接入全新啊;

        应用框架层涉及数字证书问题;

        Android系统库与运行时一层主要涉及网络安全、数据库安全和虚拟机安全;

        linux内核涉及文件访问控制等。

         其中Android最主要的安全设计在于沙箱和权限。

      1. 代码安全

          因为Android的源代码源于Java,因此存在代码反编译的隐患。为了提高代码及的安全性能,程序员应尽量减少客户端代码中敏感内容,或者使用JNI技术,对敏感代码采用C/C++实现。

       2. 接入权限

           android计入权限包括:

      Normal权限:不会给用户带来实质性的伤害,如调整背光。

              Dangerous权限:可能会给用户带来潜在性的伤害。

              signature权限:具有统一签名的应用才能访问

             signatureOrSystem权限:主要有设备商使用,不推荐使用。

      3. 数字证书

          数字证书的最大用途是应用升级和设置应用间通信的权限。

      4. 网络安全

       5. 数据库安全

           Android采用的SQLite目前采用明文存储数据,安全设计加密,读写,搜索等。Android SQLite的权限有:android:permission/android:readPermission , android:writePermission

      6. 虚拟机(安全沙箱)

      7. 文件访问控制

            分区层面:分区的用户权限在init.rc中定义

           单独文件:单独文件访问权限控制分为群组、用户、权限。


4.4.2 Android加密和解密127

         加密算法分为:对称加密(DES,AES)

                                      非对称加密(RSA)

                                     和单项加密(MD5)


4.4.3 实战案例:Android应用添加签名133

           打包签名:右击项目-->单机“Export Signed Application Package”


4.5 OAuth认证135
4.5.1 OAuth简介135

   1. OAUTH认证特点

      OAUTH是一个开放标准,允许用户让第三方访问改用户 在某一网站上存储的私有资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。

     OAUTH协议为用户资源的授权提供一个安全的,开放而又简易的标准。基于OAUTH的认证授权有以下特点。

       1. 安全

        2. 开放

      3. 简易

  2. OAuth认证授权的过程

   3. 获取OAUTH授权

        
4.5.2 实战案例:使用OAuth接口137


4.6 小结139
第5章 Android网络模块编程141

5.1 Android地图和定位141

地图包是com.google.android.maps,位置包是android.location 。这些api通过internet从Google服务器调用服务。

5.1.1 获取map-api密钥141

1. 安装Google Map API,之后Android中的地图可以归结为使用MapView控件和MapActivity。

2. 在使用MapView之前需要从Google获取一个map-api密钥供Android与Googlemap 交互。

5.1.2 获取位置144
5.1.3 实战案例:利用MapView显示地图146
5.2 USB编程150

5.2.1 USB主从设备150

       USB是一种主从结构。主机称为Host(主机),从机称为Device(设备)。USB的数据交换智能发生在主机和设备之间,主机和主机,设备和设备之间不能互连。

5.2.2 USB Accessory Mode151

      在配件模式下,搭载Android系统的设备可以和USB接口的应急那经行交互,被连接的USB硬件作为主机为USB总线提供电源。

5.2.3 USB Host Mode157
5.2.4 实战案例:Android和Arduino交互159
5.3 Wi-Fi编程168

5.3.1 Android Wi-Fi相关类168

1. ScanResult 类

ScanResult类主要是通过Wi-Fi硬件的扫描来获取一些周边的Wi-Fi热点.

2. wifiConfiguration类

通过该类获取一个wifi网络配置,包括安全配置。

3. WifiInfo类

通过该类可以获得已经建立的或处于活动状态的Wi-Fi网络状态信息。

4. wifiManager类

该类用于管理wi-fi连接,定义了26个常量和23个方法。

5.3.2 Android Wi-Fi基本操作171


5.3.3 实战案例:使用Wi-Fi直连方式传输文件17

Wi-Fi直连技术允许已经配备了响应硬件并预装了Android4.0(API level 14)及以上操作系统的设备,在不需要Wi-Fi中间热点的支持下通过Wi-Fi

直接互连的技术。

1.wifi直连相关的API

WifiP2pManager类提供了很多方法允许用户通过设备的Wi-Fi模块儿进行交互,比如做一些如发现,连接其他对等设备的事情。

2. 创建一个接受Wi-Fi直连意图的广播接收器。

3. Wi-Fi直连的具体应用


5.4 蓝牙编程185

5.4.1 蓝牙简介185

蓝牙是一种支持设备短距离通信(一般10米内)的无线铜须技术,能在包括移动电话,PAD,无线耳机,笔记本电脑,相关外设等众多设备之间进行通信。Android2.0 蓝牙开发是从Android2.0 版本的SDk才开始的,而且模拟器不支持,测试至少需要两步手机。

5.4.2 Android蓝牙API分析185

1. BluetoothAdapter

2. BluetoothDevice类

3. BluetoothServerSocket类

4. BluetoothSocket类

蓝牙支持point-to-point 和multipoint两种连接。利用Android Bluetooth API,可以做到:

1. 设置本地和搜索其他蓝牙设备;

2. 寻找网内匹配的蓝牙设备;

3. 建立RFCOMM通道;

4.通过服务发现建立与其他蓝牙设备的连接;

5. 设备之间的数据传输;

6. 管理多个连接;


5.4.3 Android蓝牙基本操作187

1. 声明权限

2. 蓝牙设置

3. 发现设备

5.4.4 实战案例:蓝牙连接192

1. 作为服务器连接

2. 作为客户端连接

为实现与远程服务器设备的连接,必须首先获得一个代表远程设备BluetoothDevice的对象。然后使用BluetoothDevice对象来获取一个BluetoothSocket以实现连接。

3. 管理连接


5.5 NFC编程简介197

5.5.1 NFC技术简介197

NFC工作频率为13.56MHZ,通信距离一般在4CM或更短。

NFC通信总是有一个发起者(initiator)和一个接收者(target)组成。通常initiator主动发送电磁场(RF)可以为被动接收者(passive target)提供电源。正是由于被动接收者可以使用发起者提供的电源,因此target可以以非常简单的形式存在,比如标签(tags)、卡等,成本极低。


5.5.2 NFC API简介198

NfcAdapter

NdefMessage

NdefRecord

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

查看sqlite数据库比较方便的方法是zaiFireFox(火狐浏览器)中安装SQLiteManager的插件,其下载地址:http://code.google.com/p/sqlite-manager/. 可以从Android手机中导出SQLite文件,并使用该插件查看、编辑等。

一般数据采用静态数据类型,而SQLite采用的是动态数据类型,会根据存入值自动判断。SQLite具有5种数据类型。

数据类型

解释

NULL

空类型

INTEGER

带符号的整形,具体取决有存入数字的范围大小

REAL

浮点型

TEXT

字符串文本

BLOB

二进制对象

 6.2.5 实战案例:SQLite数据库操作220

6.3 网络判定227

使用ConnectivityManager判断用户实际使用的网络。

6.3.1 判断用户是否连接228
6.3.2 判断网络连接的类型228
6.3.3 监控网络连接改变228
6.3.4 实战案例:根据广播消息判断网络连接情况228
6.4 消息缓存230

6.4.1 Android中的缓存机制230

Android中的缓存机制是通过本地存储来实现的。

将新下载的数据缓存到本地。

再次下载之前,先判定该资源是否已经被缓存,如果是,则优先使用本地资源;如果没有被缓存,则从网络上下载资源,并进行缓存。

实际上使用缓存机制时还要考虑到两个额外的条件:空间和时间;

空间:文本占用空间小,可以根据用户磁盘大小确定。  图片占用空间大需要用户参与指定大小。

时间:对于时间限制,可以通过设定缓存的过期时间来实现,为下载到缓存的数据设定时间戳,在读取该换成的时候,比较时间戳,超过时间限制的则需要更新该缓存了。

    在清空在用户注销的时候可以考虑清空该用户的整个缓存。而在普通升级应用的情况下并不需要清空整个缓存。


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 Server250
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 WebStorage306
9.4.9 处理UI307
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 LocalServerSocket318
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 AndroidHttpClient328
10.4 Android RTP协议329
10.4.1 传输音频码330
10.4.2 AudioGroup331
10.4.3 语音流RtpStream和AudioStream332
10.5 Android SIP协议333
10.5.1 SIP通话简介334
10.5.2 SIP初始化335
10.5.3 SipProfile336
10.5.4 SipSession337
10.5.5 SIP包错误处理338
10.6 小结339
第11章 Android网络应用分析340
11.1 Android中使用SAX解析XML340
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 小结
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值