一种通过蓝牙信息控制蓝牙受控终端的方法及系统与流程

文档序号:11254497阅读:472来源:国知局
一种通过蓝牙信息控制蓝牙受控终端的方法及系统与流程

本发明涉及蓝牙通信技术领域,更具体地,涉及一种通过蓝牙信息控制蓝牙受控终端的方法及系统。



背景技术:

蓝牙(bluetooth):是一种无线技术标准,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换,有效距离一般在10米左右,如今蓝牙由蓝牙技术联盟(bluetoothspecialinterestgroup,简称sig)管理。蓝牙技术联盟在全球拥有超过25,000家成员公司,它们分布在电信、计算机、网络、和消费电子等多重领域。

目前蓝牙的信息传输主要以透传为主,在透传中,只负责将需要传送的信息传送到目的节点,同时保证传输的质量即可,而不对传输的业务进行处理,从而只将蓝牙作为一种信息传递手段而已,仅仅将数据从蓝牙主控终端发送到蓝牙受控终端,局限了蓝牙的使用范围。并且使得很多蓝牙受终端的扩展功能无法通过蓝牙主控终端进行控制。



技术实现要素:

本发明要解决的技术问题是提供一种通过蓝牙传输的信息使得蓝牙受控端能够执行指令的方法,可通过蓝牙主控终端向蓝牙受控终端发送操作指令。

根据本发明的一个方面,提供一种通过蓝牙信息控制蓝牙受控终端的方法,包括:

与蓝牙主控终端建立连接,接收蓝牙主控终端发送的蓝牙信息;

根据所述蓝牙信息执行对应的操作指令;

其中,所述蓝牙信息包括特殊命令字和键值信息。

其中,所述特殊命令字为0×00。

其中,所述接收蓝牙主控端发送的蓝牙信息包括:通过蓝牙链路层协议对所述蓝牙信息进行传输。

其中,所述根据所述蓝牙信息执行对应的操作指令的步骤具体为,通过蓝牙应用层协议,将接收到的蓝牙信息反馈到应用程序中。

其中,所述键值信息通过枚举键进行定义。

其中,根据所述蓝牙信息执行对应的操作指令后还包括:向蓝牙主控终端发送执行成功或失败的信息。

根据本发明的第二方面,提供一种通过蓝牙控制蓝牙受控终端的系统,包括:蓝牙主控端设备与蓝牙受控端设备;

其中,所述蓝牙主控端设备包括第一蓝牙通信模块,用于与所述蓝牙受控端设备建立连接,向蓝牙受控端发送蓝牙信息。

其中,所述蓝牙受控端设备包括:第二蓝牙通信模块,用于与所述蓝牙主控终端建立连接,接收蓝牙主控终端发送的蓝牙信息;

指令执行模块,用于根据所述蓝牙信息执行对应的操作指令;

其中,所述蓝牙信息包括特殊命令字和键值信息。

其中,所述特殊命令字为0×00。

根据本发明第三方面,提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行如下操作:

与蓝牙主控终端建立连接,接收蓝牙主控终端发送的蓝牙信息;

根据所述蓝牙信息执行对应的操作指令。

本发明提供的方法,通过蓝牙主控终端发送操作指令给蓝牙受控终端进行执行,使得蓝牙受控终端的扩展功能可以通过蓝牙主控终端来控制并执行,提升了蓝牙功能的使用灵活性。

附图说明

图1为本发明一实施例提供的一种通过蓝牙信息控制蓝牙受控终端的方法流程图;

图2为本发明一实施例提供的一种通过蓝牙信息控制蓝牙受控终端的方法的通信协议整体框架图;

图3为本发明另一实施例提供的一种通过蓝牙信息控制蓝牙受控终端的系统结构图。

具体实施方式

下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。

参考图1,图1为本发明一实施例提供的一种通过蓝牙信息控制蓝牙受控终端的方法流程图,如图1所示,所述方法包括:

s101,与蓝牙主控终端建立连接,接收蓝牙主控终端发送的蓝牙信息;

s102,根据所述蓝牙信息执行对应的操作指令。

具体的,在s101中,首先要确认蓝牙功能是否开启,如若未能开启,则需要开启蓝牙功能后,才能进行后续操作。

在现有的蓝牙技术中,经典蓝牙服务和ble低功耗蓝牙服务都被设计成开机自启动后台服务,通过监听开机广播来使能自己。具体是在收到android.intent.action.boot_completed的action的时候直接startaction为com.routon.bleserver.beacon_service和action为com.routon.bluetoothserverservice"即可,服务开始时,首先检查系统蓝牙是否使能,若是未能使能,则使能蓝牙,蓝牙使能后,才能进行后续操作。

其中,使用蓝牙需要在androidmainfest.xml中定义权限:

<uses-permissionandroid:name="android.permission.bluetooth"/>

<uses-permissionandroid:name="android.permission.bluetooth_admin"/>

另一方面,对于低功耗蓝牙ble还需要检查安卓系统是否支持蓝牙ble特性,只有支持该特性的,才能继续操作。并且需要权限:

<uses-featureandroid:name="android.hardware.bluetooth_le"android:required="true"/>

在经典蓝牙建立连接过程中,蓝牙使能后,设置蓝牙可见,并设置了一个可见时间。

经典蓝牙设备间数据传输首先需要配对,在交互时,会在配对的设备间建立rfcomm信道,连接成功后会在信道两端形成bluetoothsocket。在服务端,监听来自客户端的连接,这是一个阻塞方法。具体实现是bluetoothadapter.listenusingrfcommwithservicerecord()方法得到bluetoothserversocket,bluetoothserversocket调用阻塞方法accept()方法等待客户端的连接,一旦客户端发起连接,该方法会得到bluetoothsocket,之后就可以进行交互。

bluetoothsocket对传输数据的处理过程如下:通过getinputstream()方法得到输入流,通过输入流的read()方法读取客户端传来的数据.得到数据之后,根据服务器端和客户端制定的传输协议,对数据进行透传处理。

对于低功耗蓝牙ble蓝牙连接和数据传输中,蓝牙使能后,由于低功耗蓝牙的特性,服务器端程序是使蓝牙设备作为外围设备发射广告供中心设备扫描.具体流程如下:初始化bluetoothgattcharacteristic,bluetoothgattservice,这是ble通过gatt/att协议传输数据时需要封装的数据格式,将bluetoothgattcharacteristic添加到bluetoothgattservice;服务器端bluetoothmanager.opengattserver()方法得到bluetoothgattserver,该方法中有一个参数是bluetoothgattservercallback,设置回调函数来反馈连接状态,读写请求等;bluetoothgattserver再添加bluetoothgattservice。到此,完成了初始化。

在蓝牙通信协议整体框架中,参考图2,图2为本发明一实施例提供的一种通过蓝牙信息控制蓝牙受控终端的方法的通信协议整体框架图,如图2所示:图中手机侧即为蓝牙主控终端,终端侧即为蓝牙受控终端,服务端的蓝牙通信模块就是蓝牙服务。蓝牙主控端和蓝牙受控端之间的蓝牙通信通过蓝牙链路层协议进行传输。由于服务可能收到的数据命令会很多,服务如果全部将这些命令进行处理的话就会给蓝牙服务造成很大的负担,因此将大部分的数据进行透传,透传的机制则是通过对数据中的action进行解析,然后发送action对应的广播,将data数据作为广播的数据通过intent发送出去。从而将蓝牙收到的命令处理,并通过蓝牙应用层协议上传给对应应用服务进行处理。

具体的,s102中,根据所述蓝牙信息执行对应的操作指令中,蓝牙通信数据都会进行封装,其中,经典蓝牙和ble蓝牙的封装结构是一样的,所述蓝牙信息包括特殊命令字和键值信息,即cmd+info的封装结构。其中,cmd代表命令字,用1个字节表示,info代表实际传输的信息,字节数不固定。在蓝牙传输过程中,当cmd对应的命令字为0×ef的时则为透传命令,上述服务器不处理的数据所对应的即为0×ef对应的命令字。

在上述实施例的基础上,所述方法还包括:所述特殊命令字为0×00。

具体的,本实施例中,cmd对应的命令字为0×00,info采用传递键值的对应方式,其中,模拟按键处理是通过制定的数据传输协议对数据进行解析判断,通过instrumentation类的sendkeysync()方法对数据进行模拟按键操作。该方法需要权限:

<uses-permissionandroid:name="android.permission.inject_events"/>

模拟的按键有一些常见的控制键:音量+/-,返回键,电源键等,并且还有一些标点符号,字母键和数字键,可用来充当输入法的使用。

通过此方法,使得蓝牙受控终端的扩展功能可以通过蓝牙主控终端来控制并执行,提升了蓝牙功能的使用灵活性。

在上述实施例的基础上,所述方法还包括,所述键值信息通过枚举键进行定义。

具体的,通过enum枚举将所有的键值信息进行列举,枚举类型包括:控制键、数字键、字母键以及标点符号键。

例如,控制键包括:

key_power,key_mute,key_home,key_menu,key_ret,key_up,key_down,key_left,key_right,key_ok,key_volminus,key_volplus,key_del,key_shift,key_space

数字键包括:

key_num0,key_num1,key_num2,key_num3,key_num4,key_num5,key_num6,key_num7,key_num8,key_num9

通过此方法,可以方便的定义蓝牙传输中info的键值信息,提升了蓝牙进行命令发送的灵活性。

在上述实施例的基础上,根据所述蓝牙信息执行对应的操作指令步骤后还包括:向蓝牙主控终端发送执行成功或失败的信息。

具体的,当蓝牙受控终端接收到指令信息以后,通过蓝牙应用层协议将指令信息发送给对应的应用,其后会反馈操作成功或者操作失败的信息。

在本发明的另一实施例中,参考图3,图3为本发明另一实施例提供的一种通过蓝牙信息控制蓝牙受控终端的系统结构图,如图3所示,所述系统包括在蓝牙主控端的第一蓝牙通信模块31;在蓝牙受控端的第二蓝牙通信模块32和指令执行模块33。

其中,所述第一蓝牙通信模块31用于与所述蓝牙受控端设备建立连接,向蓝牙受控端发送蓝牙信息。

所述第二蓝牙通信模块32用于与所述蓝牙主控终端建立连接,接收蓝牙主控终端发送的蓝牙信息。

所述指令执行模块33用于根据所述蓝牙信息执行对应的操作指令

具体的,第一蓝牙模块31和第二蓝牙模块32首先要确认蓝牙功能是否开启,如若未能开启,则需要开启蓝牙功能后,才能进行后续操作。

在现有的蓝牙技术中,经典蓝牙服务和ble低功耗蓝牙服务都被设计成开机自启动后台服务,通过监听开机广播来使能自己。具体是在收到android.intent.action.boot_completed的action的时候直接startaction为com.routon.bleserver.beacon_service和action为com.routon.bluetoothserverservice"即可,服务开始时,首先检查系统蓝牙是否使能,若是未能使能,则使能蓝牙,蓝牙使能后,才能进行后续操作。

其中,使用蓝牙需要在androidmainfest.xml中定义权限:

<uses-permissionandroid:name="android.permission.bluetooth"/>

<uses-permissionandroid:name="android.permission.bluetooth_admin"/>

另一方面,对于低功耗蓝牙ble还需要检查安卓系统是否支持蓝牙ble特性,只有支持该特性的,才能继续操作。并且需要权限:

<uses-featureandroid:name="android.hardware.bluetooth_le"android:required="true"/>

在经典蓝牙建立连接过程中,蓝牙使能后,设置蓝牙可见,并设置了一个可见时间。

经典蓝牙设备间数据传输首先需要配对,在交互时,会在配对的设备间建立rfcomm信道,连接成功后会在信道两端形成bluetoothsocket。在服务端,监听来自客户端的连接,这是一个阻塞方法。具体实现是bluetoothadapter.listenusingrfcommwithservicerecord()方法得到bluetoothserversocket,bluetoothserversocket调用阻塞方法accept()方法等待客户端的连接,一旦客户端发起连接,该方法会得到bluetoothsocket,之后就可以进行交互。

bluetoothsocket对传输数据的处理过程如下:通过getinputstream()方法得到输入流,通过输入流的read()方法读取客户端传来的数据.得到数据之后,根据服务器端和客户端制定的传输协议,对数据进行透传处理。

对于低功耗蓝牙ble蓝牙连接和数据传输中,蓝牙使能后,由于低功耗蓝牙的特性,服务器端程序是使蓝牙设备作为外围设备发射广告供中心设备扫描.具体流程如下:初始化bluetoothgattcharacteristic,bluetoothgattservice,这是ble通过gatt/att协议传输数据时需要封装的数据格式,将bluetoothgattcharacteristic添加到bluetoothgattservice;服务器端bluetoothmanager.opengattserver()方法得到bluetoothgattserver,该方法中有一个参数是bluetoothgattservercallback,设置回调函数来反馈连接状态,读写请求等;bluetoothgattserver再添加bluetoothgattservice。到此,完成了初始化。

根据所述蓝牙信息执行对应的操作指令中,蓝牙通信数据都会进行封装,其中,经典蓝牙和ble蓝牙的封装结构是一样的,所述蓝牙信息包括特殊命令字和键值信息,即cmd+info的封装结构。其中,cmd代表命令字,用1个字节表示,info代表实际传输的信息,字节数不固定。在蓝牙传输过程中,当cmd对应的命令字为0×ef的时则为透传命令,上述服务器不处理的数据所对应的即为0×ef对应的命令字。

本实施例中,cmd对应的命令字为0×00,info采用传递键值的对应方式,其中,模拟按键处理是通过制定的数据传输协议对数据进行解析判断,通过instrumentation类的sendkeysync()方法对数据进行模拟按键操作。该方法需要权限:

<uses-permissionandroid:name="android.permission.inject_events"/>

模拟的按键有一些常见的控制键:音量+/-,返回键,电源键等,并且还有一些标点符号,字母键和数字键,可用来充当输入法的使用。

执行执行模块33在接到带有0×00命令字的蓝牙信息以后,通过蓝牙应用层协议,执行蓝牙信息中的操作指令。

通过此方法,使得可以通过蓝牙主控终端向蓝牙受控终端发送操作指令,提升了对蓝牙受控终端的灵活性,方便对受控终端进行指令操作。

在上述实施例的基础上,所述方法还包括,所述键值信息通过枚举键进行定义。

具体的,通过enum枚举将所有的键值信息进行列举,枚举类型包括:控制键、数字键、字母键以及标点符号键。

在本发明提供的又一实施例中,公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如与蓝牙主控终端建立连接,接收蓝牙主控终端发送的蓝牙信息;根据所述蓝牙信息执行对应的操作指令。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1