APP下载

基于Android健康服务终端蓝牙传输软件的设计

2012-06-23李黎国

电子科技 2012年5期
关键词:蓝牙应用程序传输

李黎国,张 辉,程 号

(西安电子科技大学电子工程学院,陕西 西安 710071)

随着物联网技术的不断推动,计算机、无线通信、消费类电子呈现快速发展。体现物联网应用的热点健康监护领域,各种传感器及无线的应用,更能体现出物联网技术的优势[1]。作为当今市场支持范围最广泛、功能最丰富且安全的蓝牙技术与物联网技术。首先,蓝牙技术包含了传感器技术、识别技术、移动通信技术等,这些技术与物联网密切相关。其次,蓝牙的低功耗被看作消费电子产品、体育、健康护理、汽车、自动化等领域一大技术突破,也是物联网技术的重要组成部分。尤其是蓝牙4.0标准拥有着低耗能、传输范围更大、支持拓扑结构等特性。蓝牙技术的不断进步将为物联网的发展提供动力。而Android操作系统在两年多的时间里,飞速发展,成功超越了塞班、IOS、微软等操作系统,足以证明其发展潜力及OS未来的发展趋势。尤其是Android的开放性,大大降低了产品的成本,3.0版本及4.0版本对于平板电脑的支持,这足以使得Android在OS市场占有不败之地。本文结合两者的优势,详细分析了蓝牙技术和Android操作系统,并研究了在Android下如何对蓝牙进行应用,最后设计出一款基于Android健康服务终端的蓝牙传输软件。

1 蓝牙技术

蓝牙技术联盟(Bluetooth SIG)成立于1998年,是由爱立信、英特尔、联想、微软、摩托罗拉、诺基亚及东芝等公司发起成立。总部设在美国柯克兰州,从建立之初到现在共有13528个全球成员,这些成员之间进行广泛的合作,为蓝牙技术的发展提供指导意见,推动蓝牙的发展。同时在香港、北京、台北和日本东京、韩国首尔和瑞典的马尔摩都有办事机构。

蓝牙无线通信技术工作在工业、科学以及医学上公用的2.4 GHz ISM公用频段,这一频段全球通用且无需授权。蓝牙系统[2]采用全双工分时传输信息技术,信息以分组结构的方式进行数据交换。在传输过程中,各信息分组用不同的跳频算法实现信息传输。“跳频”技术是把频带分成若干个跳频信道,在一次连接中,无线电收发器按一定的码序列不断地从一个信道“跳”到另一个信道,只有收发双方按这个规律进行通信,而其他的干扰不可能按同样的规律进行干扰;跳频的瞬时带宽很窄,这就使得来自同样工作在2.4 GHz ISM频段的家用电器,如微波炉等带来干扰的可能性变得很小。与其他工作在相同频段的无线系统相比,蓝牙跳频每秒可以达到1600次,速度更快,而且数据包更短,从而使蓝牙比其他系统更稳定。此外,蓝牙通信还具有以下优点:(1)消耗功率极低。(2)辐射小,对人体安全影响不大。(3)成本低廉,容易实现。

目前,蓝牙技术已经得到普遍的应用,全球大约80%以上的手机使用了蓝牙技术。蓝牙技术的普及为物联网的发展提供了一种技术选择,具有极大的发展空间。

2 Android操作系统

Android是专为移动终端打造的开放、完整的移动平台,它是一款基于Linux内核的开源操作系统,由操作系统、中间件、用户界面和应用程序组成。由Google及其开放手机联盟共同研发,并在2008年9月份推出了Android第一版。

Android操作系统架构[3]从下到上有5部分组成:Linux内核、Android Runtime、库、应用程序框架、应用程序。Android系统架构如图1所示。

图1 Android系统架构

Linux内核(Linux Kernel)。Android基于 Linux 2.6提供核心系统服务,这是Android平台开放的基础,它提供了例如安全机制、内存管理、进程管理、网络堆栈、驱动模型等内容。Linux Kernel也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务,使得应用开发人员无需关心硬件细节。

Android Runtime。Android包含一个核心库的集合,提供大部分在Java编程语言核心类库中可用的功能。每一个Android应用程序是Dalvik虚拟机中的实例,运行在他们自己的进程中。Dalvik被设计成在一个设备可以高效地运行多个虚拟机。Dalvik VM虚拟机可执行文件格式是.dex,dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。

Libraries。Android包含一个C/C++库的集合,这些库供Android系统的不同组件使用。这些功能通过Android的应用程序框架(Application Framework)暴露给开发者

Application Framework。通过提供开放的开发平台,Android使开发者能够编制极其丰富和新颖的应用程序。开发者可以自由地利用设备硬件优势、访问位置信息、运行后台服务、设置闹钟、向状态栏添加通知等等,很多很多。

应用层(Applications)。Android装配一个核心应用程序集合,包括电子邮件客户端、SMS程序、日历、地图、浏览器、联系人和其他设置。所有应用程序都是用Java编程语言写的。

Android作为第一款完整的、开放的、免费的平台,在仅仅两年多的时间,从最初的1.0版本到现在主流的2.3版本,以至刚刚发布的4.0版本,每个版本的发布对于Google来说都是一个质的飞跃,根据市研机构Gartner在2011年第二季度的OS份额调查数据显示,Android市场占有率达43.4%,成为最大的智能手机系统,随着Android手机的普及,Android应用的需求必定会越来越大,这将是一个有着巨大潜力的市场。

3 Android操作系统下蓝牙的研究

Android平台支持蓝牙协议栈[4],因此支持在两个蓝牙设备之间进行数据的传输。Android应用框架层提供了允许蓝牙进行连接的API,通过这些API可以实现通过蓝牙的应用程序是无线连接,建立端到端的连接模式。使用蓝牙API,可以实现应用的如下功能:

(1)寻找其他蓝牙设备。

(2)查询与本地蓝牙适配器配对的设备。

(3)建立RFCOMM信道。

(4)在两个不同的蓝牙设备之间传输数据。

(5)管理多个蓝牙连接。

下面详细介绍几个重要的API:

BluetoothAdapter:代表本地的蓝牙适配器,是所有蓝牙交互的的入口点。利用它可以发现其他蓝牙设备,查询已经绑定的设备,使用已知的MAC地址实例化一个蓝牙设备和建立一个BluetoothServerSocket来监听来自其他设备的连接。

BluetoothDevice类:代表远端的蓝牙设备,使用它请求远端蓝牙设备连接或获取远端蓝牙设备的名称、地址、种类和绑定状态。

Bluetoothsocket类:代表蓝牙套接字的接口,它是应用程序通过输入、输出流与其他蓝牙设备通信的连接点。

Blueboothserversocket类:代表打开服务连接来监听可能到来的连接请求,为连接两个蓝牙设备必须有一个设备作为服务器打开一个服务套接字。当远端设备发起连接请求,并且已经连接到了的时候,Blueboothserversocket类将会返回一个bluetoothsocket。

Bluetoothclass类:描述了蓝牙设备的一般特点和能力。它的只读属性集定义了设备的主、从设备类和一些相关服务。

4 蓝牙传输软件的实现

4.1 软件功能描述

蓝牙传输软件主要实现对各个模块的管理,模块数据的接收、分析、存储、发送及复杂的人机交互等任务。为能够合理分配硬件资源、提供更人性化的界面以及使用通用的硬件设备,在软件设计时,健康服务终端采用Android操作系统为用户界面。

4.2 图形用户界面设计

程序界面主要包括3个与用户进行交互的Activity:(1)模块显示。(2)血氧历史记录。(3)血压历史记录。

为减少应用所需的内存量,项目没有添加任何图片及声效。界面简单直观,便于操作。首先将各模块列表作为应用程序的主界面。程序运行的最开始加载此项。

当应用程序启动后,第一个显示出各个模块的列表和当前测试数据。界面设计通过XML的资源文件进行定义。

历史记录模块采用了专为Android系统设计的图形库AChartEngine[5],可以用于绘制多种图表。

历史记录的显示主要通过不同的线条颜色,点的形状来区分显示的不同内容。

4.3 软件功能设计

软件功能设计包括蓝牙管理,连接建立,数据传输及数据处理。

蓝牙部分设计

在Android操作系统下,提供了对蓝牙管理的API,蓝牙开发流程如图2所示。首先要判断设备是否支持蓝牙,并且保证蓝牙可用。

mBluetoothAdapter=BluetoothAdapter.getDefault-Adapter();

如果蓝牙可用,则mBluetoothAdapter不为空,然后判断蓝牙是否打开,若未打开,则提示用户打开蓝牙。

到此,蓝牙设备已经打开。

在Android应用程序开发中,若要建立两个蓝牙设备的连接,必须实现客户端和服务器端代码。一个用来开启服务监听,一个发送连接请求。当它们都拥有一个蓝牙套接字在同一RFECOMM信道上时,说明它们之间已经建立好连接。服务器端采用accept()方法来建立连接。由于accept()方法是一种阻塞调用,因此不应该放在主Acitvity里,要新建一个线程来管理。

图2 蓝牙开发流程

而客户端则采用connect()方法来建立连接。同样也是一种阻塞调用,同样需要新建一个线程来管理。

当设备连接上以后,每个设备都拥有各自的Bluetoothsocket。现在就可以实现设备之间数据共享了。同样读取和写操作都是阻塞调用,需要建立一个专用的线程来管理。

在两个Activity之间,可以用Handler传递信息,使用getInputStream()获得由传感器传来的数据并显示在主界面中。

4.4 蓝牙传输软件的运行与测试

由于蓝牙不能在虚拟机中测试,所以将程序打包后,安装到支持蓝牙的Android手机中,然后点击血压按钮,将与血压模块建立连接,同时实时显示当前血压值。点击历史记录按钮,则会显示一周内测试结果,并以图片形式显示出来。程序运行结果如图3和图4所示。

图3 主界面

5 结束语

图4 历史记录界面

Android在OS市场份额的不断增加,足以体现出Android的优势,而蓝牙4.0版本低功耗技术更适合于远程控制、医疗保健及运动感应器等新兴市场。文中结合两者的优势,设计出一款基于android的蓝牙传输软件,主要应用于健康服务领域,在实际生活中具有很强的应用性。论文介绍了软件的初步设计,还有很多功能需要完善,比如界面的美化,更方便快捷地管理蓝牙设计,数据传输的稳定性及准确性等,这些将是以后研究的重点。

[1]谢昕.基于物联网的远程家庭健康监护传感器网络研究[D].北京:北京邮电大学,2011.

[2]浦东兵,赵东来,张雪,等.基于蓝牙的智能家居网管设计[J].信息技术,2010(2):11 -12.

[3]E2EColud工作室.深入浅出 Google Android[M].北京:人民邮电出版社,2009.

[4]黄伟敏.Android平台的即时通信系统客户端设计方案[J].现代电子技术,2011,35(16):148 -150.

[5]鲍立,庄奕琪.基于蓝牙的MPEG4无线视频传输研究[J].电子科技,2003,16(12):37 -39,41.

[6]白璐,李国民.Android系统WMA文件播放功能的设计与实现[J].电子科技,2011,24(9):158 -161.

猜你喜欢

蓝牙应用程序传输
蓝牙音箱的直线之美
混合型随机微分方程的传输不等式
牵引8K超高清传输时代 FIBBR Pure38K
删除Win10中自带的应用程序
关于无线电力传输的探究
谷歌禁止加密货币应用程序
简单、易用,可玩性强Q AcousticsBT3蓝牙音箱
适合自己的才是最好的 德生(TECSUN) BT-50蓝牙耳机放大器
紧急:蓝牙指尖陀螺自燃!安全隐患频出
支持长距离4K HDR传输 AudioQuest Pearl、 Forest、 Cinnamon HDMI线