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

下载本文档

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

文档简介

1、第八章 Android网络通信,本章主要内容,Android网络通信基础 Android Http通信 WIFI 蓝牙,网络的重要性,网络化信息化的世界 短信、电话 无线上网 移动,自由,随时随地,Android支持的通信模式,GSM EDGE 3G,WIFI BLUETOOTH NFC,GSM,全球移动通信系统 (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 室内 2Mbps,3G,目前存在的几种标准,WCDMA(Wideband CDMA)欧洲 CDMA2000 美国高通北美公司 TD-SCDMA(时分同步CDMA) 中国大陆 WiMAX 微波存取全球互通(07年提出) (Worldwide Interoperability for Microwave Access,3G应用,宽带上网 视频通话 手机电视 无线搜索,3G目前广泛地运用在,手机音乐 手机购物 手机网游,WiFi,Wireless Fidelity,

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

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

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

7、的基础协议,是建立在TCP上的一种应用。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的持

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

10、-Type 加以标记; 无状态:HTTP 协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快,使用HttpClient接口通信示例,使用HttpUrlConnection接口通信示例,Android Wifi开发,Android SDK提供的相关包:.wifi,Android Wifi相关类介绍,Android Wifi相关类介绍,Android Wifi开发,Android 操作WiFi的重要类WifiManager 这个类提供了最主要的用于管

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

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

13、droid Wifi权限获取,要在应用程序中对Android系统的WiFi设备进行相关操作,需要在项目中的AndroidManifest.xml中选择性地添加如下几句用于声明权限的语句,Android Wifi开发代码示例,取得WifiManager对象 mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); /取得WifiInfo对象 mWifiInfo = mWifiManager.getConnectionInfo(,打开WIFI public void openWifi() if (!mW

14、ifiManager.isWifiEnabled() mWifiManager.setWifiEnabled(true);,Android Wifi开发代码示例,关闭WIFI public void closeWifi() if (!mWifiManager.isWifiEnabled() mWifiManager.setWifiEnabled(false); /得到WifiLock,以便应用程序保持wifi连接 public void acquireWifiLock() mWifiLock.acquire();,Android Wifi开发代码示例,解锁WifiLock public voi

15、d releaseWifiLock() if (mWifiLock.isHeld() /判断是否被锁定 mWifiLock.acquire(); /创建WifiLock public void creatWifiLock() mWifiLock = WifiManager.createWifiLock(Lock);,Android Wifi开发代码示例,得到已经配置好的网络列表 public List getConfiguration() return mWifiConfiguration; /选择一个已配置好的网络进行连接 public void connectConfiguration(i

16、nt index) /索引大于配置好的网络索引返回 if(index mWifiConfiguration.size() return; /连接配置好的指定ID的网络 mWifiManager.enableNetwork(mWifiConfiguration.get(index) .networkId, true);,Android Wifi开发代码示例,扫描接入点 public void startScan() mWifiManager.startScan(); /得到扫描结果 mWifiList = mWifiManager.getScanResults(); /得到已经配置好的网络列表

17、mWifiConfiguration = mWifiManager.getConfiguredNetworks(); /得到网络连接列表 public List getWifiList() return mWifiList;,Android 蓝牙开发,Android SDK提供的相关包:android.bluetooth,1. 搜寻有效范围内的蓝牙设备; 2. 通过本地的蓝牙适配器来查询到与之配对的蓝牙设备; 3. 在配对的蓝牙设备之间建立RFCOMM信道; 4. 连接到其他设备的指定端口; 5. 在设备之间传输数据,API主要为应用程序提供如下几个功能,Android 蓝牙API,andro

18、id.bluetooth包括了以下两个接口,Android 蓝牙API,android.bluetooth包括了以下一些类,Android 蓝牙API,Android 蓝牙API,android.bluetooth中用于建立连接的类,类似于Java API中的ServerSocket和Socket类,Android 蓝牙权限获取,要在应用程序中对Android系统的蓝牙设备进行相关操作,需要在项目中的AndroidManifest.xml中添加,Android 蓝牙示例TestBluetooth,运行截图,程序初始化,打开蓝牙,允许搜索,正在搜索,项目文件保存在/workspace目录,项目名

19、称TestBluetooth,Android 蓝牙示例TestBluetooth,TestBluetooth项目文件结构,源码包名:com.bluetooth,主Activity:BluetoothActivity,查找蓝牙Activity:DiscoveryActivity,工具类(对话框功能):SamplesUtils,执行查找界面的布局:discovery.xml,主界面布局:main.xml,Android 蓝牙示例TestBluetooth,AndroidManifest.xml,接下页,Android 蓝牙示例TestBluetooth,AndroidManifest.xml(续,

20、Android 蓝牙示例TestBluetooth,BluetoothActivity.java,代码较多,见书本,DiscoveryActivity.java,代码较多,见书本,Android 蓝牙建立连接,1. 本机作为服务端参与连接的建立,通过listenUsingRfcommWithServiceRecord(String, UUID)方法来得到一个BluetoothServerSocket对象,方法中的String参数代表了本机的名称,UUID是用于蓝牙设备之间相互识别的唯一识别码,当这个UUID在客户端和服务端是同一个值时才能够建立起连接,在蓝牙通讯中起着十分重要的作用,mServerSocket=mAdapter.listenUsingRfcommWithServiceRecord(NAME, UUID,然后通过mServerSocket的accept()方法开始监听连接到这个端口的请求,mServerSocket.accept(,该监听线程会一直阻塞直到有新的请求到来,除非在程序中人为的调用mServerSocket的close()方法。完整代码见书本,Android 蓝牙建

温馨提示

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

评论

0/150

提交评论