一种建立蓝牙连接的方法及装置与流程

文档序号:13883654阅读:216来源:国知局
一种建立蓝牙连接的方法及装置与流程
本发明涉及通信领域,特别涉及一种建立蓝牙连接的方法及装置。
背景技术
:蓝牙是一种支持设备间短距离通信的无线电技术,由于蓝牙技术传输范围大、抗干扰性强等诸多优势,使得蓝牙功能已经成为移动终端如智能手机的标配功能。现有技术中,移动设备的应用程序中已经具有针对蓝牙设备的扫描连接功能;然而用户在使用应用程序时,习惯先通过移动设备的操作系统中扫描连接蓝牙设备,再返回应用程序中进行与蓝牙设备相关的操作;由于蓝牙设备可能已与终端设备完成配对,故应用程序会出现扫描不到蓝牙设备或者连接不上蓝牙设备的问题。技术实现要素:为解决现有技术中的技术缺陷,本发明提出了一种建立蓝牙连接的方法及装置。本发明提供的一种建立蓝牙连接的方法,包括:步骤s1、应用程序获取目标蓝牙设备的识别符;步骤s2、应用程序从操作系统中获取已配对的蓝牙设备信息,并判断已配对的蓝牙设备信息中是否有与目标蓝牙设备的识别符相匹配的蓝牙设备信息,是则执行步骤s4,否则扫描周围蓝牙设备,当扫描到蓝牙设备时,执行步骤s3;步骤s3、应用程序获取扫描到的蓝牙设备的蓝牙设备信息,并判断获取到的蓝牙设备信息是否与目标蓝牙设备的识别符匹配,是则停止扫描,执行步骤s4,否则报错结束;步骤s4、应用程序根据与目标蓝牙设备的识别符相匹配的蓝牙设备信息与目标蓝牙设备建立连接并通信,结束。本发明提供的一种建立蓝牙连接的装置,包括:第一获取模块,用于获取目标蓝牙设备的识别符;第二获取模块,用于从操作系统中获取已配对的蓝牙设备信息;第一判断模块,用于判断第二获取模块获取到的已配对的蓝牙设备信息中是否有与第一获取模块获取到的目标蓝牙设备的识别符相匹配的蓝牙设备信息;通信模块,用于当第一判断模块判定已配对的蓝牙设备信息中有与目标蓝牙设备的识别符相匹配的蓝牙设备信息时,根据与目标蓝牙设备的识别符相匹配的蓝牙设备信息与目标蓝牙设备建立连接并通信,结束;扫描模块,用于当第一判断模块判定已配对的蓝牙设备信息中没有与目标蓝牙设备的识别符相匹配的蓝牙设备信息时,扫描周围蓝牙设备;第三获取模块,用于当扫描模块扫描到蓝牙设备时,获取扫描到的蓝牙设备的蓝牙设备信息;第二判断模块,用于判断第三获取模块获取到的蓝牙设备的蓝牙设备信息是否与第一获取模块获取到的目标蓝牙设备的识别符匹配;结束模块,用于当第二判断模块判定蓝牙设备信息与目标蓝牙设备的识别符不匹配时,报错结束;停止扫描模块,用于当第二判断模块判定蓝牙设备信息与目标蓝牙设备的识别符匹配时,停止扫描;通信模块,还用于当第二判断模块判定蓝牙设备信息与目标蓝牙设备的识别符匹配时,根据与目标蓝牙设备的识别符相匹配的蓝牙设备信息与目标蓝牙设备建立连接并通信,结束。采用上述技术方案达到的有益效果如下:终端设备在连接蓝牙设备之前增加了对操作系统中的配对信息的检测和判断等操作,使得应用程序中进行的操作不受用户提前通过操作系统进行蓝牙连接的影响。附图说明图1是本发明实施例1提供的一种建立蓝牙连接的方法的流程图;图2是本发明实施例2提供的一种建立蓝牙连接的方法的流程图;图3为本发明实施例3提供的一种建立蓝牙连接的装置的方框图。具体实施方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式做进一步地详细描述。实施例1本实施例提供了一种建立蓝牙连接的方法,该方法应用于android操作系统的移动终端上,参见图1,包括:步骤101、应用程序检测是否已经开启蓝牙,是则执行步骤103,否则执行步骤102;具体的,应用程序调用系统接口函数bluetoothadapter.getdefaultadapter().isenabled(),判断调用该函数的返回值否为true,是则应用程序判定已开启蓝牙,执行步骤103,否则应用程序判定未开启蓝牙,执行步骤102。步骤102、应用程序开启蓝牙;具体的,应用程序首先创建一个请求开启蓝牙的启动事件,并通过调用一个回调函数判断开启蓝牙模块是否成功,若开启成功则继续执行步骤103,否则开启失败,报错结束;所述创建请求开启蓝牙的启动事件的具体实现为:intentintent=newintent(bluetoothadapter.action_request_enable);startactivityforresult(intent,code_turn_on_bt);其中的intent是android系统的一个事件启动对象,startactivityforresult函数是向android系统回传请求的一个接口函数,code_turn_on_bt是一个用于表示向android系统请求的请求标志;所述通过调用一个回调函数判断开启蓝牙模块是否成功具体为:重载activity下的onactivityresult(intrequestcode,intresultcode,intentdata)函数,判断重载该函数得到的返回值resultcode,如果resultcode==activity.result_ok,则启动蓝牙成功,如果resultcode==activity.result_canceled则说明用户取消了打开android系统蓝牙的操作,启动蓝牙失败。步骤103、应用程序获取目标蓝牙设备的识别符;目标蓝牙设备的识别符可以为:目标蓝牙设备的序列号或者目标蓝牙设备的名称或者其他可以标识蓝牙设备的数据;具体的,应用程序获取预存的目标蓝牙设备的识别符;更为详细的,应用程序获取预存的目标蓝牙设备的序列号,并根据目标蓝牙设备的序列号按照预设规则转换为目标蓝牙设备的名称,需要说明的是,蓝牙设备的名称即为目标蓝牙设备的识别符;例如,本实施例中,应用程序获取到的目标蓝牙设备的序列号为:650230000000173,应用程序将该序列号的前三位删除,并与预设字符串ft_进行拼接得到目标蓝牙设备的名称ft_230000000173;可选的,应用程序接收用户输入的目标蓝牙设备的识别符;更为详细的,应用程序接收用户输入的目标蓝牙设备的序列号,并根据目标蓝牙设备的序列号按照预设规则转换为目标蓝牙设备的名称,需要说明的是,蓝牙设备的名称即为目标蓝牙设备的识别符;可选的,应用程序接收用户输入的登录信息,并从服务器中获取与用户输入的登录信息相匹配的目标蓝牙设备的识别符;步骤104、应用程序判断在操作系统中是否可以获取到已配对的蓝牙设备信息,是则执行步骤105,否则执行步骤107;需要说明的是,每条已配对的蓝牙设备信息中至少包括蓝牙设备的识别符和蓝牙设备的mac地址;具体的,应用程序调用系统函数bluetoothadapter.getdefaultadapter().getbondeddevices();接收该调用函数返回的数据,当返回不为空时则应用程序判定操作系统中可以获取到已配对的蓝牙设备信息,当返回为空时则应用程序判定操作系统中没有获取到已配对的蓝牙设备信息。本实施例中,应用程序接收到的返回的数据具体为[abc_1000000028(ce:eb:0c:37:df:5f),bk_ft1067(f3:24:e2:8a:2f:47),ft_230000000173(c4:5d:37:6b:f9:9f)];本实施例中应用程序获取到三条蓝牙设备信息具体如下:蓝牙设备的识别符蓝牙设备的mac地址1abc_1000000028ce:eb:0c:37:df:5f2bk_ft1067f3:24:e2:8a:2f:473ft_230000000173c4:5d:37:6b:f9:9f步骤105、应用程序判断操作系统中的已配对蓝牙设备信息中是否有与目标蓝牙设备的识别符相匹配的蓝牙设备信息,是则执行步骤106,否则执行步骤107;具体的,应用程序根据目标蓝牙设备的识别符在已配对的蓝牙设备信息中查找包含目标蓝牙设备的识别符的蓝牙设备信息,若查找到则执行步骤106,若没有查找到则执行步骤107;例如,本实施例中根据目标蓝牙设备的识别符ft_230000000173查找到的蓝牙设备信息为上述列表中的第三条。步骤106、应用程序删除操作系统中的已配对蓝牙设备信息中与目标蓝牙设备的识别符相匹配的蓝牙设备信息;应用程序根据反射的方式通过getclass().getmethod(“removebond”,(class[])null)方法获取到removebond()方法,执行removebond()方法即可删除操作系统中的已配对的蓝牙设备信息中与目标蓝牙设备的识别符相匹配的蓝牙设备信息,若该函数的返回值否为true,是则删除成功,若该函数的返回值为flase则删除失败。步骤107、应用程序扫描周围设备;当扫描到蓝牙设备时,执行步骤108;具体的,应用程序调用当前上下文context的getsystemservice(context.bluetooth_service).getadapter().startlenscan(mblescancall)方法开启扫描设备的操作,通过mblescancall回调返回扫描结果;扫描结果是bluetoothdevice类型的对象,扫描结果为扫描到的蓝牙设备的蓝牙设备信息;步骤108、应用程序获取扫描到蓝牙设备的蓝牙设备信息,并判断扫描到的蓝牙设备信息是否与目标蓝牙设备的识别符匹配,是则执行步骤109,否则返回步骤107;具体的,蓝牙设备信息至少包括蓝牙设备的识别符和蓝牙设备的mac地址,本实施例中,应用程序获取到的蓝牙设备信息具体为蓝牙设备的名称和蓝牙设备的mac地址。例如,当扫描结果为[ft_230000000173(c4:5d:37:6b:f9:9f)]时判定扫描到的蓝牙设备信息与目标蓝牙设备的识别符匹配,否则判定判定扫描到的蓝牙设备信息与目标蓝牙设备的识别符不匹配;优选的,步骤107之前还包括:应用程序设置扫描时间的初始值;相应的,步骤108中应用程序判定扫描到的蓝牙设备的蓝牙设备信息是否与目标蓝牙设备的识别符不匹配时还包括:应用程序判断扫描时间是否超过预设时间,是则停止扫描,结束,否则返回步骤107;步骤109、应用程序停止扫描,并从扫描到的蓝牙设备信息中获取目标蓝牙设备的mac地址,并根据目标蓝牙设备的mac地址向目标蓝牙设备发送连接请求;具体的,应用程序调用当前上下文context的getsystemservice(context.bluetooth_service).getadapter().stoplenscan(mblescancall)方法停止扫描设备的操作。步骤110、应用程序判断连接是否成功;是则执行步骤111;否则报错结束;具体的,应用程序调用connectgatt()方法开始连接,通过mgattcallback回调返回连接状态,当返回的status为bluetoothgatt.gatt_success即为连接成功,否则连接失败。优选的,步骤110之前还包括:应用程序设置连接请求的次数的初始值;步骤110之后还包括:应用程序更新发送连接请求的次数;相应的,步骤110中具体为:判定连接失败时还包括:应用程序判断连接次数是否大于预设值,是则连接失败,结束,否则返回步骤110;步骤111、应用程序与目标蓝牙设备进行通信。优选的,步骤109中还包括:应用程序保存扫描到的蓝牙设备信息;相应的,步骤103与步骤104之间还包括:应用程序判断自身保存的蓝牙设备信息中是否有与目标蓝牙设备的识别符相匹配的蓝牙设备信息,是则应用程序从与目标蓝牙设备信息相匹配的蓝牙设备信息中获取目标蓝牙设备的mac地址,并根据目标蓝牙设备的mac地址向目标蓝牙设备发送连接请求,执行步骤110;否则执行步骤104。实施例2本实施例提供一种建立蓝牙连接的方法,参见图2,包括:步骤201、应用程序检查蓝牙是否开启,是则执行步骤203,否则执行步骤202;具体的,应用程序调用系统接口函数bluetoothadapter.getdefaultadapter().isenabled(),判断调用该函数的返回值否为true,是则应用程序判定已开启蓝牙模块,执行步骤203,否则应用程序判定未开启蓝牙模块,执行步骤202。步骤202、应用程序开启蓝牙;具体的,应用程序首先创建一个请求开启蓝牙的启动事件,显示并通过调用一个回调函数判断开启蓝牙模块是否成功,若开启成功则继续执行步骤203,否则开启失败,报错结束;所述创建请求开启蓝牙的启动事件的具体实现为:intentintent=newintent(bluetoothadapter.action_request_enable);startactivityforresult(intent,code_turn_on_bt);其中的intent是android系统的一个事件启动对象,startactivityforresult函数是向android系统回传请求的一个接口函数,code_turn_on_bt是一个用于表示向android系统请求的请求标志;所述通过调用一个回调函数判断开启蓝牙模块是否成功具体为:重载activity下的onactivityresult(intrequestcode,intresultcode,intentdata)函数,判断重载该函数得到的返回值resultcode,如果resultcode==activity.result_ok,则启动蓝牙成功,如果resultcode==activity.result_canceled则说明用户取消了打开android系统蓝牙的操作,启动蓝牙失败。步骤203、应用程序获取目标蓝牙设备的识别符;目标蓝牙设备的识别符可以为:目标蓝牙设备的序列号或者目标蓝牙设备的名称或者其他可以标识蓝牙设备的数据;具体的,应用程序获取预存的目标蓝牙设备的识别符;更为详细的,应用程序获取预存的目标蓝牙设备的序列号,并根据目标蓝牙设备的序列号按照预设规则转换为目标蓝牙设备的名称,需要说明的是,蓝牙设备的名称即为目标蓝牙设备的识别符;例如,本实施例中,应用程序获取到的目标蓝牙设备的序列号为:650230000000173,应用程序将该序列号的前三位删除,并与预设字符串ft_进行拼接得到目标蓝牙设备的名称ft_230000000173;可选的,应用程序接收用户输入的目标蓝牙设备的识别符;更为详细的,应用程序接收用户输入的目标蓝牙设备的序列号,并根据目标蓝牙设备的序列号按照预设规则转换为目标蓝牙设备的名称,需要说明的是,蓝牙设备的名称即为目标蓝牙设备的识别符;可选的,应用程序接收用户输入的登录信息,并从服务器中获取与用户输入的登录信息相匹配的目标蓝牙设备的识别符;步骤204、应用程序判断在操作系统中是否可以获取到已配对的蓝牙设备信息,是则执行步骤205,否则执行步骤207;具体的,应用程序调用系统函数bluetoothadapter.getdefaultadapter().getbondeddevices();接收该调用函数返回的数据,当返回不为空时则应用程序判定操作系统中可以获取到已配对的蓝牙设备信息,当返回为空时则应用程序判定操作系统中没有获取到已配对的蓝牙设备信息。需要说明的是,每条已配对的蓝牙设备信息中至少包括蓝牙设备标识和蓝牙设备的mac地址;本实施例中,应用程序接收到的返回的数据具体为[abc_1000000028(ce:eb:0c:37:df:5f),bk_ft1067(f3:24:e2:8a:2f:47),ft_230000000173(c4:5d:37:6b:f9:9f)];本实施例中应用程序获取到三条蓝牙设备信息具体如下:例如,应用程序获取到的已配对的蓝牙设备信息具体为:蓝牙设备的名称蓝牙设备的mac地址1abc_1000000028ce:eb:0c:37:df:5f2bk_ft1067f3:24:e2:8a:2f:473ft_230000000173c4:5d:37:6b:f9:9f步骤205、应用程序判断已配对的蓝牙设备信息中是否有与目标蓝牙设备的识别符相匹配的蓝牙设备信息,是则执行步骤206,否则执行步骤207;步骤206、应用程序从与目标蓝牙设备的识别符相匹配的蓝牙设备信息中获取目标蓝牙设备的mac地址;执行步骤210;步骤207、应用程序扫描周围蓝牙设备;当扫描到蓝牙设备后,执行步骤208;具体的,应用程序调用当前上下文context的getsystemservice(context.bluetooth_service).getadapter().startlenscan(mblescancall)方法开启扫描设备的操作,通过mblescancall回调返回扫描结果,当返回true表示成功进行扫描操作,执行步骤208;步骤208、应用程序获取扫描到的蓝牙设备信息;并判断扫描到的蓝牙设备的蓝牙设备信息是否与目标蓝牙设备的识别符匹配,是则执行步骤209,否则返回步骤207;优选的,步骤207之前还包括:应用程序设置扫描时间的初始值;相应的,步骤208中应用程序判定扫描到的蓝牙设备的蓝牙设备信息是否与目标蓝牙设备的识别符不匹配时还包括:应用程序判断扫描时间是否超过预设时间,是则停止扫描,结束,否则返回步骤207;步骤209、应用程序停止扫描;并从目标蓝牙设备的识别符相匹配的蓝牙设备信息中获取目标蓝牙设备的mac地址;具体的,应用程序调用当前上下文context的getsystemservice(context.bluetooth_service).getadapter().stoplenscan(mblescancall)方法停止扫描设备的操作。步骤210、应用程序根据目标蓝牙设备的mac地址向目标蓝牙设备发起连接请求;步骤211、应用程序判断连接是否成功,是则执行步骤212,否则报错结束;具体的,应用程序调用connectgatt()方法开始连接,通过mgattcallback回调返回连接状态,当返回的status为bluetoothgatt.gatt_success即为连接成功,否则连接失败。优选的,步骤211之前还包括:应用程序设置连接请求的次数的初始值;步骤211之后还包括:应用程序更新发送连接请求的次数;相应的,步骤211中具体为:判定连接失败时还包括:应用程序判断连接次数是否大于预设值,是则连接失败,结束,否则返回步骤211;步骤212、应用程序与目标蓝牙设备进行通信。优选的,步骤209还包括:应用程序保存扫描到的蓝牙设备信息;相应的,步骤203与步骤204之间还包括:应用程序判断自身保存的蓝牙设备信息中是否有与目标蓝牙设备的识别符相匹配的蓝牙设备信息,是则应用程序从与目标蓝牙设备信息相匹配的蓝牙设备信息中获取目标蓝牙设备的mac地址,并根据目标蓝牙设备的mac地址向目标蓝牙设备发送连接请求,执行步骤211;否则执行步骤204。实施例3本实施例提供一种建立蓝牙连接的装置,如图3所示,包括:第一获取模块11,用于获取目标蓝牙设备的识别符;可选的,第一获取模块11,具体用于获取预存的或者用户输入的目标蓝牙设备的识别符。可选的,第一获取模块11,具体用于根据用户输入的登录信息从服务器获取与登录信息相匹配的目标蓝牙设备的识别符。第二获取模块12,用于从操作系统中获取已配对的蓝牙设备信息;第一判断模块13,用于判断第二获取模块12获取到的已配对的蓝牙设备信息中是否有与第一获取模块11获取到的目标蓝牙设备的识别符相匹配的蓝牙设备信息;通信模块14,用于当第一判断模块13判定已配对的蓝牙设备信息中有与目标蓝牙设备的识别符相匹配的蓝牙设备信息时,根据与目标蓝牙设备的识别符相匹配的蓝牙设备信息与目标蓝牙设备建立连接并通信,结束;具体的,通信模块14,具体用于当第一判断模块13判定已配对的蓝牙设备信息中有与目标蓝牙设备的识别符相匹配的蓝牙设备信息时,从与目标蓝牙设备的识别符相匹配的蓝牙设备信息中获取mac地址,根据mac地址向目标蓝牙设备发送连接请求,当连接成功后进行通信,结束;扫描模块15,用于当第一判断模块13判定已配对的蓝牙设备信息中没有与目标蓝牙设备的识别符相匹配的蓝牙设备信息时,扫描周围蓝牙设备;第三获取模块16,用于当扫描模块15扫描到蓝牙设备时,获取扫描到的蓝牙设备的蓝牙设备信息;第二判断模块17,用于判断第三获取模块16获取到的蓝牙设备的蓝牙设备信息是否与第一获取模块11获取到的目标蓝牙设备的识别符匹配;结束模块18,用于当第二判断模块17判定蓝牙设备信息与目标蓝牙设备的识别符不匹配时,报错结束;停止扫描模块19,用于当第二判断模块17判定蓝牙设备信息与目标蓝牙设备的识别符匹配时,停止扫描;通信模块14,还用于当第二判断模17块判定蓝牙设备信息与目标蓝牙设备的识别符匹配时,根据与目标蓝牙设备的识别符相匹配的蓝牙设备信息与目标蓝牙设备建立连接并通信,结束。具体的,通信模块14,具体用于当第二判断模块判定蓝牙设备信息与目标蓝牙设备的识别符匹配时,从与目标蓝牙设备的识别符相匹配的蓝牙设备信息中获取mac地址,根据mac地址向目标蓝牙设备发送连接请求,当连接成功后进行通信,结束。优选的,该装置还包括:删除模块;删除模块具体包括:删除单元、扫描单元和判断单元;删除单元,用于当第一判断模块13判定已配对的蓝牙设备信息中有与目标蓝牙设备的识别符相匹配的蓝牙设备信息时,从操作系统中将与目标蓝牙设备的识别符相匹配的蓝牙设备信息删除;触发扫描单元;扫描单元,用于扫描周围蓝牙设备;判断单元,用于当扫描单元扫描到蓝牙设备时,获取扫描到的蓝牙设备的蓝牙设备信息,并判断获取到的蓝牙设备信息是否与第一获取模块11获取到的目标蓝牙设备的识别符匹配;相应的,通信模块14,用于当判断单元判定获取到的蓝牙设备信息与目标蓝牙设备的识别符匹配时,根据与目标蓝牙设备匹配的蓝牙设备信息与目标蓝牙设备建立连接并通信,结束;还用于当第二判断模块17判定蓝牙设备信息与目标蓝牙设备的识别符匹配时,根据与目标蓝牙设备的识别符相匹配的蓝牙设备信息与目标蓝牙设备建立连接并通信,结束。优选的,该装置还包括:检测模块和开启蓝牙模块;检测模块,用于检查是否已经开启蓝牙;开启蓝牙模块,用于当检测模块未开启蓝牙时,开启蓝牙;相应的,第一获取模块11,用于当检测模块检测到已经开启蓝牙时获取目标蓝牙设备的识别符;还用于当开启蓝牙模块开启蓝牙之后,获取目标蓝牙设备的识别符。优选的,该装置还包括:设置模块和第三判断模块;设置模块,用于设置扫描时间的初始值;第三判断模块,用于当第二判断模块17判定蓝牙设备信息与目标蓝牙设备的识别符不匹配时,判断扫描时间是否超过预设时间;相应的,结束模块18,还用于当第三判断模块判定扫描时间超过预设时间时,结束;扫描模块15,还用于当第三判断模块判定扫描时间没有超过预设时间时扫描周围蓝牙设备。优选的,该装置还包括:存储模块和第四判断模块;存储模块,用于当第二判断模块17判定获取到的蓝牙设备信息与目标蓝牙设备的识别符匹配后保存获取到蓝牙设备信息;第四判断模块,用于从存储模块中获取保存的蓝牙设备信息,并判定获取到的蓝牙设备信息中是否有与第一获取模块11获取到的目标蓝牙设备的识别符相匹配的蓝牙设备信息;相应的,第二获取模块12,具体用于当第四判断模块判定获取到的蓝牙设备信息中没有与目标蓝牙设备的识别符相匹配的蓝牙设备信息时,从操作系统中获取已配对的蓝牙设备信息;通信模块14,还用于当第四判断模块判定获取到的蓝牙设备信息中有与目标蓝牙设备的识别符相匹配的蓝牙设备信息时,根据与目标蓝牙设备的识别符相匹配的蓝牙设备信息与目标蓝牙设备建立连接并通信,结束。需要说明的是,蓝牙设备信息具体包括:蓝牙设备的识别符和蓝牙设备的mac地址;与目标蓝牙设备的识别符相匹配的蓝牙设备信息具体包括:目标蓝牙设备的识别符和目标蓝牙设备的mac地址;目标蓝牙设备的识别符具体为目标蓝牙设备的名称或者目标蓝牙设备的序列号。以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1