Android+2.0+蓝牙功能及RFCOMM、SDP简介.doc_第1页
Android+2.0+蓝牙功能及RFCOMM、SDP简介.doc_第2页
Android+2.0+蓝牙功能及RFCOMM、SDP简介.doc_第3页
Android+2.0+蓝牙功能及RFCOMM、SDP简介.doc_第4页
全文预览已结束

下载本文档

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

文档简介

Android 2.0 蓝牙功能及RFCOMM、SDP简介一Android 2.0蓝牙功能简介Google 于2009年10月28日发布了Android SDK 2.0版本。对于开发人员来说,最关心的莫过于新版本添加了哪些新特性,API有哪些改动。2.0版本发布前,最受关注的就是能否在新版本中添加蓝牙功能。Google果然不负众望,在2.0版本中加入了蓝牙功能,使Android平台功能更加强大。蓝牙模块实现了以下功能: 蓝牙的打开/关闭。 设备和服务的探索。 使用RFCOMM连接远程设备发送/接收数据。 公布RFCOMM服务和监听接入的RFCOMM连接。新版本添加了android.bluetooth包。该包提供了一些用于管理蓝牙设备的功能类。蓝牙的APIs允许应用程序连接或断开headset(头戴式耳机),扫描其他蓝牙设备并与之配对。增强了写和修改本地服务发现协议(Service Discovery Protocol ,SDP)数据库,查询其他蓝牙设备SDP数据库,在Android上建立RFCOMM通道/Socket,连接到其他设备指定Socket的控制。 注意:不是所有的Android设备都能保证有蓝牙功能。下面是android.bluetooth包中类的简述:BluetoothAdapter代表本地蓝牙适配器。可以使用 getDefaultAdapter() 方法获得默认的本地蓝牙适配器。 使用 BluetoothDevice 类在远程蓝牙设备上进行操作。 BluetoothClass表示一个蓝牙类。蓝牙类是一个32位字段,这些位的格式定义在/Technical/AssignedNumbers/baseband.htm 。这个类包含32位字段,提供常数和方法去确定在这个字段中编码的服务类和设备类(服务类可以有多个)。 每个蓝牙类可组成零至多个服务类,确切的说是一个设备类。这个设备类进一步分解为主要和次要设备类组件。 这个类通常用于表示一个设备(如在用户界面显示一个图标),但不能可靠的描述哪个蓝牙配置或服务被设备支持。精确的服务搜索是通过SDP请求得到的。 .远程设备可以通过getBluetoothClass()方法检索这个类。BluetoothClass.Device蓝牙设备类。确切的说,每个 BluetoothClass 编码一个设备类,分为主要和次要组件。 BluetoothClass.Device 里的常量表示一个主设备和从设备的组合(即完整的设备类)BluetoothClass.Device.Major 中的常量表示的只是主设备类。 BluetoothClass.Device.Major参见BluetoothClass.DeviceBluetoothClass.Service蓝牙服务类。每个蓝牙类编码零至多个服务类。BluetoothDevice代表一个远程蓝牙设备。可以使用 getRemoteDevice(String) 方法创建一个BluetoothDevice. 实际上这个类是一个蓝牙硬件地址的简单封装。这个类的对象是不变的。这个类的操作在远程蓝牙硬件地址上执行,可使用蓝牙适配器创建这个蓝牙设备。 BluetoothServerSocket一个监听蓝牙的Socket。这个蓝牙Socket的接口类似于TCP的Sockets: Socket 和 ServerSocket. 在服务端,使用一个BluetoothServerSocket 创建一个监听socket. 它会返回一个新的已接收连接的BluetoothSocket 。在客户端,使用同样的BluetoothSocket 对象去初始化输出连接和管理已连接的socket. 最常见的蓝牙Socket类型是RFCOMM. RFCOMM 是一个在蓝牙上建立的定向的流传输连接。又称为串行端口配置文件Serial Port Profile (SPP). 使用 createRfcommSocketToServiceRecord(UUID) 去创建一个新的BluetoothSocket,用于一个输出连接到远程蓝牙设备。 使用 listenUsingRfcommWithServiceRecord(String, UUID) 去 创建一个用于监听的BluetoothServerSocket用于输入连接到本地BluetoothAdapter. BluetoothSocket 和 BluetoothServerSocket 是线程安全的。特别要注意的是,close()方法会立即中断操作并关闭socket. BluetoothServerSocket 中的所有方法都需要Manifest.permission 的BLUETOOTH 权限。BluetoothSocket一个已连接或正在连接的蓝牙端口。与服务端的连接参见BluetoothServerSocket 。该类中的所有方法也都需要Manifest.permission 的BLUETOOTH 权限。Android蓝牙模型原理及设备之间的连接已再【eoeAndroid特刊】第六期中有所说明,在此不做赘述。详情请参见【eoeAndroid特刊】第六期4-6节。二协议简述蓝牙规范(Specification of the Bluetooth System)就是蓝牙无线通信协议标准,它规定了蓝牙应用产品应遵循的标准和需要达到的要求。蓝牙协议规范遵循开放系统互连参考模型(Open System Interconnetion/Referenced Model, OSI/RM),从低到高地定义了蓝牙协议堆栈的各个层次。在蓝牙规范中,中介协议是为高层应用协议或程序在蓝牙逻辑链路上工作提供了必要的支持,为应用曾提供了各种不同的标准接口。这部分协议包括RFCOMM、SDP、IrDA、(PPP/IP/TCP/UDP)、(TCS/AT)等。 2.1 串口仿真协议(RFCOMM) 基于欧洲电信标准化协会(European Telecommunication Standardization Institute, ETSI)的TS07.10标准制定。该协议用于模拟串行接口环境,使得基于串口的传统应用仅作少量的修改或者不做任何修改可以直接在该层上运行。通过提供串行端口仿真,RFCOMM 可以同时支持遗留串行端口应用程序以及其它应用程序中的 OBEX 协议。RFCOMM 是 ETSI TS 07.10 标准的一个子集,也具有一些蓝牙 特定的适配性。RFCOMM 协议能在两台蓝牙设备之间同时维持多达 60 个连接。蓝牙设备中同时使用的连接数目取决于特定实施。由于有了 RFCOMM,完整的通信路径包括两个运行在不同设备(通信端点)上的应用程序及它们之间的通信段。上图显示了完整的通信路径RFCOMM 旨在覆盖利用串行端口设备的应用程序。在简单的配置中,通信段是一个设备至另一设置之间(直接连接)的蓝牙链路,参见下图。当通信段为另一网络时,蓝牙无线技术可作为设备和网络连接设备(例如调制解调器)之间的路径。RFCOMM 仅与直接连接设备或网络环境中的设备和调制解调器之间的连接有关。 2.2 服务发现协议(Service Discovery Protocol,SDP) 为实现蓝牙设备之间相互查询及访问对方提供的服务。服务发现应用是一个特定的由用户发起的应用。服务发现工作与两个在蓝牙设备中的SDP实例交互,其目的是使用某个特定的传输服务(RFCOMM)或者特定的用途(文件传输、无线电话、LAN AP等)。SDP直接支持以下几种服务查询:1).通过服务类进行服务查询;2).通过服务属性对服务进行查询;3).服务浏览。一般的服务发现应用都被以上的三种服务查询所覆盖。其中前两个代表了查询已知或者指定的服务,并对类似“服务A是否有效?”或者“具有B和C特性的服务A是否有效?”的问题作出

温馨提示

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

评论

0/150

提交评论