基于android平台的无线局域网通信的研究与应用

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

北京林业大学信息学院基于android平台的无线局域网通信的研究与应用2013年6月18日近场通讯(NearFieldCommunication,NFC),又称近距离无线通讯,是一种短距离的高频无线通讯技术,允许电子设备之间进行非接触式点对点资料传输,在十厘米内交换资料。NFC采用主动和被动两种读取模式。NFC的工作模式分为卡模式(完全模拟一张采用RFID技术的IC卡)和点对点模式(类似于红外和蓝牙实现数据点对点传输)以及读卡器模式(作为非接触读卡器使用,可读取电子标签)。NFC是一种提供轻松、安全、迅速的通信的无线连接技术,其传输距离仅为10cm,而且能耗相对比较低。NFC是一种近距离的私密通信方式,主要在门禁、公交、手机支付等领域内发挥着巨大的作用。在一些安卓手机上,两部手机轻触一下或非常靠近,就可以传输照片等文件。但并不是所有安卓手机都有这种芯片,iPhone手机则是都没有。NFC还可以将其它类型无线通讯(如Wi-Fi和蓝牙)“加速”,实现更快和更远距离的数据传输。可以创建快速安全的连接。《基于Android平台的中国象棋对战游戏》Android开发中的Activity组件、NFC近场通讯技术、基于WIFI分配的IP地址的Socket通信功能等。的通用无线电通信接口,它通过一个特殊的网络可以在各种便携设备之间建立起无线连接并进行短程通信。在一个微微网中,每个单元都能同时与其它各单元进行通信。而且,每一个单元可以同时属于几个微微网。蓝牙采用分散式网络结构以及快跳频和短包技术,支持点对点及点对多点通信。采用时分双工传输方案实现全双工传输。蓝牙的使用有效距离大约在10m左右。蓝牙传输时需要先在两台设备直接建立蓝牙连接,然后才可以传输不同的数据,传输速度为1Mbps,但耗电量比较大。ZigBee可以说是蓝牙的同族兄弟,它使用2.4GHz波段,采用跳频技术。与蓝牙相比,ZigBee更简单、速率更慢、功率及费用也更低。它的基本速率是250kb/s,当降低到28kb/s时,传输范围可扩大到134m,并获得更高的可靠性。另外,它可与254个节点联网。更多用于自动化控制和传感器网络。示例及分析版本&使用历代版本基本使用过程处理流程设置发现连接管理API及方法BluetoothAdapter类BluetoothDevice类BluetoothSocket类版本截止目前,蓝牙共有六个版本V1.1/1.2/2.0/2.1/3.0/4.0以通讯距离来在不同版本可再分为ClassA(1)/ClassB(2)现在一般通用是2.0和2.1的版本,极少数设备支持3.0或者4.0有的手机关闭了部分蓝牙功能。蓝牙4.0实际是个三位一体的蓝牙技术,它将三种规格合而为一:分别是传统蓝牙、低功耗蓝牙和高速蓝牙技术,这三个规格可以组合或者单独使用。低功耗蓝牙无线技术拥有极低的运行和待机功耗,使用一粒纽扣电池甚至可连续工作数年之久。同时还拥有低成本,跨厂商互操作性,3毫秒低延迟、100米以上超长距离、AES-128加密等诸多特色)启动蓝牙。2)(A)搜索到另外一方(B),并发出链接请求,设置一个临时密钥,例如1234。3)B收到请求信息,输入临时密钥,1234。4)链接成功。发现,握手,验证,连接蓝牙使用过程():得到本地默认的BluetoothAdapter,若返回为null则表示本地不支持蓝牙;isDiscovering():返回设备是否正在发现周围蓝牙设备;cancelDiscovery():取消正在发现远程蓝牙设备的过程;startDiscovery():开始发现过程;getScanMode():得到本地蓝牙设备的ScanMode;getBondedDevices():得到已配对的设备;isEnabled():蓝牙功能是否启用。BluetoothAdapter类():创建该Device的socket。BluetoothSocket类connect():请求连接蓝牙。close():关闭蓝牙连接。getInputStream():得到输入流,用于接收远程方信息。getOutputStream():得到输出流,发送给远程方的信息。InputStream类:read(byte[]):以阻塞方式读取输入流。OutputStream类:write(byte[]):将信息写入该输出流,发送给远程。BluetoothDevice类处理流程第一步:AndroidFramework设置蓝牙通信第二步:AndroidFramework发现蓝牙设备第三步:AndroidFramework连接蓝牙设备第四步:AndroidFramework管理蓝牙连接第一步:设置蓝牙通信使用BluetoothAdapter类,获得BluetoothAdapter对象与启动蓝牙通信。•1)取得BluetoothAdapter类•2)启动蓝牙通信第二步:发现蓝牙设备目前AndroidOS提供的蓝牙通讯API要求建立RFCOMM协议管道前,两个蓝牙设备必须已配对成功。•查询配对连接为了要在两个蓝牙设备之间建立一条应用程序连接,必须建立一个服务端和一个客户端的机制,服务端要打开蓝牙套接字(Socket)接口,客户端使用服务端的MAC地址来启动一条连接。第三步:连接蓝牙设备第四步:管理蓝牙连接当成功连接一个或多个蓝牙设备时,每一个蓝牙设备都有一条连接BluetoothSocket,此时蓝牙设备彼此间可以传递数据。1)调用Android平台getInputStream()和getOutputStream()API获得Socket的InputStream和OutputStream。2)调用read(byte[])andwrite(byte[])API完成数据传递。例程分析(Google)Bluetoothchat主界面,显示聊天信息蓝牙扫描选择界面,负责传回选择连接的设备有3个主要线程类:AcceptThread:蓝牙服务端socket监听线程。ConnectThread:蓝牙socket连接线程。ConnectedThread:连接后的通信线程BluetoothChat.javaDeviceListActivity.javaBluetoothChatService.java定义了很多常量,用于处理消息和请求。是例程的主Activity。onCreate()得到本地BluetoothAdapter设备,检查是否支持。onStart()中检查是否启用蓝牙,并请求启用,然后执行setupChat()。setupChat()中先对界面中的控件进行初始化增加点击监听器等,然后创建BluetoothChatService对象,该对象在整个应用过程中存在,并执行蓝牙连接建立、消息发送接受等实际的行为。BluetoothChat.java():开启mAcceptThread线程,由于样例程序是仅2人的聊天过程,故之前先检测mConnectThread和mConnectedThread是否运行,运行则先退出这些线程。publicsynchronizedvoidconnect(BluetoothDevicedevice):取消CONNECTING和CONNECTED状态下的相关线程,然后运行新的mConnectThread线程。publicsynchronizedvoidconnected(BluetoothSocketsocket,BluetoothDevicedevice):开启一个ConnectedThread来管理对应的当前连接。之前先取消任意现存的mConnectThread、mConnectedThread、mAcceptThread线程,然后开启新mConnectedThread,传入当前刚刚接受的socket连接。最后通过Handler来通知UI连接OK。BluetoothChatService.java():停止所有相关线程,设当前状态为NONE。publicvoidwrite(byte[]out):在STATE_CONNECTED状态下,调用mConnectedThread里的write方法,写入byte。privatevoidconnectionFailed():连接失败的时候处理,通知ui,并设为STATE_LISTEN状态。privatevoidconnectionLost():当连接失去的时候,设为STATE_LISTEN状态并通知ui。内部类:privateclassAcceptThreadextendsThread:创建监听线程,准备接受新连接。使用阻塞方式,调用BluetoothServerSocket.accept()。提供cancel方法关闭socket。privateclassConnectThreadextendsThread:这是定义的连接线程,专门用来对外发出连接对方蓝牙的请求和处理流程。构造函数里通过BluetoothDevice.createRfcommSocketToServiceRecord(),从待连接的device产生BluetoothSocket.然后在run方法中connect,成功后调用BluetoothChatSevice的connected()方法。定义cancel()在关闭线程时能够关闭相关socket。privateclassConnectedThreadextendsThread:这个是双方蓝牙连接后一直运行的线程。构造函数中设置输入输出流。Run方法中使用阻塞模式的InputStream.read()循环读取输入流,然后post到UI线程中更新聊天消息。也提供了write()将聊天消息写入输出流传输至对方,传输成功后回写入UI线程。最后cancel()关闭连接的socket。类,作用是得到系统默认蓝牙设备的已配对设备列表,以及搜索出的未配对的新设备的列表。然后提供点击后发出连接设备请求的功能。这Activity里主要是ListView的显示,以及关于蓝牙搜索的一些方法。DeviceListActivity.ja

1 / 29
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功