第八章 网络与数据通信技术_计算机软件及应用_it计算机_专业资料

上传人:aa****6 文档编号:54734290 上传时间:2018-09-18 格式:PPT 页数:59 大小:4.24MB
返回 下载 相关 举报
第八章 网络与数据通信技术_计算机软件及应用_it计算机_专业资料_第1页
第1页 / 共59页
第八章 网络与数据通信技术_计算机软件及应用_it计算机_专业资料_第2页
第2页 / 共59页
第八章 网络与数据通信技术_计算机软件及应用_it计算机_专业资料_第3页
第3页 / 共59页
第八章 网络与数据通信技术_计算机软件及应用_it计算机_专业资料_第4页
第4页 / 共59页
第八章 网络与数据通信技术_计算机软件及应用_it计算机_专业资料_第5页
第5页 / 共59页
点击查看更多>>
资源描述

《第八章 网络与数据通信技术_计算机软件及应用_it计算机_专业资料》由会员分享,可在线阅读,更多相关《第八章 网络与数据通信技术_计算机软件及应用_it计算机_专业资料(59页珍藏版)》请在金锄头文库上搜索。

1、第八章 网络与数据通信技术,俞成海,教学任务与目标,教学任务 USB 编程 Wi-Fi 编程 蓝牙编程 Socket实现技术 HTTP 协议通信实现技术 教学重点 蓝牙编程 Socket实现技术,USB 编程,两种模式来支持Android USB外设 :USB 外设模式和USB主机模式 在 USB 外设模式下,外部 USB 硬件(装有Android的设备要连接的外部设备)充当 USB 主机。外设的例子包括机器人、扩展插座、诊断和音乐设备、电子报亭、读卡器等其他设备,这种模式给予不具备主机功能的 Android 设备以与USB硬件交互的能 力。 在USB主机模式下,装有 Android 的设备扮

2、演着主机的角色。这种设备的例子包括数码像机,键盘,鼠标和游戏手柄。那些适应面很广的USB设备仍可以与Android应用交互,前提是这些Android应用可以正确的与这些设备通讯。,http:/ UsbManager:允许您枚举已连接的USB设备并且与其进行“交流”。 UsbDevice:代表了一个已连接的USB的设备并且包含具有该设备验证信息,接口和接口点的方法。 UsbInterface:代表了一个USB设备的一个接口,该接口定义了一系列关于设备的函数。一个设备在进行“交流”的时候可以有一个或者多个接口 UsbEndpoint:代表一个接口的接口点,该接口点就是这个接口的通信信道。一个接口可

3、以有一个或者多个这样的接口点,而且一般都是有输入和输出双向通信的接口点。 UsbDeviceConnection:代表该设备的一个连接,用来在接点上传输数据。这个类允许您能用同步或者异步的方式发送和返回数据。 UsbRequest:在通过UsbDeviceConnection和设备进行“交流”的一个异步请求。 UsbConstants:关于在linux内核中linux/usb/ch9.h的相关定义的USB常量,使用步骤(见附件),为了让应用可以发现一个USB设备,需要android.hardware.usb.action.USB_DEVICE_ATTACHED这个意图指定一个意图来进行过滤 获

4、取USB信息 UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE); HashMap deviceList = manager.getDeviceList(); UsbDevice device =deviceList.get(“deviceName“); 和设备通信 UsbInterface intf= device.getInterface(0); UsbEndpoint endpoint= intf.getEndpoint(0); UsbDeviceConnection connection= ma

5、nager.openDevice(device); connection.claimInterface(intf, true); connection.bulkTransfer(endpoint, bytes, bytes.length, 0); 终止通信 当你完成数据的传输或者你的设备已拔出时,通过调用releaseInterface()和close()来关闭接口和连接。,Wi-Fi 编程 ConnectivityManager,NetworkInfo mWiFiNetworkInfo = mConnectivityManager.getNetworkInfo(ConnectivityMan

6、ager.TYPE_WIFI),所需要用到的wifi相关Android包:.wifi 常见操作主要包括以下及各类和接口: 1、WifiManager 提供了管理WiFi连接的大部分API,主要包括如下内容:查看已经配置好的网络清单,而且可以修改个别记录的属性。可以建立或是关闭WiFi网络连接,并且可以查询有关网络状态的动态信息。对接入点的扫描结果包含足够的信息来决定需要与什么接入点建立连接。同时还定义了许多常量来表示WiFi状态的改变。 常用的方法:getWiFiState , isWifiEnabled,setWifiEnabled,startScan,getScanResults等等,基于

7、Android的WiFi相关库函数,WiFi相关库函数,所需要用到的wifi相关Android包:.wifi 常见操作主要包括以下及各类和接口: 2、WifiConfiguration WiFi网络的配置,包括安全配置等。 3.WifiInfo WiFi无线连接的描述,包括接入点、网络连接状态、隐藏的接入点,ip地址、连接速度、mac地址、网络id,信号强度等信息。 4.ScanResult 主要用来描述已经检测出的接入点,包括接入点的地址、接入点的名称、身份认证、频率、信号强度等信息。,找到周围AP的关键步骤,检测网卡状态,修改网卡状态开启,进行扫描周围ap,打印结果 class ListW

8、ifiListerner implements OnClickListener Overridepublic void onClick(View v) wifiManager = (WifiManager)WifiActivity.this.getSystemService(Context.WIFI_SERVICE); wifiManager.startScan();mWifiList = wifiManager.getScanResults();for(int i=0;imWifiList.size();i+) sb.append(new Integer(i).toString()+“.“)

9、; sb.append(mWifiList.get(i).toString(); sb.append(“n“); mainText.setText(sb); sb.delete(0, sb.capacity(); ,蓝牙编程,,使用蓝牙进行设备通信,主要包含四个部分:蓝牙设置、搜索设备、连接、传输数据 BluetoothAdapter 代表本地蓝牙适配器(蓝牙发射器),是所有蓝牙交互的入。通过它可以搜索其它蓝牙设备,查询已经配对的设备列表,通过已知的MAC地址创建BluetoothDevice,创建BluetoothServerSocket监听来自其它设备的通信。 BluetoothDevic

10、e 代表了一个远端的蓝牙设备, 使用它请求远端蓝牙设备连接或者获取 远端蓝牙设备的名称、地址、种类和绑定状态。 BluetoothSocket 代表了一个蓝牙套接字的接,是应用程 序通过输、输出流与其他蓝牙设备通信的连接点。 BluetoothServerSocket 代表打开服务连接来监听可能到来的连接请求 (属于 server 端) , 为了连接两个蓝牙设备必须有一个设备作为服务器打开一个服务套接字。 BluetoothClass 描述了一个设备的特性(profile)或该设备上的蓝牙一致可以提供哪些服务(service),但不可信。比如,设备是一个电话、计算机或手持设备;设备可以提供au

11、dio/telephony服务等。可以用它来进行一些UI上的提示。,BluetoothHeadset 提供手机使用蓝牙耳机的支持。这既包括蓝牙耳机和免提(V1.5)模式。 BluetoothA2dp 定义高品质的音频,可以从一个设备传输到另一个蓝牙连接。 “A2DP的”代表高级音频分配模式。 BluetoothHealth 代表了医疗设备配置代理控制的蓝牙服务 BluetoothHealthCallback一个抽象类,使用实现BluetoothHealth回调。你必须扩展这个类并实现回调方法接收更新应用程序的注册状态和蓝牙通道状态的变化。 BluetoothHealthAppConfigura

12、tion 代表一个应用程序的配置,蓝牙医疗第三方应用注册与远程蓝牙医疗设备交流。 BluetoothProfile.ServiceListener 当他们已经连接到或从服务断开时通知BluetoothProfile IPX的客户时一个接(即运行一个特定的配置文件,内部服务)。,BlueTooth使用,至少要在AndroidManifest.xml中声明两个权限:BLUETOOTH和 BLUETOOTH_ADMIN 获取BluetoothAdapter,打开蓝牙:通过isEnabled()来检查蓝牙当前是否可用。如果这个方法返回false,则蓝牙不能够使用。为了请求蓝牙使用,呼叫startAct

13、ivityForResult()与的ACTION_REQUEST_ENABLE动作意图获取BluetoothAdapter,查找匹配设备,扫描设备 开始搜索设备,调用startDiscovery() 。该函数是异步的,调用后立即返回,返回值表示搜索是否成功开始。 应用中可以注册一个带ACTION_FOUND Intent的BroadcastReceiver,搜索到每一个设备时都接收到消息。Intent携带着而外的字段信息EXTRA_DEVICE和EXTRA_CLASS,分别包含一个BluetoothDevice和一个BluetoothClass。 使用cancelDiscovery()来停止搜

14、索,使能被发现 如果想让本地设备被其他设备发现,可以带ACTION_REQUEST_DISCOVERABLE action Intent调用startActivityForResult(Intent, int) 方法,作为服务器连接 通过持有个打开的BluetoothServerSocket对象。服务器socket的作用是侦听进来的连接,如果一个连接被接受,提供一个连接好的BluetoothSocket对象。,建立服务器socket和接收一个连接的基本步骤,1.通过调用listenUsingRfcommWithServiceRecord(String, UUID)得到一个BluetoothSe

15、rverSocket对象,当客户端试图连接本设备,它将携带一个UUID用来唯一标识它要连接的服务,UUID必须匹配,连接才会被接受。 2.通过调用accept()来侦听连接请求。这是一个阻塞的调用,直到有连接进来或者产生异常才会返回。只有远程设备发送一个连接请求,并且携带的UUID与侦听它socket注册的UUID匹配,连接请求才会被接受。如果成功,accept()将返回一个连接好的BluetoothSocket对象。 3.除非需要再接收另外的连接,否则的话调用close() 。close()释放server socket和它的资源,但不会关闭连接accept()返回的连接好的Bluetoot

16、hSocket对象。,作为客户端连接,1.用BluetoothDevice调用createRfcommSocketToServiceRecord(UUID)获取一个BluetoothSocket对象。 这个初始化的BluetoothSocket会连接到BluetoothDevice。 2.调用connect()完成连接 当调用这个方法的时候,系统会在远程设备上完成一个SDP查找来匹配UUID。如果查找成功并且远程设备接受连接,就共享RFCOMM信道,connect()会返回。这也是一个阻塞的调用,不管连接失败还是超时(12秒)都会抛出异常。,管理连接 如果已经连接了两个设备,他们都已经拥有各自的连接好的BluetoothSocket对象。可以在设备间共享数据了。使用BluetoothSocket,传输任何数据通常来说都很容易了: 1.通过socket获取输入输出流来处理传输(分别使用getInputStream()和getOutputStream() )。 2.用read(byte)和write(byte)来实现读写。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号