Android网络通信_第1页
Android网络通信_第2页
Android网络通信_第3页
Android网络通信_第4页
Android网络通信_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第八章第八章 Android网络通信网络通信本章主要内容本章主要内容u Android网络通信基础u Android Http通信u WIFIu 蓝牙网络的重要性网络化信息化的世界短信、电话无线上网移动,自由,随时随地Android支持的通信模式GSMEDGE3GWIFIBLUETOOTHNFCGSM 全球移动通信系统(Global System for Mobile Communications) 当前应用最为广泛的移动电话标准。全球超过200个国家和地区超过10亿人正在使用GSM电话。GSM GSM标准的广泛使用使得在移动电话运营商之间签署“漫游协定”后用户的国际漫游变得很平常。 GSM较

2、之它以前的标准最大的不同是他的信令和语音信道都是数字的,因此GSM被看作是第二代(2G)移动电话系统。GSM标准当前由3GPP组织负责制定和维护。EDGE增强型数据速率GSM演进技术Enhanced Data Rate for GSM Evolution从GSM到3G的过渡技术能够充分利用现有的GSM资源弹性优势工作在TDMA和GSM网络提高了GPRS信道编码效率及其高速移动数据标准3G 第三代移动通信技术(3rd-generation,3G) 3G就是指IMT-2000(International Mobile Telecommunications-2000),是国际电信联盟(ITU)定义的

3、第三代无线通信的全球标准。IMT-2000规定移动终端的连接速度:以车速移动时 144Kbps室外静止或步行时384Kbps室内 2Mbps3G 目前存在的几种标准 WCDMA(Wideband CDMA)欧洲 CDMA2000 美国高通北美公司 TD-SCDMA(时分同步CDMA) 中国大陆 WiMAX 微波存取全球互通(07年提出) (Worldwide Interoperability for Microwave Access)3G应用 宽带上网 视频通话 手机电视 无线搜索3G目前广泛地运用在: 手机音乐 手机购物 手机网游WiFiWireless Fidelity,中文译为“无线兼容

4、认证” 实质一种商业认证 技术短程无线传输 现状带WiFi的便携式设备是潮流WiFi常见的WiFi使用形式无线路由器 覆盖范围70至120米 使用场合公司、家庭、公共场所 优点方便的建立局域网、低成本、使用简单WiFi特点 无线电波的覆盖范围广 传输速度高 使用门槛比较低 消除布线的麻烦 发射功率低,健康安全WiFi相比其他技术有如下一些特点:Bluetooth蓝牙的标志l 开放式无线通讯标准l 设备短距离互联解决方案定义:优势: 无需驱动程序独特的配置文件 小型化无线电 低功率、低成本、安全性、稳固 易于使用、即时连接Bluetooth蓝牙协议栈: 核心协议层(HCI、LMP、L2CAP、S

5、DP) 线缆替换协议层(RFCOMM) 电话控制协议层(TCS-BIN) 选用协议层(PPP、TCP、IP、UDP、OBEX、IrMC、WAP、WAE)蓝牙规范(profile)为了保证蓝牙设备的互通性而制定的一系列规范:Bluetooth 蓝牙立体声音频传输规范(A2DP) 基本图像规范(BIP) 基本打印规范(BPP) 无线电话规范(CTP) 蓝牙耳机规范(HP) 文件传输规范(FTP) NFCNear Field Communication(近场通讯)技术起源:NFC由非接触式射频识别(RFID)及互联互通技术整合演变而来,在单一芯片上结合感应式读卡器、感应式卡片和点对点的功能,能在短距

6、离内与兼容设备进行识别和数据交换。NFC 轻松、安全、迅速的通信 传输范围小独特的信号衰减技术 带宽高、能耗低技术优势:应用场合: 门禁、公交 手机支付Android提供的网络接口Android平台提供了三种网络接口,它们分别是: .* org.apache.* .*开发人员可以使用这些接口方便的进行Android网络编程。Android Http通信u Http简介u 使用HttpClient接口通信示例u 使用HttpUrlConnection接口通信示例Http简介 Http(Hypertext Transfer Protocol)即超文本传输协议,它是Web的基础协议,是建立在TCP上

7、的一种应用。Http连接最显著的特点就是客户端发送的每次请求都需要服务器返回响应,并在请求结束后释放连接,这个建立连接到关闭连接的过程称为“一次连接”。由于HTTP在每次请求结束后都会主动释放连接,因此HTTP连接是一种“短连接”、“无状态”的连接。 在Http 1.0时期,要保持客户端程序的在线状态,需要不断地向服务器发起连接请求。通常的做法是即使不需要请求任何数据,客户端也保持每隔一段固定的时间向服务器发送一次“保持连接”的请求,服务器在收到该请求后对客户端进行回复,表明知道客户端“在线”。若服务器长时间无法收到客户端的请求,则认为客户端“下线”,若客户端长时间无法收到服务器的回复,则认为

8、网络已经断开。Http简介 在Http 1.1版本时增加了持久连接支持,即是将关闭连接的主动权交给客户端,只要客户端没有请求关闭连接,就可以持续向服务器发送Http请求。HTTP1.1除了支持持久连接外,还将HTTP1.0的请求方法从原来的三个(GET、POST和HEAD)扩展到了八个(OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE和CONNECT)。同时增加了很多请求和响应字段,如持久连接的字段Connection。这个字段有两个值,Close和Keep-Alive。如果使用Connection:Close,则关闭HTTP 1.1的持久连接的功能,若要打开HTT

9、P 1.1的持久连接的功能,必须将字段设置为Connection:Keep-Alive,或者不加Connection字段(因为HTTP1.1在默认情况下就是持久连接的)。另外,还提供了身份认证、状态管理和缓存(Cache)等相关的请求头和响应头。Http的特点1. 支持客户/服务器模式;2. 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP 协议简单,使得HTTP 服务器的程序规模小,因而通信速度很快;3. 灵活:HTTP 允许传输任意类型的数据对象。正在传输的类型由Content-Type 加以

10、标记;4. 无状态:HTTP 协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。使用HttpClient接口通信示例2 使用GET方法1 初始状态3 使用POST方法使用HttpUrlConnection接口通信示例5 使用GET方法4 初始状态6 使用POST方法Android Wifi开发Android SDK提供的相关包:.wifiScanResult用于描述一个已经被检测到的wifi接入点。WifiConfiguration该类代表了一

11、个已经配置好的wifi网络,包括了该网络的一些安全设置。例如接入点密码,接入点通讯所采用的安全标准。WifiConfiguration.AuthAlgorithm公认的IEEE 802.11标准认证算法。Android Wifi相关类介绍WifiConfiguration.GroupCipher公认的组密码。 WifiConfiguration.KeyMgmt公认的密钥管理方案。 WifiConfiguration.PairwiseCipher公认的用于WPA的成对密码标准。 WifiConfiguration.Protocol公认的安全协议WifiConfiguration.Status网络

12、所可能存在的状态。 Android Wifi相关类介绍WifiInfo描述了各个wifi连接的状态,该连接是否处于活动状态或者是否处于识别过程中。WifiManager这个类比较重要。它提供了用于管理wifi连接的各种主要API。详见表后说明。WifiManager.MulticastLock 允许应用程序接收wifi的多播数据包。 WifiManager.WifiLock允许应用程序永久地保持wifi连接(防止系统自动回收)。Android Wifi开发Android 操作WiFi的重要类WifiManager这个类提供了最主要的用于管理wifi连接的API。通过调用Context.getS

13、ystemService(Context.WIFI_SERVICE)方法来得到系统提供的WifiManager,代码如下:WifiManager mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);Android Wifi开发WifiManager主要用于处理下面一些事务: 已经配置好的网络连接列表。这个列表可以被用户查看或者更新,而且可以通过它来修改个别接入点的属性; 如果当前有连接存在的话,可以得到当前正处于活动状态的wifi连接的控制权,可以通过它建立或者断开连接,并且可以查询该网络连接的

14、动态信息; 通过对已经扫描到的接入点的足够信息来进行判断,得出一个最好的接入点进行连接。 定义了很多用于系统广播通知的常量,它们分别代表了WiFi状态的改变。Android Wifi开发补充:Android网络连接管理类ConnectivityManager该类用于管理抽象意义上的“网络连接” 监控网络连接(包括WiFi,GPRS,UMTS等等); 当网络连接发生改变时,向系统广播这一改变; 当失去了当前的网络连接时,尝试切换到另外一个连接; 提供了允许其他应用程序调用的API让应用程序可以方便地查询当前的网络状态。它的主要作用是:Android Wifi权限获取 要在应用程序中对Androi

15、d系统的WiFi设备进行相关操作,需要在项目中的AndroidManifest.xml中选择性地添加如下几句用于声明权限的语句: Android Wifi开发代码示例/取得WifiManager对象mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);/取得WifiInfo对象mWifiInfo = mWifiManager.getConnectionInfo();/打开WIFIpublicpublic voidvoid openWifi()ifif (!mWifiManager.isWifiEn

16、abled()mWifiManager.setWifiEnabled(truetrue);Android Wifi开发代码示例/关闭WIFIpublicpublic voidvoid closeWifi()ifif (!mWifiManager.isWifiEnabled()mWifiManager.setWifiEnabled(falsefalse);/得到WifiLock,以便应用程序保持wifi连接publicpublic voidvoid acquireWifiLock()mWifiLock.acquire();Android Wifi开发代码示例/解锁WifiLockpublicpu

17、blic voidvoid releaseWifiLock()ifif (mWifiLock.isHeld() /判断是否被锁定mWifiLock.acquire();/创建WifiLockpublicpublic voidvoid creatWifiLock()mWifiLock = WifiManager.createWifiLock(Lock);Android Wifi开发代码示例/得到已经配置好的网络列表publicpublic List getConfiguration()returnreturn mWifiConfiguration;/选择一个已配置好的网络进行连接publicpu

18、blic voidvoid connectConfiguration(intint index)/索引大于配置好的网络索引返回ifif(index mWifiConfiguration.size()returnreturn;/连接配置好的指定ID的网络mWifiManager.enableNetwork(mWifiConfiguration.get(index).networkId, truetrue);Android Wifi开发代码示例/扫描接入点publicpublic voidvoid startScan()mWifiManager.startScan();/得到扫描结果mWifiLi

19、st = mWifiManager.getScanResults();/得到已经配置好的网络列表mWifiConfiguration = mWifiManager.getConfiguredNetworks();/得到网络连接列表publicpublic List getWifiList()returnreturn mWifiList;Android 蓝牙开发Android SDK提供的相关包:android.bluetooth 1. 搜寻有效范围内的蓝牙设备; 2. 通过本地的蓝牙适配器来查询到与之配对的蓝牙设备; 3. 在配对的蓝牙设备之间建立RFCOMM信道; 4. 连接到其他设备的指定

20、端口; 5. 在设备之间传输数据。API主要为应用程序提供如下几个功能:Android 蓝牙API接口名接口名描述描述BluetoothProfile蓝牙规范的公用API接口,所有的蓝牙规范都必须实现这个接口。Profile目的是要确保Bluetooth设备间的互通性。BluetoothProfile.ServiceListener用于在蓝牙客户设备连接或者断开连接时给它们发出通知的接口。android.bluetooth包括了以下两个接口:Android 蓝牙APIandroid.bluetooth包括了以下一些类:类名类名描述描述BluetoothA2dp这个类作为对BluetoothPr

21、ofile接口实现的实例,这是对蓝牙的A2DP规范的API实现类。BluetoothAdapter代表了本地的蓝牙适配器。BluetoothAssignedNumbers蓝牙的指令编号。 BluetoothClass代表蓝牙的类,这个类描述了蓝牙设备的特征和性能参数。Android 蓝牙API类名类名描述描述BluetoothClass.Device 定义了所有的device类所用的常量。BluetoothClass.Device.Major定义了所有主要的device类所用的常量。BluetoothClass.Service定义了所有的service类所用的常量。BluetoothHeads

22、et实现蓝牙耳机服务的公共API。Android 蓝牙API类名类名描述描述BluetoothServerSocket用于监听socket连接请求的类。BluetoothSocket一个已连接的或正在连接的socket类。android.bluetooth中用于建立连接的类:类似于Java API中的ServerSocket和Socket类Android 蓝牙权限获取要在应用程序中对Android系统的蓝牙设备进行相关操作,需要在项目中的AndroidManifest.xml中添加:Android 蓝牙示例TestBluetooth运行截图:运行截图:程序初始化打开蓝牙允许搜索正在搜索(项目文

23、件保存在/workspace目录,项目名称TestBluetooth)Android 蓝牙示例TestBluetoothTestBluetooth项目文件结构:源码包名:com.bluetooth主Activity:BluetoothActivity查找蓝牙Activity:DiscoveryActivity工具类(对话框功能):SamplesUtils执行查找界面的布局:discovery.xml主界面布局:main.xmlAndroid 蓝牙示例TestBluetoothAndroidManifest.xml: 接下页Android 蓝牙示例TestBluetoothAndroidMani

24、fest.xml(续): Android 蓝牙示例TestBluetoothBluetoothActivity.java:=代码较多,见书本DiscoveryActivity.java:=代码较多,见书本Android 蓝牙建立连接1. 1. 本机作为服务端参与连接的建立本机作为服务端参与连接的建立 通过listenUsingRfcommWithServiceRecord(String, UUID)方法来得到一个BluetoothServerSocket对象,方法中的String参数代表了本机的名称,UUID是用于蓝牙设备之间相互识别的唯一识别码,当这个UUID在客户端和服务端是同一个值时才能够建立起连接,在蓝牙通讯中起着十分重要的作用。mServerSocket=mAdapter.listenUsingRfcommWithServiceRecord(NAME, UUID);然后通过mServerSocket的accept()方法开始监听连接到这个端口的请求。mServerS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论