• 休闲生活
  • 教育教学
  • 经济贸易
  • 政法军事
  • 人文社科
  • 农林牧渔
  • 信息科技
  • 建筑房产
  • 环境安全
  • 当前位置: 达达文档网 > 达达文库 > 环境安全 > 正文

    基于Android的蓝牙通信接口

    时间:2020-09-19 07:58:44 来源:达达文档网 本文已影响 达达文档网手机站

    【摘要】为了实现Android手持终端与其他设备之间数据准确、高效、可靠的传输,本文给出了基于Android平台下的蓝牙无线传输通用接口。Android应用程序调用此接口即可简单实现与其他蓝牙设备进行无线传输数据。

    【关键词】安卓;通信接口;无线传输

    1.引言

    随着电子技术的不断进步,手持式终端越来越轻便,性能却越来越好。同时,手持式终端在物联网方面的应用十分广泛。作为当今市场广泛、功能最丰富且安全的蓝牙技术。首先,蓝牙技术包含了传感器技术、识别技术、移动通信技术等,这些技术与物联网密切相关[1]。其次,蓝牙的低功耗被看作消费电子产品、体育、健康护理、汽车、自动化等领域一大技术突破,也是物联网技术的重要组成部分。作为手持终端的Android操作系统在三年多的时间里,高速发展,特别是Android的开放性,大大降低了品的成本,Android 4.0版本对于平板电脑的支持,奠定了它在移动系统市场的主流地位。本文通过详细分析蓝牙技术以及Android Bluetooth APIs,设计出基于Android平台的蓝牙通信接口。

    2.Android操作系统

    Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。目前,最新版本为Android 4.1 Ice Cream Sandwich[2]。

    Android操作系统架构从下到上分为5部分:Linux内核、Android Runtime、库、应用程序框架和应用程序。

    (1)Linux内核

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

    (2)Android Runtime

    Android包含一个核心库的集合,提供大部分在Java编程语言核心类库中可用的功能。

    (3)Libraries

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

    (4)Application Framework

    通过提供开放的开发平台,Android使开发者能够编制极其丰富和新颖的应用程序。

    (5)应用层(Applications)

    Android装配一个核心应用程序集合。所有应用程序都是用Java编程语言写的。

    Android作为一款完整的、开放的、免费的平台,在仅仅几年多的时间就占据了移动市场的大半份额。随着Google在4.0以后的版本中对手机和平板电脑的归一管理,Android会变得越来越完善。

    3.蓝牙技术

    3.1 概念

    蓝牙是一个开放性的。短距离无线通信技术标准,它可以用于在较小的范围内通过无线连接的方式实现固定设备以及移动设备之间的网络互连,可以在各种数字设备之间实现灵活、安全、低成本、小功耗的话音和数据通信。蓝牙技术可以方便地嵌入到单一的CMOS芯片中,因此它特别适用于小型的移动终端。

    3.2 关键技术

    (1)跳频技术

    蓝牙的载频选用全球通用的2.45GHz ISM频段,由于2.45GHz的频段是对所有无线电系统都开放的频段,因此使用其中的任何一个频段都有可能遇到不可预测的干扰源。采用跳频扩谱技术是避免干扰的一项有效措施。

    (2)微微网和分散网

    当两个蓝牙设备成功建立链路后,一个微微网便形成了,两者之间的通信通过无线电波在信道中随机跳转而完成。蓝牙给每个微微网提供特定的跳转模式,因此它允许大量的微微网同时存在,同一区域内多个微微网的互联形成了分散网。不同的微微网信道有不同的主单元,因而存在不同的跳转模式。

    (3)安全性

    蓝牙技术的无线传输特性使它非常容易受到攻击,因此安全机制在蓝牙技术中显得尤为重要。虽然蓝牙系统所采用的跳频技术已经提供了一定的安全保障,但是蓝牙系统仍然需要链路层和应用层的安全管理。

    (4)纠错技术

    蓝牙系统的纠错机制分为FEC和包重发。为了减少复杂性,使开销和无效重发为最小,蓝牙执行快ARQ结构。ARQ结构分为:停止等待ARQ、向后N个ARQ、重复选择ARQ和混合结构。

    3.3 蓝牙在Android的应用

    (1)文件传输

    两台具备蓝牙的Android设备之间可以通过蓝牙协议实现无线数据的交换,上层软件之间需要定义好文件的格式。使用蓝牙传输无需定义传输参数,只需配对设备即可创建数据链路建立连接。

    (2)工业控制

    通过Android手持终端可以对工业设备进行安全、稳定、可靠的无线控制。工业设备安装蓝牙模块即可与手持终端完成配对,用户可以利用手持设备对机器进行参数的设定和修改,可以监控设备的运行状态。

    (3)智能家用电器

    越来越多的家用电器具备蓝牙功能,And-roid终端可以通过蓝牙进行无线控制电器运行。甚至各个电器终端组成一个蓝牙无线局域网,终端之间共享信息实现更为强大的功能[4]。

    4.Android的蓝牙APIs

    蓝牙无线技术是当今市场上支持范围最广泛,功能最丰富且安全的无线标准。Android平台支持蓝牙网络协议栈,允许设备之间通过无线方式交换数据。Android应用程序框架层提供了Android Bluetooth APIs给用户使用蓝牙功能。通过这些APIs各个设备的应用程序之间可以实现无线连接,启用点对点和多点的无线功能[5]。

    应用程序使用蓝牙APIs可以按如下操作:

    (1)扫描其他蓝牙设备

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

    (3)建立RFCOMM信道

    (4)通过发现服务连接到其他设备

    (5)设备间传输数据

    (6)管理多个蓝牙连接

    相关APIs介绍:

    Bluetooth Adapter类:表示本地蓝牙适配器,是所有蓝牙交互的入口。通过它你可以发现其他设备,查询配对列表,使用已知的MAC地址实例化一个Bluetooth Device对象和创建一个Bluetooth Server Socket对象来监听来自其他设备的连接。

    Bluetooth Device类:表示一个远端的蓝牙设备。通过它请求与远端设备的连接或查询设备的信息,例如:设备的名称、地址、种类、绑定状态。

    Bluetooth Socket类:表示一个蓝牙的套接字的接口。它是应用程序通过输入、输出流与其他设备通信的端口。

    要在Android应用程序中使用蓝牙特性,必须声明两个蓝牙权限:

    5.蓝牙收发程序设计

    5.1 概述

    本程序主要用到Android系统组件为Act-ivity和一个BluetoothService类,并实现了android下的多线程编程[6][7]。在Android的设计中,每个Activity都是一个独立的进程,程序中BluetoothService实例会创建两个线程,一个用作接收数据,另一个用作发送,同时还要与Activity通信(更新数据显示),就是跨线程通信,这时就需要Android下的Handler机制。在Android中提供了一种异步回调机制Handler,主要接受子线程发送的数据,并用此数据配合主线程更新UI。

    在程序的构建过程中使用了MVC模式,采用分层的结构,具体分为表示层、控制层和数据交换层,对应MVC设计模式中的View、Controller和Model[8]。

    表示层向用户展示模型的状态,在本软件中是以Activity的显示控件View类所展现,一般以layout文件夹下的布局文件承载。它主要用来显示接收数据、打开蓝牙可见性及搜索蓝牙设备。

    控制层主要负责协调表示层与数据交换层的交互。一方面将表示层的调用请求传到数据交换层,另一方面将数据交换层接收的数据反应到表示层。

    数据交换层,封装了大部分蓝牙数据传输的核心操作,如创建socket创建通道、传输数据、处理输入输出流等。

    整个系统通过采用MVC设计模式,对整个系统进行了分层,使程序逻辑清晰易懂、代码更加健壮、事件处理高效。

    5.2 具体实现

    表示层,主要使用一个View类将接收的数据以图形化的方式显示给用户。同时建立一个菜单让用户可以使用搜索蓝牙、浏览配对设备,增加一个ListView用于显示配对的蓝牙设备,当用户选择某一个设备时通过Bluetooth-Service对象建立连接。

    控制层,主要是蓝牙管理,数据更新操作,发送数据。

    蓝牙管理,首先判断设备是否支持蓝牙,并且可用:

    mBluetoothAdapter=BluetoothAdapter.getDefaltAdapter();

    如果mBluetoothAdapter不为空,则蓝牙可用,继续判断蓝牙是否打开,没有则跳转打开蓝牙:

    Intent enableIntent=new Intent(Blu-etoothAdapter.ACTION_REQUEST_ENABLE);

    startActivityForResult(enableIntent,REQUEST_ENABLE_BT);

    至此,蓝牙已可用。

    打开蓝牙后,接下来是配对设备。首先搜索蓝牙设备,创建一个用来存储搜索到的蓝牙设备BluetoothDevice的List。然后注册搜索已完成和发现设备两个接收器BroadcastReceiver。通过创建一个线程来控制蓝牙设备的搜索,当搜索中有触发BroadcastReceiver的事件,就直接传递到BroadcastReceiver进行保存。最后将所有搜索到的BluetoothDevices保存显示在ListView中。当用户选择某个Device时,系统会调用BluetoothService类的Connect方法进行蓝牙连接。

    同时系统会注册一个Handler类用于刷新数据显示。如果下层有数据传入,就会调用handleMessage方法进行刷新操作。

    交互层,主要是BluetoothService类。该类创建两个线程,一个用于蓝牙连接的创建,另一个用于数据的传输,分别是:

    class ConnectThread extends Thread{};

    class TransmitThread extends Thread{};

    Android系统通过调用Connect方法来连接蓝牙设备,这是一种阻塞调用,因此需要建立一个线程来处理。如果调用成功系统会返回一个Socket套接字,成员变量mSocket会保存这个套接字:

    mSocket=device.createInsecureRfcommSocketToServiceRecord(UUID);

    建立连接后,再创建一个处理数据传输的线程,此线程首先会创建输入输出流:

    try{

    mmInStream=mSocket.getInputStream();

    mmOutStream=mSocket.getOutput-Stream();

    }catch(IOException e){

    }

    然后不断循环读入数据,如果检测到读入为0则表明连接已经断开:

    while(true){

    try{

    bytes=mmInStream.read(buffer);

    mHandler.obtainMessage(agrs...).sendToTarget();

    }catch(IOException e){

    Break;

    }

    }

    同时BluetoothService类提供Write方法来实现数据的发送:

    public void write(byte[]buffer){

    try{

    mmOutStream.write(buffer);

    }catch(IOException e){

    }

    }

    6.结语

    本接口应用于Android手持终端,手持终端通过可以方便地无线接收和处理模块发送的数据。整个方案稳定可靠,成本低廉,提高了控制的便利性。用户只需专注于数据的处理,而不必关注硬件之间通讯的问题。

    参考文献

    [1]刘海涛.物联网技术应用[M].机械工业出版社,2011.

    [2]Wikipedia.Android(operating system)[OL].http://en.wikipedia.org/wiki/Android_(operating_system).

    [3]Sans Serif.What Android Is[OL].http:///guide/topics/connectivity/bluetooth.html.

    [6]杨丰盛.Android应用开发揭秘[M].机械工业出版社,2010.

    [7][印]Satya Komatineni,[美]Sayed Hashimi.精通Android3 [M].杨越,译.人民邮电出版社,2011.

    [8]阎宏.Java与模式[M].电子工业出版社,2002.

    作者简介:

    陈志崇(1985—),男,广东人,硕士研究生,主要研究方向:机器人智能控制。

    张祺(1975—),男,广东人,博士,副教授,研究方向:机器人智能控制、机器视觉。

    相关热词搜索: 蓝牙 接口 通信 Android

    • 生活居家
    • 情感人生
    • 社会财经
    • 文化
    • 职场
    • 教育
    • 电脑上网