发明内容
有鉴于此,本发明的主要目的在于提供一种终端控制蓝牙耳机有序连接的方法及***,解决了蓝牙耳机主动向终端发起连接时因Profile连接顺序的不同导致的不兼容问题。
为达到上述目的,本发明的技术方案是这样实现的:
本发明提供了一种终端控制蓝牙耳机有序连接的方法,该方法包括:
终端将自身的免提模式HFP的服务状态设置为可见且可被连接,并将自身的高级音频传输模式A2DP和音频/视频远程控制模式AVRCP的服务状态设置为不可见且不可被连接;
蓝牙耳机向终端发送HFP连接请求;
所述蓝牙耳机向终端发送HFP连接请求后,进一步包括:终端收到HFP 连接请求后查询蓝牙耳机是否还具备A2DP和AVRCP的服务,确定蓝牙耳机具备A2DP和AVRCP的服务后顺序执行与蓝牙耳机的连接操作;
终端将同意HFP连接的响应发送到蓝牙耳机。
其中,所述终端查询蓝牙耳机是否还具备A2DP和AVRCP的服务之后,还包括:
终端确定蓝牙耳机不具备A2DP和AVRCP的服务时,将同意HFP连接的响应发送到蓝牙耳机,连接建立过程结束。
上述方案中,所述终端确定蓝牙耳机具备A2DP和AVRCP的服务后顺序执行与蓝牙耳机的连接操作,具体为:
向蓝牙耳机发起AVRCP连接请求,蓝牙耳机同意建立AVRCP连接,并将连接结果通知终端;终端收到AVRCP连接已建立的消息后,向蓝牙耳机发起A2DP连接请求,蓝牙耳机同意建立A2DP连接,并将连接结果通知终端;或,
向蓝牙耳机发起A2DP连接请求,蓝牙耳机同意建立A2DP连接,并将连接结果通知终端;终端收到A2DP连接已建立的消息后,向蓝牙耳机发起AVRCP连接请求,蓝牙耳机同意建立AVRCP连接,并将连接结果通知终端。
上述方案中,所述终端将同意HFP连接的响应发送到蓝牙耳机之后,进一步包括:终端通知用户蓝牙耳机与终端的连接建立成功。
进一步地,所述终端收到HFP连接请求后,还包括:
终端在界面上弹出对话框提示用户有蓝牙耳机发起连接。
本发明还提供了一种终端控制蓝牙耳机有序连接的***,该***包括:终端和蓝牙耳机;其中,
所述终端,用于将自身的HFP的服务状态设置为可见且可被连接,并将自身的A2DP和AVRCP的服务状态设置为不可见且不可被连接,收到蓝牙耳机所发的HFP连接请求后查询蓝牙耳机是否还具备A2DP和AVRCP的服务,确定蓝牙耳机具备A2DP和AVRCP的服务后顺序执行与蓝牙耳机的连接操作,将同意HFP连接的响应发送到蓝牙耳机;
所述蓝牙耳机,用于向终端发送HFP连接请求,在终端确定蓝牙耳机具备 A2DP和AVRCP的服务后顺序执行与终端的连接操作,接收终端所发的同意HFP连接的响应。
其中,所述终端,进一步用于确定蓝牙耳机不具备A2DP和AVRCP的服务时,将同意HFP连接的响应发送到蓝牙耳机;
相应的,所述蓝牙耳机,进一步用于接收终端所发的同意HFP连接的响应。
上述方案中,所述终端,进一步用于收到HFP连接请求后,在界面上弹出对话框提示用户有蓝牙耳机发起连接;还用于将同意HFP连接的响应发送到蓝牙耳机之后,通知用户蓝牙耳机与终端的连接建立成功。
本发明提供的终端控制蓝牙耳机有序连接的方法及***,终端将自身的HFP的服务状态设置为可见且可被连接,并将自身的高级音频传输模式A2DP和音频/视频远程控制模式AVRCP的服务状态设置为不可见且不可被连接;蓝牙耳机向终端发送HFP连接请求;终端将同意HFP连接的响应发送到蓝牙耳机。本发明成功避免了蓝牙耳机主动发起连接时,由于蓝牙耳机生产商的不同导致Profile连接顺序的不同,解决了Profile的连接不兼容的问题。
进一步地,本发明还在终端将同意HFP连接的响应发送到蓝牙耳机后,通知用户蓝牙耳机与终端的连接建立成功,避免了终端频繁地弹出提示框通知用户有不同的Profile已连接上,提高了蓝牙耳机的易用性及使用友好度。
具体实施方式
本发明的基本思想是:终端将自身的HFP的服务状态设置为可见且可被连接,并将自身的高级音频传输模式A2DP和音频/视频远程控制模式AVRCP的服务状态设置为不可见且不可被连接;蓝牙耳机向终端发起HFP连接请求;终 端将同意HFP连接的响应发送到蓝牙耳机。
这里,所述蓝牙耳机向终端发起HFP连接请求后,该方法进一步包括:终端收到HFP连接请求后查询蓝牙耳机是否还具备A2DP和AVRCP的服务,确定蓝牙耳机具备A2DP和AVRCP的服务后顺序执行与蓝牙耳机的连接操作。
进一步地,终端将同意HFP连接的响应发送到蓝牙耳机后,通知用户蓝牙耳机与终端的连接建立成功。
本发明中,终端将HFP的服务状态设置为可见且可被连接的依据为:现有的低端蓝牙耳机只提供HFP服务,中、高端的蓝牙耳机除了提供HFP服务外还提供A2DP和AVRCP服务,也就是说,提供HFP服务为蓝牙耳机所具备的普遍功能。
本发明中,所述蓝牙耳机主动发起连接是指蓝牙耳机首先向终端发起的连接。
下面结合附图及具体实施例对本发明作进一步详细说明。
图1为本发明终端控制蓝牙耳机有序连接的方法实现流程示意图,如图1所示,该流程包括以下步骤:
步骤101:终端将自身的HFP的服务状态设置为可见且可被连接;
具体为:终端启动后,终端中的主机(Host)将置设备类型指令HCI_Write_Class_of_Device下发给终端中的链路管理器(LM),终端中的LM收到HCI_Write_Class_of_Device指令后,将设置设备可被扫描指令HCI_Write_Scan_Enable返回给终端中的Host,使得终端的HFP服务可见,且也可被连接。
本步骤还同时包括:终端将自身的A2DP和AVRCP的服务状态设置为不可见且不可被连接,即:终端的A2DP和AVRCP的服务状态不可被蓝牙耳机发现且不可被蓝牙耳机连接,具体过程与终端将HFP的服务状态设置为可见且可被连接同时进行,即:终端中的Host发送的指令HCI_Write_Class_of_Device和终端中的LM返回的指令HCI_Write_Scan_Enable中既包括HFP服务状态的设置参数,也包括A2DP和AVRCP服务状态的设置参数。
这里,所述A2DP和AVRCP的服务状态设置为不可见且不可被连接为: 终端的A2DP和AVRCP不可被蓝牙耳机发现且不可被蓝牙耳机主动发起连接,但终端可以主动向蓝牙耳机发起A2DP和AVRCP的连接。
步骤102:蓝牙耳机向终端发起HFP连接请求;
具体为:蓝牙耳机中的Host将创建连接指令HCI_Create_Connection(HFP)发送到蓝牙耳机中的LM,蓝牙耳机中的LM收到HCI_Create_Connection(HFP)后,将主机连接请求信令LMP_host_connection_req(HFP)发送到终端中的LM,终端中的LM收到LMP_host_connection_req(HFP)后,将连接请求指令HCI_Connection_Request(HFP)发送到终端中的Host。
这里,对于不同的生产商出产的支持HFP、A2DP和AVRCP服务的蓝牙耳机还会向终端发起A2DP或AVRCP连接请求,但是,蓝牙耳机主动发起连接请求前先要向终端发起请求获得特性信令LMP_features_req_ext,由于步骤101中所做的设置,使得终端的A2DP及AVRCP的服务状态均不可见且不可被连接,即:终端返回的对请求特性作出响应的信令LMP_features_res_ext中不会带有A2DP或AVRCP的信息,所以蓝牙耳机只向终端发起HFP连接请求。
步骤103:终端收到HFP连接请求后查询蓝牙耳机是否还具备A2DP和AVRCP的服务;
具体为:终端中的Host收到HCI_Connection_Request(HFP)指令后在本地设备信息中查询蓝牙耳机是否还具备A2DP和AVRCP的服务。其中,所述本地设备信息为蓝牙耳机向终端发起连接请求之前蓝牙耳机与终端间的内部交换信息。
这里,进一步地,终端收到HFP连接请求后,在界面上弹出对话框提示用户有蓝牙耳机发起连接,如:蓝牙耳机请求与终端建立连接,如果用户同意,则终端查询蓝牙耳机是否还具备A2DP和AVRCP的服务,并进行后续连接操作;如果用户不同意,则本次连接结束。
步骤104:终端确定蓝牙耳机具备A2DP和AVRCP的服务后,向蓝牙耳机发起AVRCP连接请求;
具体为:终端确定蓝牙耳机具备A2DP和AVRCP的服务后,终端中的Ho st将创建连接指令HCI_Create_Connection(AVRCP)发送到终端中的LM,终端中的LM收到HCI_Create_Connection(AVRCP)后,将主机连接请求信令LMP_host_connection_req(AVRCP)发送到蓝牙耳机中的LM,之后蓝牙耳机中的LM再将连接请求指令HCI_Connection_Request(AVRCP)发送到蓝牙耳机中的Host。
这里,进一步地,如果终端确定蓝牙耳机不具备A2DP和AVRCP的服务,即:蓝牙耳机只具备HFP的服务,则将同意HFP连接的响应发送到蓝牙耳机,连接建立过程结束。
步骤105:蓝牙耳机同意建立AVRCP连接,并将连接结果通知终端;
具体为:蓝牙耳机中的Host收到HCI_Connection_Request(AVRCP)指令后,将同意连接请求指令HCI_Accept_Connection_Request(AVRCP)发送到蓝牙耳机中的LM,蓝牙耳机中的LM收到HCI_Accept_Connection_Request(AVRCP)后,将接受信令LMP_accepted(AVRCP)发送到终端中的LM,终端中的LM收到LMP_accepted(AVRCP)后,将连接完成指令HCI_Connection_Complete(AVRCP)发送到终端中的Host。
这里,由于蓝牙耳机相对终端来说为哑终端,因此,蓝牙耳机会自动接受终端发起的连接请求。
步骤106:终端收到AVRCP连接已建立的消息后,向蓝牙耳机发起A2DP连接请求;
具体为:终端中的Host收到HCI_Connection_Complete(AVRCP)后,将创建连接指令HCI_Create_Connection(A2DP)发送到终端中的LM,终端中的LM收到HCI_Create_Connection(A2DP)后,将主机连接请求信令LMP_host_connection_req(A2DP)发送到蓝牙耳机中的LM,之后蓝牙耳机中的LM再将连接请求指令HCI_Connection_Request(A2DP)发送到蓝牙耳机中的Host。
本发明中,如果终端确定蓝牙耳机具备A2DP和AVRCP的服务后,也可首先向蓝牙耳机发起A2DP连接请求,收到A2DP连接已建立的消息后再向蓝牙耳机发起AVRCP连接请求。
步骤107:蓝牙耳机同意建立A2DP连接,并将连接结果通知终端;
具体为:蓝牙耳机中的Host收到HCI_Connection_Request(A2DP)指令后,将同意连接请求指令HCI_Accept_Connection_Request(A2DP)发送到蓝牙耳机中的LM,蓝牙耳机中的LM收到HCI_Accept_Connection_Request(A2DP)后,将接受信令LMP_accepted(A2DP)发送到终端中的LM,终端中的LM收到LMP_accepted(A2DP)后,将连接完成指令HCI_Connection_Complete(A2DP)发送到终端中的Host。
步骤108~109:终端收到A2DP连接已建立的消息后,向蓝牙耳机发起同意建立HFP连接的消息,连接建立过程结束;
具体为:终端中的Host收到HCI_Connection_Complete(A2DP)后,将同意连接请求指令HCI_Accept_Connection_Request(HFP)发送到终端中的LM,终端中的LM收到HCI_Accept_Connection_Request(HFP)后,将接受信令LMP_accepted(HFP)发送到蓝牙耳机中的LM,蓝牙耳机中的LM收到LMP_accepted(HFP)后,将HCI_Connection_Complete(HFP)发送到蓝牙耳机中的Host。
本发明步骤108之后进一步包括终端通知用户蓝牙耳机与终端的连接建立成功,如:蓝牙耳机与终端已建立,蓝牙耳机可以使用。
为实现上述方法,本发明还提供了一种终端控制蓝牙耳机有序连接的***,如图2所示,该***包括:终端和蓝牙耳机;其中,
所述终端,用于将自身的HFP的服务状态设置为可见且可被连接,并将自身的A2DP和AVRCP的服务状态设置为不可见且不可被连接;将同意HFP连接的响应发送到蓝牙耳机;
所述蓝牙耳机,用于向终端发送HFP连接请求,接收终端所发的同意HFP连接的响应。
所述终端,进一步用于收到蓝牙耳机所发的HFP连接请求后查询蓝牙耳机是否还具备A2DP和AVRCP的服务,确定蓝牙耳机具备A2DP和AVRCP的服务后顺序执行与蓝牙耳机的连接操作;相应的,
所述蓝牙耳机,进一步用于在终端确定蓝牙耳机具备A2DP和AVRCP的服务后顺序执行与终端的连接操作。
其中,所述终端进一步包括Host和LM,所述蓝牙耳机进一步包括Host和LM;相应的,
所述终端将自身的HFP的服务状态设置为可见且可被连接,具体为:
终端中的Host将HCI_Write_Class_of_Device指令下发给终端中的LM,终端中的LM收到HCI_Write_Class_of_Device指令后将HCI_Write_Scan_Enable指令返回给终端中的Host;
所述终端收到蓝牙耳机所发的HFP连接请求后查询蓝牙耳机是否还具备A2DP和AVRCP的服务,具体为:
终端中的Host收到HCI_Connection_Request(HFP)指令后在本地设备信息中查询蓝牙耳机是否还具备A2DP和AVRCP的服务;
所述终端将同意HFP连接的响应发送到蓝牙耳机,蓝牙耳机接收终端所发的同意HFP连接的响应,具体为:
终端中的Host将HCI_Accept_Connection_Request(HFP)指令发送到终端中的LM,终端中的LM收到HCI_Aceept_Connection_Request(HFP)后,将LMP_accepted(HFP)信令发送到蓝牙耳机中的LM,蓝牙耳机中的LM收到LMP_accepted(HFP)信令后,将HCI_Connection_Complete(HFP)发送到蓝牙耳机中的Host;
所述蓝牙耳机向终端发送HFP连接请求,终端接收蓝牙耳机所发的HFP连接请求,具体为:
蓝牙耳机中的Host将HCI_Create_Connection(HFP)指令发送到蓝牙耳机中的LM,蓝牙耳机中的LM收到HCI_Create_Connection(HFP)后,将LMP_host_connection_req(HFP)信令发送到终端中的LM,终端中的LM收到LMP_host_connection_req(HFP)后,将HCI_Connection_Request(HFP)指令发送到终端中的Host。
所述终端,进一步用于将自身的A2DP和AVRCP的服务状态设置为不可 见且不可被连接。
所述终端,进一步用于确定蓝牙耳机不具备A2DP和AVRCP的服务时,将同意HFP连接的响应发送到蓝牙耳机;
相应的,所述蓝牙耳机,进一步用于接收终端所发的同意HFP连接的响应。
所述终端,进一步用于收到HFP连接请求后,在界面上弹出对话框提示用户有蓝牙耳机发起连接。
所述终端,还用于将同意HFP连接的响应发送到蓝牙耳机之后,通知用户蓝牙耳机与终端的连接建立成功。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。