《Android程序设计教程》课件第九章 网络编程_第1页
《Android程序设计教程》课件第九章 网络编程_第2页
《Android程序设计教程》课件第九章 网络编程_第3页
《Android程序设计教程》课件第九章 网络编程_第4页
《Android程序设计教程》课件第九章 网络编程_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

第九章网络编程目录9.1Socket编程 9.2使用HttpURLConnection 9.3WIFI编程 9.4蓝牙传输编程9.5WebView组件学习目标掌握Socket通信的使用掌握HttpURLConnection通信接口的使用掌握URLConnection通信的GET、POST两种数据提交方式了解WIFI编程了解蓝牙数据传输编程能够使用WebView组件浏览网页9.1Socket编程Socket通常称为“套接字”,用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过套接字向网络发出请求或者答应网络请求,它支持TCP/IP协议的网络通信的基本单元。它是网络通信过程中端点的抽象表示,包含进行网络通信的五种必须信息:连接使用的协议、本地主机的IP地址、本地进程的协议端口、远程主机的IP地址、远程进程的协议端口。9.1.1Socket类和ServerSocket类常用的Socket构造方法有以下两种:(1)Socket(Stringhost,intport):创建连接到指定远程主机名、远程端口的Socket对象,该构造方法没有指定本地地址和本地端口,默认使用本地主机IP地址和系统动态分配的端口。此外,参数host也可以使用InetAddress类型。(2)Socket(Stringhost,intport,InetAddresslocalAddr,intlocalPort):创建连接到指定远程主机名、远程端口的Socket,并指定本地IP地址和本地端口,适用于本金主机有多个IP地址的情况。此外,参数host也可以使用InetAddress类型。9.1.2ServerSocket类ServerSocket类常用的构造方法如下:(1)ServerSocket(intport):创建绑定到指定端口的服务器套接字。参数port为指定的端口号,若为零,则表示使用任何空闲端口。(2)ServerSocket(intport,intbacklog):创建绑定到指定端口的服务器套接字,同时指定可接受的最大连接请求。参数port含义同上,参数backlog表示连接请求队列长度。如果队列已满,则拒绝再达到的连接请求。(3)ServerSocket(intport,intbacklog,InetAddresslocalAddr):创建一个ServerSocket对象,指定端口、连接队列长度和IP地址,当服务器存在多个IP地址时才允许使用localAddr参数将ServerSocket绑定到特定端口。通常使用ServerSocket类进行网络通信的具体步骤如下:(1)根据指定端口实例化一个ServerSocket对象;(2)调用ServerSocket对象的accept()方法接收客户端发送的Socket对象;(3)调用Socket对象的getInputStream()/getOutputStream()方法建立与客户端进行交互的I/O流;(4)服务器与客户端根据一定的协议进行交互,直到关闭连接;(5)关闭服务器端的Socket。(6)回到第二步,继续监听下一次客户端发送的Socket请求连接。9.2.1URL类和URLConnection类9.2.2HttpURLConnection类HTTP是最常见的应用层网络协议,Internet上的大部分资源都是基于HTTP的。Java提供了.HttpURLConnection类专门用于处理HTTP的请求和响应。HttpURLConnection继承自URLConnection类,每个HttpURLConnection实例都可生成单个请求,以透明的共享方式连接到HTTP服务器。9.3.1WifiManager类Android系统提供了一个WifiManager类用于简单的Wi-Fi操作,使用WifiManager可以在应用中打开与关闭Wi-Fi,同时还可以获取Wi-Fi当前的状态信息。在Android应用中控制Wi-Fi,主要是对WifiManager对象进行操作。具体操作分为如下几个步骤:(1)在AndroidManifest.xml清单文件中为应用程序添加权限。<!--允许应用程序改变网络连接状态--><uses-permissionandroid:name="android.permission.CHANGE_NETWORK_STATE"/><!--允许应用程序改变WI-FI连接状态--><uses-permissionandroid:name="android.permission.CHANGE_WIFI_STATE"/><!--允许应用程序获取网络的状态信息--><uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/><!--允许应用程序获得WI-FI的状态信息--><uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/>(2)得到WifiManager对象。WifiManagerwifiManager=(WifiManager)Context.getSystemService(Service.WIFI_SERVICE);其中Context为当前Activity对象,getSystemService是Android中的一个很重要的API,它是Activity的一个方法,根据传入的参数来获取相应的服务对象。(3)打开Wi-Fi网卡。wifiManager.setWifiEnabled(true);(4)关闭Wi-Fi网卡。wifiManager.setWifiEnabled(false);(5)获取当前Wi-Fi网卡状态。wifiManager.getWifiState();9.3.2WifiInfo类该类主要用于在Wi-Fi网卡连通后获取Wi-Fi的相关信息,主要包括:Mac地址、IP地址、连接速度、网络信号等。WifiInfo对象的获取主要通过调用WifiManager类的getConnectionInfo()方法得到。具体代码如下:WifiInfowifiInfo=wifiManager.getConnectionInfo();9.4蓝牙传输编程Android应用程序框架提供了访问蓝牙功能的API,这些API能够让应用程序无线连接其他蓝牙设备,实现点对点或点对多点的信息交换功能。具体功能只要有:(1)扫描其它蓝牙设备。(2)查询本地蓝牙适配器用于配对蓝牙设备。(3)建立RFCOMM信道。(4)通过服务发现连接其他设备。(5)数据通信。(6)管理多个连接。9.4.1Android蓝牙API介绍Android支持的蓝牙开发类在android.bluetooth包中。编程主要涉及的类有BluetoothAdapter与BluetoothDevice类,这两个类用于蓝牙设备的管理;还有BluetoothServerSocket和BluetoothSocket类,这两个类用于蓝牙通信。9.4.2Android蓝牙基本应用编程(1)为了在应用中使用蓝牙功能,要在AndroidManifest.xml清单文件中声明蓝牙应用权限。代码如下所示。<!--声明蓝牙使用及管理权限--><uses-permissionandroid:name="android.permission.BLUETOOTH"/><uses-permissionandroid:name="android.permission.BLUETOOTH_ADMIN"/>9.4.3蓝牙连接与数据传输有两种方法实现蓝牙连接,一种是每一个设备都自动准备作为一个服务器,拥有一个服务器Socket并监听连接,然后每个设备也都能作为客户端建立一个到远程设备的连接。另一种是一个设备作为服务器Socket,另外一个设备仅作为客户端建立与服务器的连接。下面是建立服务器Socket和接收连接的基本步骤:(1)通过调用listenUsingRfcommWithServiceRecord(String,UUID)方法得到一个BluetoothServerSocket对象。String参数为服务的标识名称,名字可以任意。当客户端试图连接本设备时,它将携带一个UUID用来唯一标识它要连接的服务,UUID必须匹配,连接才会接收。(2)通过调用BluetoothServerSocket对象的accept()方法监听连接请求。该方法为阻塞方法,直到接收一个连接或异常才会返回。当客户端携带的UUID与监听它的Socket注册的UUID匹配时,连接才会被接收,这时accept()方法将返回一个BluetoothSocket对象。(3)使用BluetoothServerSocket对象的close()方法释放服务器Socket及其资源,该方法不会关闭accept()方法返回的BluetoothSocket对象。建立客户端Socket连接到服务器的基本步骤:(1)使用BluetoothDevice调用方法createRfcommSocketToServiceRecord(UUID)获取一个BluetoothSocket对象。(2)调用该BluetoothSocket对象的connect()方法建立连接。当调用这个方法时,系统会在远程设备上完成一个SDP协议的查找来匹配UUID。如果查找成功并且远程设备接收连接,就共享RFCOMM信道,connect()方法会返回。该方法也是一个阻塞调用,如果连接失败或者超时(12s)都会抛出异常。如果两个设备成功建立连接,各自都会有一个BluetoothSocket对象,此时就可以在设备间共享数据了。使用BluetoothSocket传输数据的通常方法如下:分别使用getInputStream()和getOutputStream()获取输入输出流来处理传输。调用read(byte[])和write(byte[])来实现数据流的读和写。9.5WebView组件WebView作为浏览器网络资源的视图组件,具有以下几个优点:功能强大,支持HTML、CSS和JavaScript,并很好地融入布局,使页面更加美观;能够对浏览器控件进行详细的设置,例如字体、背景颜色和滚动条样式等;能够捕获到所有浏览器的操作,例如单击、打开或关闭URL。使用WebView组件的基本步骤如下:(1)在AndroidManifest.xml清单文件中配置访问网络权限;(2)在布局文件中创建WebView元素;(3)在代码中加载网页。在加载网页内容时,除了使用WebView的loadUrl()方法进行加载外,还可以使用loadData()或loadDataWithBaseURL()方法将HTML代码

温馨提示

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

评论

0/150

提交评论