一种基于蓝牙的交互式系统设计与实现*

2014-09-13 12:35王昭顺徐柏权
计算机工程与科学 2014年8期
关键词:蓝牙界面状态

王昭顺,徐柏权

(1.北京科技大学计算机与通信工程学院,北京 100083;2.廊坊东方职业技术学院电子信息工程系,河北 廊坊 065001)

一种基于蓝牙的交互式系统设计与实现*

王昭顺1,徐柏权2

(1.北京科技大学计算机与通信工程学院,北京 100083;2.廊坊东方职业技术学院电子信息工程系,河北 廊坊 065001)

随着无线互联技术和移动终端技术的发展,手机等移动终端用户对蓝牙产品的功能提出了更高的要求。蓝牙采用推送技术进行数据传输,用户只能选择是否接收,不能对蓝牙发送端的数据进行自主交互浏览。采用J2ME和蓝牙技术实现一种在移动蓝牙终端上使用的交互式系统,有效地利用了J2ME 跨平台的优势,以及蓝牙传送数据易用性和实用性等优点。根据对JSR82规范提供的Java蓝牙无线技术API的研究,给出了蓝牙交互式系统的设计方案和系统结构。通过J2ME的无线应用开发包和MIDlet编程模型,实现了交互式系统。

蓝牙技术;J2ME;交互式

1 引言

蓝牙(Bluetooth)是一种用于替代某些电子设备上使用电缆或连线的短距离无线连接技术,具有低功耗、低成本的特性[1]。随着无线互联技术和各种移动终端技术的发展,手机等移动终端用户对于蓝牙产品的功能提出了更高的要求。蓝牙采用推送技术进行数据传输,用户只能选择是否接收,不能对蓝牙发送端的数据进行自主交互浏览。

本文参照目前的蓝牙技术以及J2ME平台,开发一个基于J2ME的蓝牙交互式系统,提出了采用J2ME和蓝牙技术,实现一种在移动蓝牙终端上使用的交互式系统,用户到达一个蓝牙信号覆盖区域时会接收到蓝牙发送设备发送到手机上的J2ME应用程序,用户手机安装上系统后可以自主交互地浏览蓝牙发送终端的内容。同时,可以有效地利用J2ME 跨平台的优势,以及蓝牙传送数据易用性和实用性等优点。

2 关键技术

2.1 蓝牙技术

蓝牙是一种支持设备短距离通信(一般10 m内)的无线电技术,能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换[1]。

蓝牙技术由一组称为协议栈的技术协议规定,规范的目标是允许遵循规范的应用能够进行相互间操作。为了实现互操作,在远程设备上的对应应用程序必须以同一协议栈运行。不同应用可运行于不同协议栈。每一协议栈都使用同一公共蓝牙数据链路和物理层。图 1所示为蓝牙的协议结构(协议不包含最低的射频层)。

Figure 1 Architecture of Bluetooth protocol图1 蓝牙协议结构

蓝牙2.0 使用EDR技术增加了带宽,提高设备同时处理多项任务或同时连接多个蓝牙设备的能力,大大提高了蓝牙技术的数据传输速率。蓝牙3.0的核心是AMP(Generic Alternate MAC/PHY)交替射频技术,允许蓝牙协议栈针对任一任务动态地选择正确射频。通过集成802.11 PAL协议适应层,蓝牙在需要的时候调用802.11 WI-FI用于实现高速数据传输,可以用于录像机至高清电视、PC至PMP、UMPC至打印机之间的资料传输。同时,引入了增强电源控制(EPC)机制,降低实际空闲功耗。蓝牙4.0技术包含三个子规范:传统蓝牙技术、高速蓝牙和新的蓝牙低功耗技术。这三个规范可以组合或者单独使用。

2.2 JSR82(JABWT)规范

JSR82规范揭示了蓝牙软件栈给Java平台的开发者。规范中定义了如下两个包[2]:

(1)javax.bluetooth;

(2)javax.obex。

上面两个包各自是独立的,它们彼此并不依赖对方。上述两个包都需要使用通用连接框架,因此它们都和javax.microedition.io有关联,如图2所示。

Figure 2 Package structure of JABWT图2 JABWT的包结构

2.3 蓝牙连接应用模型

开发基于蓝牙通信的应用程序通常采用客户端和服务器的应用程序模型。服务(Service)是通信的核心所在,这个服务向客户端提供了某种功能性的服务[3]。开发者一旦创建了一个服务之后首先需要把这个服务注册到服务查找数据库SDDB(Service Discovery Data Base)中,然后等待客户端连接。

客户端首先必须通过服务发现协议SDP(Service Discovery Protocol)查找到服务所在的设备,然后在设备上查询服务。一旦获得了服务,也就获得了连接服务器的URL。借助通用连接框架的方法即可获得相关的Connection实例,客户端就可以真正地使用服务器提供的服务了。

一个典型的蓝牙功能的应用可以作为一个服务端或是一个客户端,一个服务的提供者或是消费者,或者同时表现出服务和客户的行为。图3是一个典型的蓝牙规范用例。

Figure 3 A typical use case with Bluetooth function图3 一个典型的具有蓝牙功能的用例

3 系统设计与实现

3.1 系统结构

交互式蓝牙媒体系统的总体架构如图4所示。软件结构包含六部分:BTSDK、系统管理模块、蓝牙设备模块、数据传输模块、记录管理模块和界面模块。

Figure 4 Overall architecture of interactive Bluetooth system图4 交互式蓝牙系统的总体架构

(1)BTSDK将蓝牙模块提交上来的数据进行封装,通过回调函数的方式与外界交互。

(2)系统管理模块将部分函数以回调函数的方式注册给BTSDK,回调时即进行相关处理并反馈给用户界面,同时将BTSDK的接口进行进一步封装,供外部模块使用。

(3)蓝牙设备模块封装了所有的蓝牙设备处理模型,包含蓝牙设备和蓝牙服务的搜索发现、设备管理,以及部分用于蓝牙连接的函数信息。

(4)数据传输模块可以分为两个部分:数据上传和数据下载。

(5)记录管理模块用来保存所有已经搜索到的蓝牙设备,以便用户再次进行数据传输。

(6)界面模块设计与传送文件相关的用户界面,包含初始界面、搜索界面、文件界面、下载界面等。

3.2 蓝牙设备管理

本系统通过JSR82 来实现与移动蓝牙终端的通信,蓝牙设备模块包含所有与蓝牙设备及其操作相关的模型,包括查找设备与服务、设备管理、设备通信三部分。

3.2.1 查找设备与服务

设备和服务的查找是由JABWT中的DiscoveryAgent类和DiscoveryListener[4]类完成的。在设备和服务查找过程中,回调机制被使用。无论是DiscoveryAgent查找设备还是查找服务的方法,最后一个参数都是DiscoveryListener,一旦服务或者设备被查找到,DiscoveryListener的相关方法就会被调用。

3.2.2 设备管理

JSR82 规范介绍了用于设备管理的三个类:LocalDevice、RemoteDevice和DeviceClass[4]。LocalDevice获得本地蓝牙设备的静态信息。它依靠javax.bluetooth.DeviceClass 类来获得设备类型和它所提供的服务类型。RemoteDevice 获得蓝牙邻近区的设备信息。获得RemoteDevice 对象后就可以调用getBluetoothAddress()和getFriendlyName()方法获得远程设备的地址和好友名称。

3.2.3 设备通信

两台设备必须共享通用的通信协议才能通信。为了使应用能够访问更多的蓝牙服务,蓝牙Java API 提供了一个机制,它允许连接到使用RFCOMM、L2CAP或OBEX协议的任何服务[5]。

通过以上步骤实现了移动蓝牙终端与蓝牙发送器连接以及数据的上传和下载过程。

3.3 状态机描述系统

交互式蓝牙媒体系统的系统管理模块应用有限状态机实现系统状态的标识与转变。蓝牙交互式系统应用层状态转换如图5所示。

Figure 5 Bluetooth interactive system application layer state conversion diagram图5 蓝牙交互式系统应用层状态转换图

在系统中State类和UIFsm类是实现有限状态机的基类,状态改变过程通过Action类对象反馈调用Transition类对象进行状态过渡。状态过渡用到的几个主要函数如下:

(1)addTransition(Stringe, States):添加定义的过渡状态到当前系统状态;

(2)addAction(intw, Stringn, Stringe, intf):添加当前状态的事件操作;

(3)doAction(intfun, Fsmfsm):状态转变方法,实现对应状态的过渡。

系统通过创建的Model接口和UIFsm类中的addModel()方法将State与模型类进行匹配。系统各模型的状态与状态机的状态相对应,并通过以下函数进行模型转换:

(1)addModel(Stringstate, Modelmodel):添加模型到当前状态;

(2)getCurrentModel():获取Model的名字;

(3)getModel(Stringstate):获得模型对象实例;

(4)outEvent(Stringe): UIFsm状态转换事件处理方法,控制系统中的状态改变;

(5)incoming(Stringe, Fsmf):State内部状态转换处理方法;

(6)outgoing(Stringe, Fsmf):State内部状态转换处理方法。

3.4 用户界面以及操作的实现

系统的每个界面都继承javax.microedition.lcdui包中提供的API,主要由Display和Displayable组成。

用户界面与交互操作实现如图6所示。

Figure 6 User interface and interactive operation implementation structure diagram图6 用户界面与交互操作实现结构图

程序中首先定义了一个BaseScreen抽象类,类中通过makeActive()方法把Display的setCurrent()方法进行封装并提供给所有继承子类。Display通过setCurrent()方法切换当前屏幕。程序中绝大部分对Item的操作是继承自TabItem实现的,TabItem选用CustomItem组件作为父类,它与Canvas的事件传输进行交互操作,能够获得屏幕上显示的Item对象,然后通过调用TabItem的各种Form对象进行交互。在TabItem类中要实现的是与设备相关的各种操作,如手机键盘按键的各种移动、按下和释放操作的响应。

3.5 程序运行机制与事件处理方法

程序运行与事件处理流程如图7所示。

Figure 7 Running of the program and event processing flow chart图7 程序运行与事件处理流程图

程序由MIDlet的状态函数进入系统,首先进行初始化并进入默认的设备界面,用户菜单包括Browser、Discover和Download命令,当用户通过按键选择相关命令后会触发当前屏幕的Form对象中对相关命令的处理函数。

在事件处理中,Command类是对一个动作语义的封装,而动作的具体行为必须在CommandListener中的commandAction()方法中实现。Form对象全部继承自BaseScreen类,BaseScreen类实现了CommandListener, CommandListener是MIDlet程序在屏幕导航中广泛使用的接口,Displayable对象通过addCommand()方法添加Command实例来接受高级事件,添加之后利用commandAction()方法进行事件处理。

3.6 与实际产品的互操作测试结果

蓝牙SIG 定义了一些测试用例,但它们的测试路径覆盖率不够高,为此我们经过仔细分析软件执行路径和profiles 自身的关键特征,新增了异常情况和特殊情况下的测试用例,以尽可能地提高测试充分性。

表1为根据蓝牙互操作规范定义的部分测试用例,每个用例提供了一个使用场景和期望的结果。

Table 1 Part of test cases表1 部分测试用例设计

图8所示为程序部分功能屏幕截图。

Figure 8 Part of the program screenshot图8 程序屏幕截图

测试结果发现,对于Nokia、Sony Erricson 与Motorola 等品牌的手机,交互式蓝牙系统都能够正常安装。安装成功后手机系统在程序初始化后都能正常进入默认界面,并顺利通过测试用例的测试。测试中由于不同手机的导航键属性值不同,导致部分手机系统中不能通过导航键跳转界面,这属于程序考虑范围内,程序通过手机数字按键实现了导航键的跳转功能,测试结果与预期结果相同。

3.7 与传统蓝牙产品的技术比较

大多数蓝牙技术采用推送技术进行数据传输,用户只能单向地选择是否接收发送端发送过来的数据,但是并不能对发送端的数据内容进行自主交互浏览。

交互式蓝牙系统使用户与蓝牙发送器之间产生互动,能使用户任意地选择所需的内容,大大地增强了整个蓝牙网络系统的交互性与适用性。

4 结束语

本文针对蓝牙用户不能对蓝牙发送内容进行选择接收这一缺陷,采用J2ME和蓝牙技术开发了一个基于J2ME的蓝牙交互式系统。

蓝牙交互式系统突破了传统手机蓝牙及蓝牙发射器的局限性,使用户手机与蓝牙发送器产生自主的互动效应,用户可自主地选择所需浏览的节目内容和使用服务娱乐功能,使各类型场所均可形成一个区域性网络。蓝牙手机用户真正能够得到他们喜欢和需要的功能与服务,其应用范围将十分广泛。

[1] McDermott-Wells P. What is Bluetooth [J]. IEEE Potentials,2004,23 (5):33-35.

[2] Wang Li-ming,Yin Bo,Bie Zai-ping. Implementation of LBS system based on J2ME and Bluetooth GPS[J]. Microcomputer Information,2009,25(2-3):5-7.(in Chinese)

[3] Zhou Zhen,Guo Qing-ping. Development and implementation of Bluetooth based on J2ME [J].Computer Knowledge and Technology(Academic Exchange),2007(13):93-94.(in Chinese)

[4] Haartsen J,Naghshineh M,Inouye J,et al.Bluetooth:Vision,goals,and architecture[J]. Mobile Computing and Communications Review, 1998, 2(11):65-69.

[5] Ma Yi-hua, Feng En-xin. Applications and implementation of J2ME Bluetooth technology based on JSR-82 specification[J].Radio Engineering,2004,34(8):48-50.(in Chinese)

附中文参考文献:

[2] 王立明,殷波,别再平.基于J2ME和蓝牙GPS的LBS系统设计[J]. 微计算机信息,2009,25(2-3):5-7.

[3] 周臻,郭庆平.基于J2ME的蓝牙应用开发及实现[J].电脑知识与技术(学术交流),2007(13):93-94.

[5] 马毅华,冯恩信.基于JSR-82规范的J2ME蓝牙应用及其实现[J].无线电工程,2004,34(8):48-50.

WANGZhao-shun,born in 1969,PhD,professor,CCF member(E200006628S),his research interest includes software engineering.

DesignandimplementationofaninteractivesystembasedonBluetooth

WANG Zhao-shun1,XU Bai-quan2

(1.School of Computer and Communication Engineering,University of Science and Technology Beijing,Beijing 100083;2.Department of Information Engineering,Langfang Oriental Institute of Technology,Langfang 065001,China)

With the development of the wireless connectivity technology and the mobile terminal technologies, mobile terminal users such as mobile phone users ask Bluetooth products for higher requirements. Bluetooth uses the push technology to transfer data, and users only have authority to choose whether to receive the data but cannot browse the data from the Bluetooth transmitter independently and interactively. An interactive system based on the J2ME and Bluetooth technologies is introduced. It utilizes the advantage of cross-platform of J2ME as well as the advantages of easy of use and practicability of Bluetooth technology to transfer data. Based on the JSR82 Java Bluetooth wireless technology API provided in the specification, the design scheme and system structure of the proposed Bluetooth interactive system is given. Based on the J2ME wireless application development kit and the MIDlet programming model, the interactive system is implemented.

Bluetooth protocol;J2ME;interactive

1007-130X(2014)08-1500-05

2013-06-28;

:2013-11-15

TP391.9

:A

10.3969/j.issn.1007-130X.2014.08.013

王昭顺(1969-),男,江西南丰人,博士,教授,CCF会员(E200006628S),研究方向为软件工程。E-mail:zhswang@sohu.com

通信地址:065001 河北省廊坊市廊坊东方职业技术学院信息工程系 徐柏权

Address:Department of Information Engineering,Langfang Oriental Institute of Technology,Langfang 065001,Hebei,P.R.China

猜你喜欢
蓝牙界面状态
蓝牙音箱的直线之美
国企党委前置研究的“四个界面”
状态联想
简单、易用,可玩性强Q AcousticsBT3蓝牙音箱
适合自己的才是最好的 德生(TECSUN) BT-50蓝牙耳机放大器
生命的另一种状态
基于FANUC PICTURE的虚拟轴坐标显示界面开发方法研究
紧急:蓝牙指尖陀螺自燃!安全隐患频出
人机交互界面发展趋势研究
坚持是成功前的状态