CN116528209B - 蓝牙扫描方法、设备、芯片系统及存储介质 - Google Patents

蓝牙扫描方法、设备、芯片系统及存储介质 Download PDF

Info

Publication number
CN116528209B
CN116528209B CN202310498474.2A CN202310498474A CN116528209B CN 116528209 B CN116528209 B CN 116528209B CN 202310498474 A CN202310498474 A CN 202310498474A CN 116528209 B CN116528209 B CN 116528209B
Authority
CN
China
Prior art keywords
bluetooth
scanning
service
scan
task
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202310498474.2A
Other languages
English (en)
Other versions
CN116528209A (zh
Inventor
李炜
李超
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Honor Device Co Ltd
Original Assignee
Honor Device Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202310498474.2A priority Critical patent/CN116528209B/zh
Publication of CN116528209A publication Critical patent/CN116528209A/zh
Application granted granted Critical
Publication of CN116528209B publication Critical patent/CN116528209B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W8/00Network data management
    • H04W8/005Discovery of network devices, e.g. terminals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/80Services using short range communication, e.g. near-field communication [NFC], radio-frequency identification [RFID] or low energy communication
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/70Reducing energy consumption in communication networks in wireless communication networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

本申请提供了一种蓝牙扫描方法、设备、芯片系统及存储介质。该方法在停止对第一业务的蓝牙扫描时,根据第一扫描ID确定针对第一业务的第一蓝牙扫描任务是否完成;其中,第一扫描ID在启动对第一业务的蓝牙扫描时,为第一业务分配;在第一蓝牙扫描任务未完成时,删除第一蓝牙扫描任务;在删除第一蓝牙扫描任务后,注销第一扫描ID。从而保证了后续发起的其他复用了第一扫描ID的业务对应的蓝牙扫描任务能够正常进行。

Description

蓝牙扫描方法、设备、芯片系统及存储介质
技术领域
本申请涉及通信技术领域,尤其涉及一种蓝牙扫描方法、设备、芯片系统及存储介质。
背景技术
超级终端业务表示开启超级终端功能的设备能够自动发现附近登录相同账号的设备,进而与发现的设备组成超级终端,以打造全场景协同体验,使得用户能够同时操控多个系统,而不用一个个操作。
由于终端设备开启超级终端功能,执行超级终端业务时,会频繁的调用开始扫描接口和停止扫描接口,而不同的业务期望扫描到的扫描结果会有所不同。因此,当终端设备频繁的调用开始扫描接口和停止扫描接口,就会导致获得的扫描结果不是期望的扫描结果的问题。
发明内容
为了解决上述技术问题,本申请提供一种蓝牙扫描方法、设备、芯片系统及存储介质,旨在保证扫描结果为当前业务期望的扫描结果。
第一方面,本申请提供一种蓝牙扫描方法。该方法应用于终端设备,包括:在停止对第一业务的蓝牙扫描时,根据第一扫描ID确定针对第一业务的第一蓝牙扫描任务是否完成;其中,第一扫描ID在启动对第一业务的蓝牙扫描时,为第一业务分配;在第一蓝牙扫描任务未完成时,删除第一蓝牙扫描任务;在删除第一蓝牙扫描任务后,注销第一扫描ID。
由此,在停止针对某一业务的蓝牙扫描的时候,通过判断当前是否还有该业务对应的蓝牙扫描任务在执行,如果有就将该业务对应的蓝牙扫描任务删除,并注销为该业务分配的扫描ID。这样便可以避免重复使用同一个扫描ID时,终端设备都默认为是针对同一个业务的,进而导致反馈的扫描结果都相同,即不是当前业务期望的扫描结果。
也就是说,基于本申请提供的蓝牙扫描方法,能够保证在相同的时间内,同一个扫描ID只对应同一个业务,从而保证了扫描结果为当前业务期望的扫描结果。
根据第一方面,在注销第一扫描ID之后,方法还包括:在启动对第二业务的蓝牙扫描时,为第二业务分配第二扫描ID;其中,第二扫描ID与第一扫描ID相同;根据第二扫描ID,执行针对第二业务的第二蓝牙扫描任务;在第二蓝牙扫描任务完成后,上报针对第二业务的蓝牙扫描结果。
由于在停止针对第一业务的蓝牙扫描时,已经将第一业务对应的未执行完的第一蓝牙扫描任务全部删除了,因此在启动第二业务时,即便为第二业务分配的第二扫描ID与第一扫描ID相同,也能保证复用了第一扫描ID的第二业务对应的第二蓝牙扫描任务能够正常进行,从而保证扫描结果为第二业务期望的扫描结果。
示例性的,对于这种实现场景,第二业务可以为与第一业务相同的业务,也可以是不相同的业务。但不论第二业务与第一业务是否相同,基于本申请提供的蓝牙扫描方法,均能保证最终获得的扫描结果为当前业务期望的扫描结果。
根据第一方面,或者以上第一方面的任意一种实现方式,第一业务和第二业务为不同的业务。
由于在停止针对第一业务的蓝牙扫描时,已经将第一业务对应的未执行完的第一蓝牙扫描任务全部删除了,因此在启动与第一业务不相同的第二业务时,即便为第二业务分配的第二扫描ID与第一扫描ID相同,也能保证复用了第一扫描ID的第二业务对应的第二蓝牙扫描任务能够正常进行,从而保证扫描结果为第二业务期望的扫描结果。
根据第一方面,或者以上第一方面的任意一种实现方式,启动蓝牙扫描和停止蓝牙扫描的处理在蓝牙主线程进行,蓝牙扫描任务的处理在蓝牙子线程进行,扫描ID的分配和注销在蓝牙协议栈进行。
根据第一方面,或者以上第一方面的任意一种实现方式,在停止对第一业务的蓝牙扫描时,根据第一扫描ID确定针对第一业务的第一蓝牙扫描任务是否完成,包括:蓝牙主线程调用停止扫描接口,并在停止扫描接口中调用清除函数;将第一扫描ID传入清除函数,以使清除函数根据第一扫描ID确定针对第一业务的第一蓝牙扫描任务是否完成。
根据第一方面,或者以上第一方面的任意一种实现方式,清除函数根据第一扫描ID确定针对第一业务的第一蓝牙扫描任务是否完成,包括:清除函数查找蓝牙子线程的蓝牙扫描任务队列中是否存在第一扫描ID对应的第一蓝牙扫描任务;在蓝牙扫描任务队列中存在第一扫描ID对应的第一蓝牙扫描任务时,确定第一蓝牙扫描任务未完成。
根据第一方面,或者以上第一方面的任意一种实现方式,在第一蓝牙扫描任务未完成时,删除第一蓝牙扫描任务,包括:清除函数将第一蓝牙扫描任务从第一蓝牙扫描任务队列中移除。
根据第一方面,或者以上第一方面的任意一种实现方式,第一扫描ID为预设的扫描ID列表中的一个扫描ID,在将第一扫描ID分配给第一业务时,扫描ID列表中对应第一扫描ID的扫描ID被置为第一状态,第一状态指示扫描ID被占有;注销第一扫描ID,包括:蓝牙协议栈注销第一扫描ID,并将扫描ID列表中对应第一扫描ID的扫描ID置为第二状态,第二状态指示扫描ID未被占有。
根据第一方面,或者以上第一方面的任意一种实现方式,在启动对第二业务的蓝牙扫描时,为第二业务分配第二扫描ID,包括:蓝牙主线程调用开始扫描接口,向蓝牙协议栈发起针对第二业务的蓝牙扫描指示;蓝牙协议栈为第二业务分配第二扫描ID。
根据第一方面,或者以上第一方面的任意一种实现方式,蓝牙协议栈为第二业务分配第二扫描ID,包括:蓝牙协议栈遍历预设的扫描ID列表中的扫描ID,将遍历到的首个第二状态的扫描ID分配给第二业务,作为第二扫描ID;将预设的扫描ID列表中作为第二扫描ID的扫描ID置为第一状态;其中,第一状态指示所述扫描ID被占有,第二状态指示扫描ID未被占有。
根据第一方面,或者以上第一方面的任意一种实现方式,终端设备集成了Nearby服务,Nearby服务用于快速发现附近的设备和服务。
根据第一方面,或者以上第一方面的任意一种实现方式,第一业务和第二业务均为超级终端业务,超级终端业务基于Nearby服务实现;其中,终端设备执行超级终端业务,自动发现附近登录相同账号的设备,组成超级终端。
第二方面,本申请提供了一种终端设备。该终端设备包括:存储器和处理器,存储器和处理器耦合;存储器存储有程序指令,程序指令由处理器执行时,使得所述终端设备执行第一方面或第一方面的任意可能的实现方式中的方法的指令。
第二方面以及第二方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第二方面以及第二方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第三方面,本申请提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括用于执行第一方面或第一方面的任意可能的实现方式中的方法的指令。
第三方面以及第三方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第三方面以及第三方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第四方面,本申请提供了一种计算机程序,该计算机程序包括用于执行第一方面或第一方面的任意可能的实现方式中的方法的指令。
第四方面以及第四方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第四方面以及第四方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第五方面,本申请提供了一种芯片系统。该芯片系统包括处理器。处理器用于支持终端设备实现上述第一方面或第一方面的任意可能的实现方式中的方法的指令。
根据第五方面,处理器包括调制解调器。
相应地,处理器用于支持终端设备实现上述第一方面或第一方面的任意可能的实现方式中的方法的指令,具体包括:
调制解调器用于支持终端设备实现上述第一方面或第一方面的任意可能的实现方式中的方法的指令。
第五方面以及第五方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第五方面以及第五方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
附图说明
图1为示例性示出的终端设备的硬件结构示意图;
图2为示例性示出的开启超级终端功能的用户界面示意图;
图3为示例性示出的开启超级终端功能的用户界面示意图;
图4为示例性示出的开启超级终端功能后的蓝牙扫描的场景示意图;
图5为示例性示出的一种蓝牙扫描的流程的示意图;
图6为示例性示出的本申请实施例提供的一种蓝牙扫描方法的流程示意图;
图7为示例性示出的本申请实施例提供的又一种蓝牙扫描方法的流程示意图;
图8示例性示出的本申请实施例提供的蓝牙扫描方法涉及的终端设备的软件和硬件的架构示意图;
图9为示例性示出的本申请实施例提供的蓝牙扫描方法的时序图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
本申请实施例的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一目标对象和第二目标对象等是用于区别不同的目标对象,而不是用于描述目标对象的特定顺序。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
在本申请实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。例如,多个处理单元是指两个或两个以上的处理单元;多个系统是指两个或两个以上的系统。
为了更好地理解本申请实施例提供的技术方案,在对本申请实施例的技术方案说明之前,首先结合附图对本申请实施例的适用于的终端设备(例如手机、平板电脑、可触控PC机等)的硬件结构进行说明。为了便于说明,图1以手机为例进行说明。
参见图1,手机100可以包括:处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriberidentification module,SIM)卡接口195等。
其中,处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器(Modem),图形处理器(graphicsprocessing unit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等,此处不再一一列举,本申请对此不作限制。
关于上述所说的作为处理单元的控制器,可以是手机100的神经中枢和指挥中心。在实际应用中,控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
关于上述说的调制解调处理器,可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号,以及将解调得到的低频基带信号传送至基带处理器处理。
关于上述所说的基带处理器,用于对调节器传输的低频基带信号进行处理,并将处理后的低频基带信号传递给应用处理器。
需要说明的,在一些实现方式中,基带处理器可以集成在调制解调器内,即调制解调器可以具备基带处理器的功能。
关于上述所说的应用处理器,用于通过音频设备(不限于扬声器170A,受话器170B等)输出声音信号,或通过显示屏194显示图像或视频。
关于上述所说的数字信号处理器,用于处理数字信号。具体地,数字信号处理器除了可以处理数字图像信号,还可以处理其他数字信号。例如,当手机100在频点选择时,数字信号处理器可用于对频点能量进行傅里叶变换等。
关于上述所说的神经网络处理器,是基于神经网络算法与加速的新型处理器的总称。在一些实现方式中,通过神经网络处理器可以实现对数据、图像的精准、快速识别处理。
关于上述所说的视频编解码器,用于对数字视频压缩或解压缩。示例性的,手机100可以支持一种或多种视频编解码器。这样,手机100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
关于上述所说的ISP,用于将数字图像信号输出到DSP加工处理。具体地,ISP用于处理摄像头193反馈的数据。例如,拍照、录像时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实现方式中,ISP可以设置在摄像头193中。
关于上述所说的DSP,用于将数字图像信号转换成标准的RGB,YUV等格式的图像信号。
此外,还需要说明的,关于包括上述处理单元的处理器110,在一些实现方式中,不同的处理单元可以是独立的器件。即,每一个处理单元都可以看作为一个处理器。在另一些实现方式中,不同的处理单元也可以集成在一个或多个处理器中。例如,在一些实现方式中,调制解调处理器可以是独立的器件。在另一些实现方式中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
应当理解地是,上述说明仅是为了更好地理解本实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
此外,处理器110还可以包括一个或多个接口。其中,接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等,此处不再一一列举,本申请对此不作限制。
此外,处理器110中还可以设置存储器,用于存储指令和数据。在一些实现方式中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
继续参见图1,外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展手机100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
继续参见图1,内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行手机100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能,以及本申请实施例中所说的立体声录制功能等)等。存储数据区可存储手机100使用过程中所创建的数据(比如基于本申请实施例提供的技术方案录制的立体声的音频数据)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
继续参见图1,充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实现方式中,充电管理模块140可以通过USB接口130接收有线充电器的充电输入。在一些无线充电的实现方式中,充电管理模块140可以通过手机100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为终端设备供电。
继续参见图1,电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头193,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实现方式中,电源管理模块141也可以设置于处理器110中。在另一些实现方式中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
继续参见图1,手机100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
需要说明的,天线1和天线2用于发射和接收电磁波信号。手机100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实现方式中,天线可以和调谐开关结合使用。
继续参见图1,移动通信模块150可以提供应用在手机100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实现方式中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实现方式中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
继续参见图1,无线通信模块160可以提供应用在手机100上的包括无线局域网(wireless local area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
具体到本申请提供的技术方案中,针对某一业务发起的蓝牙扫描,执行该业务针对的蓝牙扫描任务,以及停止针对该业务的蓝牙扫描等处理,便是在无线通信模块160中的BT中实现的。
继续参见图1,音频模块170可以包括扬声器170A,受话器170B,麦克风170C,耳机接口170D等。示例性的,手机100可以通过应用处理器和音频模块170中的扬声器170A,受话器170B,麦克风170C,耳机接口170D等实现音频功能。例如录音录像功能。
其中,在通过应用处理器和音频模块170实现音频功能的过程中,音频模块170可用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实现方式中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。
继续参见图1,传感器模块180可以包括压力传感器,陀螺仪传感器,气压传感器,磁传感器,加速度传感器,距离传感器,接近光传感器,指纹传感器,温度传感器,触摸传感器,环境光传感器,骨传导传感器等,此处不再一一列举,本申请对此不作限制。
继续参见图1,按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。手机100可以接收按键输入,产生与手机100的用户设置以及功能控制有关的按键信号输入。
继续参见图1,马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。
继续参见图1,指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
继续参见图1,摄像头193用于捕获静态图像或视频。手机100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。具体地,物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupleddevice,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实现方式中,手机100可以包括1个或N个摄像头193,N为大于1的正整数。
继续参见图1,显示屏194用于显示图像,视频等。显示屏194包括显示面板。在一些实现方式中,手机100可以包括1个或N个显示屏194,N为大于1的正整数。手机100可以通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
关于手机100的硬件结构就介绍到此,应当理解地是,图1所示手机100仅是一个范例,在具体实现中,手机100可以具有比图中所示的更多的或者更少的部件,可以组合两个或多个的部件,或者可以具有不同的部件配置。图1中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。
此外,还需要说明的,为了降低终端设备的功耗。终端设备中用于实现本申请提供的蓝牙扫描方法的蓝牙,可以为低功耗(Bluetooth Low Energy,BLE)蓝牙。
此外,还需要说明的,由于超级终端业务需要做到快速发现设备和服务(周围登录了相同账号的设备,以及登录了相同账号的设备对应的服务等)。因此,为了实现超级终端业务,用于发现设备和服务的终端设备(可以称为:第一设备)中通常会集成Nearby服务(靠近发现服务)。这样,第一设备开启超级终端功能后,便可以通过Nearby服务频繁的调用开始扫描接口和停止扫描接口,执行不同的超级终端业务。
此外,还需要说明的,对于第一设备执行超级终端业务,快速发现的设备(可以称为:第二设备),本申请不限制其集成Nearby服务。即,第二设备可以集成Nearby服务,也可以不集成Nearby服务,本申请对此不作限制。
仍以终端设备为手机为例,以下结合图2和图3,对开启超级终端功能进行说明。
参见图2中(1),示例性示出手机的一个界面(界面10a)。示例性的,界面10a上可包括一个或多个控件,例如电量图标、网络图标,以及各种应用图标等。其中,应用图标例如包括设置应用图标10a-1。
示例性的,在用户点击10a-1后,手机响应于该操作行为,将启动设置应用,从界面10a切换到图2中(2)示出的界面10b。
参见图2中(2),界面10b上可包括一个或多个控件。包括的控件包括但不限于:账号中心、飞行模式、超级终端、WLAN、蓝牙、通知、应用、显示和亮度、声音和振动、系统和更新、电池、存储、安全等控件选项。
示例性的,在用户点击“超级终端”这一控件选项后,手机响应于该操作行为,将加载超级终端对应的界面,如图3中(1)示出的界面10c。
参见图3中(1),示例性的,界面10c上可包括一个或多个控件。包括的控件包括但不限于:用于回退到设置界面(界面10b)的控件,用于开启或关闭超级终端功能的控件。
示例性的,本实施例以图3中(1)示出的10c-1表示超级终端功能未开启,即关闭;以图3中(2)示出的10c-1'表示超级终端功能开启。基于此,当用户点击处于10c-1所示样式的控件后,手机响应于该操作行为,将开启超级终端功能,该控件也将切换为10c-1'所示样式。相应地,在开启超级终端功能后,手机便会基于Nearby服务实现超级终端业务。
示例性的,在开启超级终端功能的情况下,当用户点击处于10c-1'所示样式的控件后,手机响应于该操作行为,将关闭超级终端功能,该控件也将切换为10c-1所示样式。相应地,在关闭超级终端功能后,手机就会停止使用Nearby服务实现超级终端业务。
应当理解地是,上述说明仅是为了更好地理解本实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
示例性的,在一些实现方式中,开启或关闭超级终端功能的入口可以直接集成在界面10b中,如界面10b中“超级终端”所在位置,直接显示界面10c中示出的10c-1或10c-1'。关于这两个控件的切换详见上述描述,此处不再赘述。
示例性的,在另一些实现方式中,开启或关闭超级终端功能的入口也可以集成在通知管理中心。例如,用户可以手机界面的指定位置,使用指定手势换出通知管理中心对应的界面或者通知栏,进而通过操作超级终端功能对应的选项/控件,实现开启或关闭超级终端。
示例性的,在另一些实现方式中,开启或关闭超级终端功能的入口也可以集成在单独的应用中。这样,用户通过在手机界面中点击该应用对应的图标,进而启动该应用,便可以在该应用对应的界面中操作对应的功能选项,实现开启或关闭超级终端功能。
应当理解地是,上述说明仅是为了更好地理解本实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
此外,还需要说明的,终端设备,如手机开启超级终端功能,执行超级终端业务时,Nearby服务在启动蓝牙扫描的时候,会针对当前要执行的超级终端业务添加一个过滤器,以用来扫描到期望的扫描结果。具体为添加当前要执行的超级终端业务对应的参数/条件,如信号强度参数、要求扫描的设备类型等,这样在扫描到满足这些参数/条件的设备时,才会上报扫描结果,从而保证获得的扫描结果为该超级终端业务期望的扫描结果。
此外,还需要说明的,上述所说的在过滤器中配置的设备类型具体指蓝牙设备类型(Class of Device,COD)。因此设备类型的配置,可以直接使用COD标识。例如,使用“00001”指示设备类型为计算机,具体可以是台式机(如图4中的设备B)、笔记本、平板电脑等;使用“00111”指示设备类型为可穿戴设备,具体可以是智能手环、手表(如图4中的设备A)等;使用“00100”指示设备类型为音频/视频设备,如用于显示视频的电视(如图4中的设备C)、用于播放音频的耳机、扬声器、立体声等。
此外,还需要说明的,在超级终端业务是发现服务时,配置的参数/条件可以为针对不同服务的标识。
关于指示不同服务的标识,以及不同设备类型的标识的具体取值,可以参见现有协议标准,此处不再赘述。
参见图4,示例性的,对于开启了超级终端功能的手机100,如果Nearby服务当前识别到的业务场景为自动发现设备类型为低功耗,信号强度参数在-40dBm~-50dBm的设备,即当前要执行的超级终端业务对应的过滤器配置的参数/条件可包括设备类型为低功耗,信号强度参数在-40dBm~-50dBm。基于此,手机100执行本次超级终端业务,最终期望获得的扫描结果为图4中,满足上述两个参数/条件的设备A的相关信息,而不包括设备B和设备C的相关信息。
示例性的,如果Nearby服务当前识别到的业务场景为自动发现设备类型为PC,信号强度参数在-40dBm~-50dBm的设备,即当前要执行的超级终端业务对应的过滤器配置的参数/条件可包括设备类型为PC,信号强度参数在-40dBm~-50dBm。基于此,手机100执行本次超级终端业务,最终期望获得的扫描结果为图4中,满足上述两个参数/条件的设备B的相关信息,而不包括设备A和设备C的相关信息。
示例性的,如果Nearby服务当前识别到的业务场景为自动发现设备类型为大屏,信号强度参数在-40dBm~-50dBm的设备,即当前要执行的超级终端业务对应的过滤器配置的参数/条件可包括设备类型为大屏,信号强度参数在-40dBm~-50dBm。基于此,手机100执行本次超级终端业务,最终期望获得的扫描结果为图4中,满足上述两个参数/条件的设备C的相关信息,而不包括设备A和设备B的相关信息。
应当理解地是,上述说明仅是为了更好地理解本实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。在实际应用中,针对不同的超级终端业务,过滤器中可以配置不同的参数/条件,例如可以包括多种设备类型,多种信号强度参数等,本申请对此不作限制。
通过上述描述可知,在开启超级终端功能后,终端设备,如手机中集成的Nearby服务会频繁的调用开始扫描接口和停止扫描接口,而不同的业务期望扫描到的扫描结果会有所不同。因此,当终端设备频繁的调用开始扫描接口和停止扫描接口,就会导致获得的扫描结果不是期望的扫描结果的问题。
为了更好地理解,以下结合图5,对造成这个问题的情况的原因进行具体说明。
101,蓝牙对应的主线程发起针对业务A的蓝牙扫描。
示例性的,在开启超级终端功能后,当Nearby服务识别到当前的业务场景对应的超级终端业务为业务A时,蓝牙对应的主线程将发起针对业务A的蓝牙扫描,并告知蓝牙协议栈。
102,蓝牙协议栈为业务A分配扫描ID(如11)。
示例性的,在主线程发起针对业务A的蓝牙扫描后,蓝牙协议栈响应于该操作指示,将为业务A分配扫描ID(如11)。
103,蓝牙协议栈将为业务A分配的扫描ID(11)发送给蓝牙对应的子线程。
示例性的,蓝牙协议栈为业务A分配号扫描ID后,会将为业务A分配的扫描ID发送给蓝牙的子线程。
104,子线程根据扫描ID(11)开始执行业务A对应的蓝牙扫描任务。
需要说明的,在实际应用中,等待子线程执行的蓝牙扫描任务可能有多个,因此子线程在接收到蓝牙协议栈为不同的业务分配的扫描ID后,会将接收到的扫描ID添加到其管理的蓝牙扫描任务队列中。然后依次从蓝牙扫描任务队列中读取不同业务的扫描ID,进而开始执行该扫描ID对应的业务的蓝牙扫描任务,并在该扫描ID对应的蓝牙扫描任务执行完后,将该扫描ID从蓝牙扫描任务队列中移除。
105,主线程停止对业务A的蓝牙扫描。
106,蓝牙协议栈注销为业务A分配的扫描ID(11)。
107,主线程发起针对业务B的蓝牙扫描。
108,蓝牙协议栈为业务B分配扫描ID(如11)。
109,蓝牙协议栈将为业务B分配的扫描ID(11)发送给蓝牙对应的子线程。
110,子线程识别到当前存在扫描ID(11)的蓝牙扫描任务还在执行,丢弃掉109中发送的扫描ID(11)。
需要说明的,子线程在向蓝牙扫描任务队列添加接收到的扫描ID时,会检测蓝牙扫描任务队列中是否存在相同的扫描ID,如果存在则会认为是相同的业务。因此,在为业务B分配的扫描ID与业务A的扫描ID相同的情况下,由于子线程还在执行104的操作,因此会将109中发送的为业务B分配的扫描ID丢掉,即在蓝牙扫描任务队列中存在扫描ID(11)的情况下,不重复添加扫描ID(11)到蓝牙扫描任务队列中。
111,子线程完成业务A对应的蓝牙扫描任务,将业务A的扫描结果反馈给蓝牙协议栈。
112,蓝牙协议栈将业务A的扫描结果上报主线程。
由于业务A的蓝牙扫描已经停止了,当前要求执行的业务为业务B,因此期望获得的扫描结果实质为业务B的,而非业务A的,这就导致扫描结果不是期望的扫描结果。
通过图5所示场景可知,不同业务对应的蓝牙扫描任务是在子线程中执行的,而发起(也可以表示为启动,或者开启)蓝牙扫描和停止蓝牙扫描的操作是在主线程中执行的。由于主线程的速度要快于子线程,因此会存在主线程发起针对某一业务,如业务A的蓝牙扫描后,又很快停止针对业务A的蓝牙扫描的时候,子线程还没有完成针对业务A的蓝牙扫描任务。因此,当主线程在没有收到业务A对应的扫描结果前,再次发起针对新业务,如业务B的蓝牙扫描时,由于之前为业务A分配的扫描ID(如11)已经被蓝牙协议栈注销,因此蓝牙协议栈会认为扫描ID(11)是可以使用的。这种情况下,如果蓝牙协议栈为业务B也分配了扫描ID(11),由于两次分配的扫描ID一样,这样传递到子线程后,子线程就会认为依旧是执行业务A的蓝牙扫描任务。故而,在业务A的蓝牙扫描任务还未完成的情况下,相同的扫描ID就不会添加到蓝牙扫描任务队列中,因此子线程就不会处理新发起的蓝牙扫描任务,这就导致最终上报的扫描结果不是当前业务期望的扫描结果。
有鉴于此,本申请提供了一种蓝牙扫描方法,旨在保证了后续发起的其他复用了第一扫描ID的业务对应的蓝牙扫描任务能够正常进行。
参见图6,示例性示出一种本申请提供的蓝牙扫描方法,具体可包括:
201,在停止对第一业务的蓝牙扫描时,根据第一扫描ID确定针对第一业务的第一蓝牙扫描任务是否完成。
示例性的,本实施例中所说的第一业务,例如为上述实施例中所说的业务A,其为终端设备开启超级终端功能后,基于Nearby服务实现的一种超级终端业务。相应地,第一扫描ID为启动对第一业务的蓝牙扫描时,由蓝牙协议栈分配给第一业务的扫描ID(scannerId),例如上述实施例中所说的为业务A分配的扫描ID(11)。相应地,第一蓝牙扫描任务即为第一业务对应的蓝牙扫描任务。
通过上述描述可知,启动蓝牙扫描和停止蓝牙扫描的处理,均是在蓝牙对应的主线程(后续称为:蓝牙主线程)进行的,而蓝牙扫描任务的处理则是在蓝牙对应的子线程(后续称为蓝牙子线程)进行的。基于此可知,201中的操作具体是由蓝牙主线程进行的。
具体地,在停止对第一业务的蓝牙扫描时,蓝牙主线程可以通过调用停止扫描接口,如scanManager.stopScan(),并在scanManager.stopScan()中调用清除函数(后续称为:clearUnhandleDScanMsg函数)。
进一步地,为了保证后续清除的是第一业务对应的未完成的第一蓝牙扫描任务,而非其他未调用scanManager.stopScan()的业务的蓝牙扫描任务,需要将第一业务对应的第一扫描ID作为clearUnhandleDScanMsg函数的入参,即将第一扫描ID传入clearUnhandleDScanMsg函数。这样,clearUnhandleDScanMsg函数就可以根据第一扫描ID确定针对第一业务的第一蓝牙扫描任务是否完成,即是否需要清除。相应地,在确定第一蓝牙扫描任务未完成时,将未完成的第一扫描任务清除,即执行202。
202,在第一蓝牙扫描任务未完成时,删除第一蓝牙扫描任务。
具体地,clearUnhandleDScanMsg函数将根据传入的第一扫描ID,查找蓝牙子线程管理的蓝牙扫描任务队列中是否存在第一扫描ID对应的第一蓝牙扫描任务。
相应地,在蓝牙扫描任务队列中存在第一扫描ID对应的第一蓝牙扫描任务时,确定第一蓝牙扫描任务未完成。反之,则确定第一蓝牙扫描任务已完成。
具体到本实施例中,对于确定第一蓝牙扫描任务未完成的情况,clearUnhandleDScanMsg函数会将第一蓝牙扫描任务从第一蓝牙扫描任务队列中移除,具体为将第一蓝牙扫描任务对应的所有消息删除,包括了第一扫描ID,以及执行第一蓝牙扫描任务过程中扫描到的信息,如扫描到的设备名称、参数等。对于确定第一蓝牙扫描任务已完成的情况,clearUnhandleDScanMsg函数不做处理,例如可以直接执行return指令。
203,在删除第一蓝牙扫描任务后,注销第一扫描ID。
通过描述可知,蓝牙主线程在发起针对每一业务的蓝牙扫描时,蓝牙协议栈都会为当前发起蓝牙扫描的业务分配扫描ID,而在停止针对该业务的蓝牙扫描时,蓝牙协议栈会注销为该业务分配的扫描ID。因此,在删除第一蓝牙扫描任务后,蓝牙协议栈站还需要注销第一扫描ID。
需要说明的,为每一个超级终端业务分配的扫描ID,可以是从预存在终端设备中的扫描ID列表中选择的。其中,扫描ID列表中记录的扫描ID可以是数字,也可以是字符等,这些扫描ID按照固定的顺序记录,并且为了标识扫描ID是否被占有/使用,即分配给超级终端业务,可以约定扫描ID被置为第一状态时,指示该扫描ID被占有。示例性的,还可以约定扫描ID被置为第二状态时,指示该扫描ID未被占有,即被注销。
以蓝牙协议栈为第一业务分配第一扫描ID为例,蓝牙协议栈在为第一业务分配扫描ID时,可以遍历预设的扫描ID列表中的扫描ID,进而将遍历到的首个第二状态的扫描ID分配给第一业务,作为第一扫描ID,并将扫描ID列表中作为第一扫描ID的扫描ID置为第一状态。这样,在蓝牙主线程未调用scanManager.stopScan(),停止对第一业务的蓝牙扫描时,即蓝牙协议栈未注销第一扫描ID前,第一扫描ID将不会再分配给其他超级终端业务。因此,在蓝牙主线程调用了scanManager.stopScan()后,蓝牙协议栈将注销第一扫描ID,即将扫描ID列表中作为第一扫描ID的扫描ID置为第二状态。
通过上述描述可知,scanManager.stopScan()是由蓝牙主线程调用的,而clearUnhandleDScanMsg函数是在scanManager.stopScan()中调用的,即上述步骤201和202是在蓝牙主线程进行的,而注销第一扫描ID是在蓝牙协议栈进行的,二者可以不分先后,因此步骤203中注销第一扫描ID的操作,并不限定必须在蓝牙主线程通过clearUnhandleDScanMsg删除第一蓝牙扫描任务后才执行。
由此,在停止针对某一业务的蓝牙扫描的时候,通过判断当前是否还有该业务对应的蓝牙扫描任务在执行,如果有就将该业务对应的蓝牙扫描任务删除,并注销为该业务分配的扫描ID。这样便可以避免重复使用同一个扫描ID时,终端设备都默认为是针对同一个业务的,进而导致反馈的扫描结果都相同,即不是当前业务期望的扫描结果。
为了更好地理解,以下结合实例进行说明。示例性的,如果在执行完上述步骤203后,蓝牙主线程紧接着启动了针对第二业务的蓝牙扫描。通过上述描述可知,在启动超级终端业务时,蓝牙协议栈都会为当前要执行的超级终端业务分配扫描ID。故而,在蓝牙主线程启动针对第二业务的蓝牙扫描,如调用开始扫描接口scanManager.startScan()后,蓝牙协议栈将为第二业务分配一个扫描ID(为了便于区分:称为第二扫描ID)。
示例性的,本实施例中所说的第二业务,例如为上述实施例中所说的业务B,其为终端设备开启超级终端功能后,基于Nearby服务实现的一种超级终端业务。相应地,第二扫描ID为启动对第二业务的蓝牙扫描时,由蓝牙协议栈分配给第二业务的扫描ID(scannerId),例如上述实施例中所说的为业务B分配的扫描ID(11)。相应地,第二蓝牙扫描任务即为第二业务对应的蓝牙扫描任务。
关于蓝牙协议栈为第二业务分配第二扫描ID的方式,例如为蓝牙协议栈遍历预设的扫描ID列表中的扫描ID,将遍历到的首个第二状态的扫描ID分配给第二业务,作为第二扫描ID,并将扫描ID列表中作为第二扫描ID的扫描ID置为第一状态。为了说明基于本申请实施例提供的蓝牙扫描方法,能够保证扫描结果始终为当前业务期望的扫描结果,此处以第一扫描ID和第二扫描ID为同一个扫描ID为例。
由于203中已经将第一扫描ID对应的未完成的第一蓝牙扫描任务清除了,因此蓝牙子线程接收到蓝牙协议栈发送的为第二业务分配的第二扫描ID时,即便第二扫描ID与第一扫描ID相同,但是由于蓝牙扫描任务列表中已经不存在第一扫描ID和第一蓝牙扫描任务,因此蓝牙子线程会认为第二扫描ID为新的超级终端业务的,故而会根据第二扫描ID执行第二业务的第二蓝牙扫描任务。
示例性的,如果在蓝牙子线程完成第二蓝牙扫描任务前,蓝牙主线程都没有调用scanManager.stopScan()停止对第二业务的蓝牙扫描,那么在第二蓝牙扫描任务完成后,蓝牙子线程便会将第二业务对应的蓝牙扫描结果上报给蓝牙主线程。
由此,基于本实施例提供的蓝牙扫描方法,能够保证在相同的时间内,同一个扫描ID只对应同一个业务,从而保证了扫描结果为当前业务期望的扫描结果。
通过上述描述可知,基于本申请实施例提供的蓝牙扫描方法,在终端设备开启超级终端功能,并确定要搜索第一业务对应的设备和/或服务时,蓝牙主线程会调用scanManager.startScan(),发起针对第一业务的蓝牙扫描,即执行图7中的301。继续参见图7,针对第一业务的蓝牙扫描下发到蓝牙协议栈后,蓝牙协议栈将为第一业务分配第一扫描ID,即执行302。继续参见图7,蓝牙协议栈为第一业务分配第一扫描ID后,会将第一扫描ID发送给蓝牙子线程(如ScanManager),即执行303。相应地,蓝牙子线程将根据第一扫描ID执行第一业务对应的第一蓝牙扫描任务。继续参见图7,在蓝牙子线程未执行完第一蓝牙扫描任务前,蓝牙主线程调用scanManager.sTopScan(),停止了针对第一业务的蓝牙扫描,即执行304。通过上述描述可知,蓝牙主线程在调用scanManager.sTopScan()时,会在scanManager.sTopScan()中调用clearUnhandleDScanMsg函数,并将第一扫描ID传入clearUnhandleDScanMsg函数。这样,蓝牙主线程就可以通过clearUnhandleDScanMsg函数根据第一扫描ID,确定第一业务的第一蓝牙扫描任务是否未完成,即执行305。继续参见图7,如果确定第一业务的第一蓝牙扫描任务未完成,蓝牙主线程通过clearUnhandleDScanMsg函数删除未完成的第一蓝牙扫描任务,即执行306。继续参见图7,在执行完306后,蓝牙子线程将停止执行针对第一业务的蓝牙扫描(停止执行第一蓝牙扫描任务),即执行307。继续参见图7,如果确定第一业务的第一蓝牙扫描任务已完成,此时没有可以删除的第一蓝牙扫描任务,因此直接执行307即可。
为了更好地理解本申请实施例提供的技术方案,以终端设备为手机为例,基于手机的软件结构和硬件的关系,对实现本申请实施例提供的蓝牙扫描方法所涉及的功能模块、硬件,以及功能模块、硬件之间的交互进行说明。
在对手机的软件结构进行说明之前,首先对手机的软件系统可以采用的架构进行说明。
具体地,在实际应用中,手机的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。
此外,可理解地,目前主流的终端设备使用的软件系统包括但不限于Windows系统、Android系统和iOS系统。为了便于说明,本申请实施例以分层架构的Android系统为例,示例性说明手机的软件结构。后续关于本申请实施例提供的蓝牙扫描的技术方案,在具体实现中同样适用于其他系统。
此外,还应当理解地,目前手机的分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。这些层例如可以包括应用程序层,应用程序框架层,安卓运行时(Android runtime)和系统库、硬件抽象层、内核层等。以下仅以本申请实施例提供的蓝牙扫描方法涉及的功能模块所在的层为例进行说明。
参见图8,为本申请实施例的手机的软件结构和涉及的硬件的示意图。在图8中,从上至下分别为应用程序层,应用程序框架层,硬件抽象层,内核层,以及硬件。
其中,应用程序层可以包括一系列应用程序包。应用程序框架层为应用程序层的应用程序提供应用编程接口(application programming interface,API)和编程框架。在一些实现方式中,这些编程接口和编程框架可以描述为函数。
继续参见图8,具体到本申请实施例提供的技术方案中,应用程序层可包括Nearby应用、蓝牙应用、设置应用等。
其中,设置应用中可以集成开启或关闭超级终端功能的入口,对于通过设置应用中集成的开启或关闭超级终端功能的入口,开启或关闭超级终端功能的方式,可以参见图2和图3所示部分的描述,此处不再赘述。
其中,Nearby应用表示终端设备集成了Nearby服务。在一些实现方式中,Nearby应用可以没有用户界面,即无需用户操作。该应用可以在用户通过设置应用中提供的开启超级终端功能的入口,开启超级终端功能后自动调起,进而基于Nearby服务实现业务场景的识别,进而实现本申请实施例提供的蓝牙扫描方法。
其中,蓝牙应用用于实现对蓝牙功能的开始或关闭。示例性的,在一些实现方式中,该应用也可以没有用户界面,直接将其集成到设置应用或者消息管理中心对应的界面或通知栏。可理解的,超级终端功能不仅需要基于Nearby服务,还需要依赖蓝牙。因此,在一种实现方式中,在开启超级终端功能前,需要先开启蓝牙。或者在开启超级终端功能后,开启蓝牙。还或者,开启超级终端功能时,自动开启蓝牙。
应当理解地是,上述说明仅是为了更好地理解本实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
继续参见图8,具体到本申请实施例提供的技术方案中,应用程序框架层可包括蓝牙框架;硬件抽象层可包括蓝牙管理器;内核层可包括蓝牙驱动。
继续参见图8,具体到本申请实施例提供的技术方案中,涉及的硬件可包括蓝牙和天线等。
基于图8所示的软件和硬件结构,当终端设备开启超级终端功能后,Nearby服务将确定当前的业务场景,进而确定需要执行的超级终端业务。相应地,在确定需要执行超级终端业务时,Nearby服务会直接调用蓝牙框架,进而通过蓝牙框架访问蓝牙管理器,由蓝牙管理器调起蓝牙驱动,进而由蓝牙驱动去驱动蓝牙,由蓝牙对应的主线程、蓝牙协议栈和子线程,按照本申请实施例提供的蓝牙扫描方法执行超级终端业务。
可理解的,蓝牙在发现周围的设备和服务时,需要基于天线收发广播,进而实现发现周围的设备和服务。
关于终端设备100的软件和硬件结构就介绍到此,可以理解地是,图8示出的软件结构中的层以及各层中包含的部件,并不构成对终端设备100的具体限定。在本申请另一些实施例中,终端设备100可以包括比图示更多或更少的层,以及每个层中可以包括更多或更少的部件,本申请不作限定。
基于上述描述,以下结合实例,以第一业务为上述所说的业务A,第二业务为上述所说的业务B,为业务A分配的第一扫描ID和为业务B分配的第二扫描ID为相同的扫描ID,如均为上述所说的扫描ID(11)为例,结合图9对本申请实施例提供的蓝牙扫描方法,进行具体说明。
401,蓝牙对应的主线程调用scanManager.startScan(),发起对业务A的蓝牙扫描。
关于步骤401的具体实现,可以参见上述实施例中的步骤101,以及步骤301,此处不再赘述。
402,蓝牙协议栈为业务A分配扫描ID(如11)。
关于步骤402的具体实现,可以参见上述实施例中的步骤102,以及步骤302,此处不再赘述。
403,蓝牙协议栈将为业务A分配的扫描ID(11)发送给蓝牙对应的子线程。
关于步骤403的具体实现,可以参见上述实施例中的步骤103,以及步骤303,此处不再赘述。
404,子线程根据扫描ID(11)开始执行业务A对应的蓝牙扫描任务。
具体地,主线程在未调用scanManager.sTopScan(),停止针对业务A的蓝牙扫描时,如果子线程未执行完业务A对应的蓝牙扫描任务,在主线程调用scanManager.sTopScan()前,子线程将一直执行业务A对应的蓝牙扫描任务。
405,主线程调用scanManager.stopScan(),停止对业务A的蓝牙扫描。
406,主线程在scanManager.stopScan()中调用clearUnhandleDScanMsg函数,将扫描ID(11)传入clearUnhandleDScanMsg函数,确定业务A对应的蓝牙扫描任务是否未完成。
关于步骤405和406的具体实现,可以参见上述实施例中的步骤201,以及步骤304和305,此处不再赘述。
407,主线程通过clearUnhandleDScanMsg函数确定业务A对应的蓝牙扫描任务未完成时,删除业务A对应的蓝牙扫描任务。
关于步骤407的具体实现,可以参见上述实施例中的步骤202,以及步骤306,此处不再赘述。
408,注销为业务A分配的扫描ID(11)。
409,主线程调用scanManager.startScan(),发起针对业务B的蓝牙扫描。
410,蓝牙协议栈为业务B分配扫描ID(如11)。
411,蓝牙协议栈将为业务B分配的扫描ID(11)发送给蓝牙对应的子线程。
关于步骤400至411的具体实现,可以参见上述实施例中的步骤106至109,此处不再赘述。
412,子线程根据扫描ID(11)开始执行业务B对应的蓝牙扫描任务。
可理解地,由于子线程管理的蓝牙扫描任务列表中已经不存在与第二扫描ID相同的第一扫描ID,同时也不存在第一扫描ID对应的第一蓝牙扫描任务的相关消息。因此,子线程可以将为业务B分配的扫描ID(11),以及业务B对应的第二蓝牙扫描任务添加到蓝牙扫描任务列表中。这样,子线程便可以依序从蓝牙扫描任务列表中读取到为业务B分配的扫描ID(11),进而执行业务B对应的蓝牙扫描任务。
413,子线程完成业务B对应的蓝牙扫描任务,将业务B的扫描结果反馈给蓝牙协议栈。
414,蓝牙协议栈将业务B的扫描结果上报主线程。
由此,保证了后续发起的其他复用了第一扫描ID的业务对应的蓝牙扫描任务能够正常进行。
应当理解地是,上述说明仅是为了更好地理解本实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
此外,还可以理解地是,终端设备为了实现上述功能,其包含了执行各个功能相应的硬件和/或软件模块。结合本文中所公开的实施例描述的各示例的算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以结合实施例对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
此外,需要说明的,在实际的应用场景中由终端设备实现的上述各实施例提供的蓝牙扫描方法,也可以由终端设备中包括的一种芯片系统来执行,其中,该芯片系统可以包括处理器。该芯片系统可以与存储器耦合,使得该芯片系统运行时调用该存储器中存储的计算机程序,实现上述终端设备执行的步骤。其中,该芯片系统中的处理器可以是应用处理器也可以是非应用处理器的处理器。
另外,本申请实施例还提供一种计算机可读存储介质,该计算机存储介质中存储有计算机指令,当该计算机指令在终端设备上运行时,使得终端设备执行上述相关方法步骤实现上述实施例中的蓝牙扫描方法。
另外,本申请实施例还提供了一种计算机程序产品,当该计算机程序产品在终端设备上运行时,使得终端设备执行上述相关步骤,以实现上述实施例中的蓝牙扫描方法。
另外,本申请的实施例还提供一种芯片(也可以是组件或模块),该芯片可包括一个或多个处理电路和一个或多个收发管脚;其中,所述收发管脚和所述处理电路通过内部连接通路互相通信,所述处理电路执行上述相关方法步骤实现上述实施例中的蓝牙扫描方法,以控制接收管脚接收信号,以控制发送管脚发送信号。
此外,通过上述描述可知,本申请实施例提供的终端设备、计算机可读存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细地说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (16)

1.一种蓝牙扫描方法,其特征在于,应用于终端设备,所述方法包括:
在停止对第一业务的蓝牙扫描时,根据第一扫描ID确定针对所述第一业务的第一蓝牙扫描任务是否完成;其中,所述第一扫描ID在启动对所述第一业务的蓝牙扫描时,为所述第一业务分配;
在所述第一蓝牙扫描任务未完成时,删除所述第一蓝牙扫描任务;
在删除所述第一蓝牙扫描任务后,注销所述第一扫描ID。
2.根据权利要求1所述的方法,其特征在于,在注销所述第一扫描ID之后,所述方法还包括:
在启动对第二业务的蓝牙扫描时,为所述第二业务分配第二扫描ID;其中,所述第二扫描ID与所述第一扫描ID相同;
根据所述第二扫描ID,执行针对所述第二业务的第二蓝牙扫描任务;
在所述第二蓝牙扫描任务完成后,上报针对所述第二业务的蓝牙扫描结果。
3.根据权利要求2所述的方法,其特征在于,所述第一业务和所述第二业务为不同的业务。
4.根据权利要求1至3任一项所述的方法,其特征在于,启动蓝牙扫描和停止蓝牙扫描的处理在蓝牙主线程进行,蓝牙扫描任务的处理在蓝牙子线程进行,扫描ID的分配和注销在蓝牙协议栈进行。
5.根据权利要求4所述的方法,其特征在于,所述在停止对第一业务的蓝牙扫描时,根据第一扫描ID确定针对所述第一业务的第一蓝牙扫描任务是否完成,包括:
所述蓝牙主线程调用停止扫描接口,并在所述停止扫描接口中调用清除函数;
将所述第一扫描ID传入所述清除函数,以使所述清除函数根据所述第一扫描ID确定针对所述第一业务的第一蓝牙扫描任务是否完成。
6.根据权利要求5所述的方法,其特征在于,所述清除函数根据所述第一扫描ID确定针对所述第一业务的第一蓝牙扫描任务是否完成,包括:
所述清除函数查找所述蓝牙子线程的蓝牙扫描任务队列中是否存在所述第一扫描ID对应的所述第一蓝牙扫描任务;
在所述蓝牙扫描任务队列中存在所述第一扫描ID对应的所述第一蓝牙扫描任务时,确定所述第一蓝牙扫描任务未完成。
7.根据权利要求6所述的方法,其特征在于,在所述第一蓝牙扫描任务未完成时,删除所述第一蓝牙扫描任务,包括:
所述清除函数将所述第一蓝牙扫描任务从所述第一蓝牙扫描任务队列中移除。
8.根据权利要求7所述的方法,其特征在于,所述第一扫描ID为预设的扫描ID列表中的一个扫描ID,在将所述第一扫描ID分配给所述第一业务时,所述扫描ID列表中对应所述第一扫描ID的扫描ID被置为第一状态,所述第一状态指示所述扫描ID被占有;
所述注销所述第一扫描ID,包括:
所述蓝牙协议栈注销所述第一扫描ID,并将所述扫描ID列表中对应所述第一扫描ID的扫描ID置为第二状态,所述第二状态指示所述扫描ID未被占有。
9.根据权利要求4所述的方法,其特征在于,在启动对第二业务的蓝牙扫描时,为所述第二业务分配第二扫描ID,包括:
所述蓝牙主线程调用开始扫描接口,向蓝牙协议栈发起针对所述第二业务的蓝牙扫描指示;
所述蓝牙协议栈为所述第二业务分配第二扫描ID。
10.根据权利要求9所述的方法,其特征在于,所述蓝牙协议栈为所述第二业务分配第二扫描ID,包括:
所述蓝牙协议栈遍历预设的扫描ID列表中的扫描ID,将遍历到的首个第二状态的扫描ID分配给所述第二业务,作为所述第二扫描ID;
将预设的扫描ID列表中作为所述第二扫描ID的所述扫描ID置为第一状态;
其中,所述第一状态指示所述扫描ID被占有,所述第二状态指示所述扫描ID未被占有。
11.根据权利要求1至10任一项所述的方法,其特征在于,所述终端设备集成了Nearby服务,所述Nearby服务用于快速发现附近的设备和服务。
12.根据权利要求11所述的方法,其特征在于,所述第一业务和第二业务均为超级终端业务,所述超级终端业务基于所述Nearby服务实现;
其中,所述终端设备执行所述超级终端业务,自动发现附近登录相同账号的设备,组成超级终端。
13.一种终端设备,其特征在于,所述终端设备包括:存储器和处理器,所述存储器和所述处理器耦合;所述存储器存储有程序指令,所述程序指令由所述处理器执行时,使得所述终端设备执行如权利要求1至12任意一项所述的蓝牙扫描方法。
14.一种芯片系统,其特征在于,所述芯片系统包括处理器,所述处理器用于支持终端设备实现如权利要求1至12任意一项所述的蓝牙扫描方法。
15.根据权利要求14所述的芯片系统,其特征在于,所述处理器包括调制解调器。
16.一种计算机可读存储介质,其特征在于,包括计算机程序,当所述计算机程序在终端设备上运行时,使得所述终端设备执行如权利要求1至12任意一项所述的蓝牙扫描方法。
CN202310498474.2A 2023-05-05 2023-05-05 蓝牙扫描方法、设备、芯片系统及存储介质 Active CN116528209B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310498474.2A CN116528209B (zh) 2023-05-05 2023-05-05 蓝牙扫描方法、设备、芯片系统及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310498474.2A CN116528209B (zh) 2023-05-05 2023-05-05 蓝牙扫描方法、设备、芯片系统及存储介质

Publications (2)

Publication Number Publication Date
CN116528209A CN116528209A (zh) 2023-08-01
CN116528209B true CN116528209B (zh) 2023-11-24

Family

ID=87397328

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310498474.2A Active CN116528209B (zh) 2023-05-05 2023-05-05 蓝牙扫描方法、设备、芯片系统及存储介质

Country Status (1)

Country Link
CN (1) CN116528209B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102111192A (zh) * 2011-03-03 2011-06-29 中兴通讯股份有限公司 一种蓝牙连接方法及系统
CN106250772A (zh) * 2016-07-28 2016-12-21 北京小米移动软件有限公司 蓝牙扫描控制方法、装置及终端设备
CN108632791A (zh) * 2017-03-23 2018-10-09 展讯通信(上海)有限公司 蓝牙主设备及业务配置方法
CN111491279A (zh) * 2019-01-29 2020-08-04 北京骑胜科技有限公司 蓝牙扫描方法、装置、设备以及计算机可读存储介质
CN113132962A (zh) * 2019-04-16 2021-07-16 华为技术有限公司 蓝牙扫描方法和电子设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102111192A (zh) * 2011-03-03 2011-06-29 中兴通讯股份有限公司 一种蓝牙连接方法及系统
CN106250772A (zh) * 2016-07-28 2016-12-21 北京小米移动软件有限公司 蓝牙扫描控制方法、装置及终端设备
CN108632791A (zh) * 2017-03-23 2018-10-09 展讯通信(上海)有限公司 蓝牙主设备及业务配置方法
CN111491279A (zh) * 2019-01-29 2020-08-04 北京骑胜科技有限公司 蓝牙扫描方法、装置、设备以及计算机可读存储介质
CN113132962A (zh) * 2019-04-16 2021-07-16 华为技术有限公司 蓝牙扫描方法和电子设备

Also Published As

Publication number Publication date
CN116528209A (zh) 2023-08-01

Similar Documents

Publication Publication Date Title
CN115209195B (zh) 一种通过遥控器实现一碰投屏的终端设备、方法以及系统
US20230069398A1 (en) Method for Implementing Wi-Fi Peer-To-Peer Service and Related Device
US11843712B2 (en) Address book-based device discovery method, audio and video communication method, and electronic device
US11973895B2 (en) Call method and apparatus
CN114063951B (zh) 投屏异常处理方法及电子设备
CN116017388B (zh) 一种基于音频业务的弹窗显示方法和电子设备
CN115119048B (zh) 一种视频流处理方法及电子设备
CN116582942A (zh) 双通道数据传输方法、设备及存储介质
CN114928898B (zh) 建立基于WiFi直接连接的会话的方法和装置
CN114125789A (zh) 通信方法、终端设备及存储介质
CN116528209B (zh) 蓝牙扫描方法、设备、芯片系统及存储介质
CN116033342B (zh) 地理围栏的处理方法、设备及存储介质
CN114928900B (zh) 通过WiFi直接连接进行传输的方法和装置
CN116056053B (zh) 投屏方法、电子设备、系统及计算机可读存储介质
CN114691059B (zh) 一种投屏显示方法及电子设备
CN117193685A (zh) 投屏数据的处理方法、电子设备及存储介质
CN116709557B (zh) 业务处理方法、设备及存储介质
CN114173317B (zh) 传输数据的方法和电子设备
CN116709273B (zh) 无线通信系统、方法及设备
WO2024104095A1 (zh) 一种数据传输方法、装置及系统
CN117062252B (zh) 一种数据传输方法及电子设备
CN115079981A (zh) 设备控制方法及相关装置
CN116939277A (zh) 录屏处理方法及电子设备
CN116347217A (zh) 图像处理方法、设备及存储介质
CN117714854A (zh) 摄像头调用方法、电子设备、可读存储介质和芯片

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant