一种行为识别方法及电子设备与流程

文档序号:31447722发布日期:2022-09-07 12:21阅读:149来源:国知局
一种行为识别方法及电子设备与流程

1.本技术涉及行为识别技术领域,尤其涉及一种行为识别方法及电子设备。


背景技术:

2.行为识别(activity recognition,ar)(也可称为活动识别)是指通过底层传感器(如加速度传感器)等器件收集电子设备(如手机)的行为特征。通过对电子设备(如手机)的行为特征的识别,可以检测电子设备(如手机)是否处于车载、骑行、走路、跑步、静止、躺下等用户的活动场景中。
3.对电子设备(如手机)的当前行为进行识别,有利于对电子设备(如手机)的功耗和性能进行优化。例如,当通过ar检测到电子设备(如手机)处于静止状态时,电子设备中的应用,如省电精灵,可以管控无线保真(wireless-fidelity,wifi)、蓝牙低功耗(bluetooth low energy,ble)的扫描频率,以管控电子设备的后台应用的冷冻或唤醒,从而达到优化电子设备的功耗的目的。又例如,当ar检测到电子设备(如手机)处于运动状态时,电子设备中的应用,如天气模块应用可以及时刷新并显示实时天气数据。
4.然而,由于实现ar业务的系统协处理器(system companion processor,scp)不稳定,因此可能导致处理ar业务的过程不稳定,导致系统的稳定性下降,使用户的体验感降低。


技术实现要素:

5.本技术实施例提供一种行为识别方法及电子设备,用于解决scp处理器不稳定,导致的与ar相关的应用频繁连接scp处理器,造成通信负载严重的问题,以提高系统的稳定性和可靠性。
6.为达到上述目的,本技术的实施例采用如下技术方案:
7.第一方面,提供了一种行为识别方法。该方法应用于电子设备。其中,电子设备包括第一应用、行为识别(activity recognition,ar)模块应用和系统协处理器处理器(sensor-hub control processor,scp)模块。第一应用为与ar相关的应用。该方法包括:第一应用向ar模块应用发送第一连接请求;第一连接请求用于请求与ar模块建立连接。响应于接收到第一连接请求,在ar模块应用与scp模块建立连接失败的情况下,若第一应用的包名为预设包名,则ar模块应用向第一应用返回第一信息。该第一信息用于指示ar模块应用与第一应用建立连接成功。若第一应用的包名为非预设包名,则ar模块应用向第一应用返回第二信息。该第二信息用于指示ar模块应用与第一应用建立连接失败。
8.在上述第一方面提供的行为识别方法中,第一应用(如位置定位应用)在请求与ar模块建立连接之后,在ar模块应用与scp模块建立连接失败的情况下,ar模块应用可以根据第一应用的包名向第一应用返回不同的信息。如此可以避免某些应用(如预先存储的预设包名对应的应用)循环请求与scp模块建立连接,而造成系统的通信负载严重的问题,从而降低系统的通信负载,提高系统的稳定性和可靠性。
9.一种可能的实现方式中,第一应用向ar模块应用发送第一连接请求之前,上述方法还可以包括:第一应用创建子线程。第一应用向ar模块应用发送第一连接请求,具体可以为:第一应用通过子线程向ar模块发送第一连接请求。在子线程中发送第一连接请求,可以避免ar模块应用长时间不反馈,使第一应用(如位置定位应用)出现anr无响应的问题,导致系统不稳定(如系统瘫痪)。
10.一种可能的实现方式中,第一应用通过子线程向ar模块发送第一连接请求,具体可以为:第一应用通过子线程调用连接服务接口,向ar模块发送第一连接请求。
11.一种可能的实现方式中,电子设备还可以包括hal接口。hal接口存储有行为状态列表。该行为状态列表用于指示电子设备所支持识别的行为状态。上述方法还可以包括:响应于接收到第一信息,第一应用通过子线程向ar模块应用发送获取行为状态列表请求。响应于接收到获取行为状态列表请求,ar模块应用从hal接口获取行为状态列表。响应于获取到行为状态列表,若ar模块应用存储的与scp模块建立连接的信息为连接成功,则ar模块应用向第一应用返回行为状态列表;若ar模块应用存储的与scp模块建立连接的信息为连接失败,则ar模块应用向第一应用返回空列表。如此可以进一步避免某些应用(如预先存储的预设包名对应的应用)循环请求与scp模块建立连接,而造成系统的通信负载严重的问题,从而降低系统的通信负载,提高系统的稳定性和可靠性。
12.一种可能的实现方式中,电子设备还包括hidl接口。ar模块应用从hal接口获取行为状态列表,具体为:ar模块应用通过hidl接口从hal接口获取行为状态列表。
13.一种可能的实现方式中,方法还包括:响应于接收到行为状态列表,ar模块应用存储行为状态列表。当ar模块应用存储行为状态列表之后,后续有ar相关的应用程序(如天气应用)再次请求获取行为状态列表,ar模块应用可以不必从hal接口获取该行为状态列表,而是直接返回存储的行为状态列表即可,从而简化流程,提高系统运行效率。
14.一种可能的实现方式中,行为状态包括车载、骑行、走路、跑步、绝对静止、快走、步行、电梯和相对静止。
15.一种可能的实现方式中,第一应用通过子线程向ar模块应用发送获取行为状态列表请求,具体为:第一应用通过子线程调用获取所支持识别的行为状态列表接口,向ar模块应用发送获取行为状态列表请求。在子线程中发送获取行为状态列表请求,可以避免ar模块应用长时间不反馈,使第一应用(如位置定位应用)出现anr无响应的问题,导致系统不稳定(如系统瘫痪)。
16.一种可能的实现方式中,电子设备还包括:内核节点。上述方法还可以包括:响应于接收到行为状态列表,第一应用通过子线程向ar模块应用发送订阅行为状态请求。订阅行为状态请求用于订阅电子设备进入或退出第一行为状态。第一行为状态为行为状态列表中的其中一种行为状态。响应于接收到来自于第一应用的订阅行为状态请求,hal接口创建第一线程(如线程a)和第二线程(如线程b)。hal接口通过第一线程向内核节点发送订阅行为状态请求。hal接口通过第二线程监听内核节点的上报信息。
17.应理解,在mtk的处理器芯片平台下,应用处理器的hal接口需要通过内核节点与scp处理器中的scp模块通信。然而,通常情况下,hal接口与内核节点之间的通信采用ioctl命令,并且ioctl命令为一个单向通道,会一直占用着hal接口与内核节点之间的一个线程通道,从而导致hal接口可能接收不到由内核节点上报的行为状态的数据。因此,hal接口创
建两个线程,其中一个线程(如线程a)用于发送请求(如订阅行为状态请求),另一个线程(如线程b)用于监听内核节点的上报信息。如此,可以使请求(如订阅行为状态请求)能够正常下发,数据(如行为状态数据)能够正常上报。
18.一种可能的实现方式中,第一应用通过子线程向ar模块应用发送订阅行为状态请求,具体为:第一应用通过子线程调用使能行为状态监控接口,向ar模块应用发送订阅行为状态请求。
19.一种可能的实现方式中,电子设备还包括hidl接口。第一应用通过子线程向ar模块应用发送订阅行为状态请求之后,上述方法还可以包括:响应于接收到订阅行为状态请求,ar模块应用通过hidl接口向hal接口发送订阅行为状态请求。
20.一种可能的实现方式中,电子设备还包括:hal接口和内核节点。上述方法还包括:响应于接收到第一信息,第一应用通过子线程向ar模块应用发送获取当前行为状态请求。获取当前行为状态请求用于请求获取电子设备的当前行为状态。响应于接收到来自于第一应用的获取当前行为状态请求,hal接口创建第一线程和第二线程。hal接口通过第一线程向内核节点发送获取当前行为状态请求。hal接口通过第二线程监听内核节点的上报信息。如此,可以使请求(如获取当前行为状态请求)能够正常下发,数据(如行为状态数据)能够正常上报。
21.一种可能的实现方式中,第一应用通过子线程向ar模块应用发送获取当前行为状态请求,具体为:第一应用通过子线程调用获取当前行为状态接口,向ar模块应用发送获取当前行为状态请求。
22.一种可能的实现方式中,电子设备还包括hidl接口。第一应用通过子线程向ar模块应用发送获取当前行为状态请求之后,方法还包括:响应于接收到获取当前行为状态请求,ar模块应用通过hidl接口向hal接口发送获取当前行为状态请求。
23.一种可能的实现方式中,内核节点存储有当前行为状态的缓存数据。上述方法还可以包括:响应于接收到获取当前行为状态请求,若缓存数据没有失效,则内核节点上报缓存数据至hal接口;若缓存数据已失效,则内核节点向scp模块发送获取当前行为状态请求,以请求获取电子设备的当前行为状态数据。通过对scp模块上报的当前行为状态数据的缓存,并在缓存数据未失效的情况下直接进行数据上报,从而降低内核节点与scp模块之间的通信负载。
24.一种可能的实现方式中,内核节点存储有当前行为状态的缓存数据。上述方法还可以包括:响应于接收到获取当前行为状态请求,在内核节点频繁接收到获取当前行为状态请求的情况下,若缓存数据没有失效,则内核节点上报缓存数据至hal接口。若缓存数据已失效,则内核节点向scp模块发送获取当前行为状态请求,以请求获取电子设备的当前行为状态数据。在频繁接收某一请求(如获取当前行为状态请求)的情况下,通过对scp模块上报的当前行为状态数据的缓存,并在缓存数据未失效的情况下直接进行数据上报,从而降低内核节点与scp模块之间的通信负载。
25.一种可能的实现方式中,方法还可以包括:响应于接收到来自于scp模块的当前行为状态数据,内核节点存储并更新缓存数据。
26.一种可能的实现方式中,方法还可以包括:响应于接收到获取当前行为状态请求,scp模块获取传感器数据,确定电子设备的当前行为状态数据。
27.一种可能的实现方式中,订阅行为状态请求包括行为状态索引、上报周期、以及进入或退出的标识。上述方法还可以包括:响应于接收到订阅行为状态请求,scp模块获取传感器数据,确定电子设备的行为状态,记录在一个上报周期内行为状态索引对应的行为状态的变化情况。
28.一种可能的实现方式中,电子设备还包括hidl接口、hal接口和内核节点。第一应用向ar模块应用发送第一连接请求之前,上述方法还可以包括:ar模块应用通过hidl接口、hal接口和内核节点,向scp模块发送第二连接请求。第二连接请求用于请求与scp模块建立连接。响应于接收到与scp模块建立连接成功的反馈,ar模块应用存储与scp模块建立连接成功。或者,响应于未接收到与scp模块建立连接成功的反馈,ar模块应用存储与scp模块建立连接失败。应理解,上述第一连接请求是指第一应用(如位置定位应用)请求与ar模块应用建立连接的请求。该第二连接请求是指ar模块应用请求与scp模块建立连接的请求。
29.第二方面,提供一种芯片。该芯片应用于电子设备,该芯片用于支持电子设备执行如上第一方面中任一种可能的实现方式中的方法。
30.在一种可能的实现方式中,该芯片还包括存储器,该存储器,用于保存电子设备必要的程序指令和数据。
31.第三方面,提供一种芯片系统。该芯片系统应用于电子设备。该芯片系统包括第一处理器和第二处理器。该第一处理器和第二处理器用于支持电子设备执行如上第一方面中任一种可能的实现方式中的方法。
32.在一种可能的实现方式中,该芯片还包括存储器,该存储器,用于保存电子设备必要的程序指令和数据。该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
33.第四方面,提供一种电子设备。该电子设备包括:第一处理器和第二处理器。第一处理器和第二处理器与存储器耦合,存储器用于存储程序或指令,当程序或指令被第一处理器或第二处理器执行时,使得电子设备执行如上第一方面中任一种可能的实现方式中的方法。
34.第五方面,提供一种计算机可读存储介质,其上存储有计算机程序或指令。计算机程序或指令被执行时使得计算机执行如上第一方面中任一种可能的实现方式中的方法。
35.第六方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机可以执行上述第一方面中任一种可能的实现方式中的方法。
36.其中,第二方面至第六方面中任一种可能的实现方式所带来的技术效果可参见第一方面中不同实现方式所带来的技术效果,此处不再赘述。
附图说明
37.图1为本技术实施例提供的一种电子设备的系统架构图;
38.图2为本技术实施例提供的一种电子设备中应用处理器与scp处理器的交互流程图;
39.图3为本技术实施例提供的一种行为识别的方法流程图一;
40.图4为本技术实施例提供的一种行为识别的方法流程图二;
41.图5为本技术实施例提供的一种行为识别的方法流程图三;
42.图6为本技术实施例提供的一种行为识别的方法流程图四;
43.图7为本技术实施例提供的一种行为识别的方法流程图五;
44.图8为本技术实施例提供的一种行为识别的方法流程图六;
45.图9为本技术实施例提供的一种行为识别的方法流程图七;
46.图10为本技术实施例提供的一种行为识别的方法流程图八;
47.图11为本技术实施例提供的一种芯片系统的结构示意图。
具体实施方式
48.行为识别(activity recognition,ar)是指通过底层传感器(如加速度传感器)等器件收集电子设备(如手机)的行为特征。通过对电子设备(如手机)的行为特征的识别,可以检测电子设备(如手机)是否处于车载、骑行、走路、跑步、静止、躺下等用户的活动场景中。
49.行为识别也可以称为活动识别,为便于说明,本技术实施例中统称为行为识别。
50.图1为ar业务运行过程的系统架构图。如图1所示,电子设备包括两个处理器,分别为应用处理器和scp处理器。
51.在实现ar业务时,电子设备的应用处理器可以按照ar业务的处理逻辑划分为应用层(application layer)、硬件抽象层(hardware abstraction layer)和内核层(kernel)。
52.应用层上包含有与ar行为识别相关的应用程序,例如省电精灵、天气、显示引擎或位置定位类应用程序(如高德地图、百度地图)。此外,在应用层上还包含有ar模块应用。该ar模块应用可以为与ar行为识别相关的应用程序提供应用程序接口(application programming interface,api)。与ar行为识别相关的应用程序可以调用ar模块应用的api获取scp处理器提供的行为数据。
53.需要说明的是,ar模块应用有时也称为行为识别管理服务(activity recognition management service,arms)。该arms也可以设置在应用层与硬件抽象层之间的应用框架层上(图1中未示出应用框架层)。
54.ar模块应用提供的api可以包括连接服务(connectservice)接口、获取所支持识别的行为状态列表(getsupportedmovements)接口、使能行为状态监控(enablemovementevent)接口和获取当前行为状态(getcurrentmovement)接口等。
55.其中,连接服务接口,用于请求与scp处理器建立连接。获取所支持识别的行为状态列表接口,用于请求获取电子设备所支持识别的行为状态列表;该行为状态列表可以包括车载、骑行、走路、跑步、绝对静止、快走、步行、电梯、相对静止等行为状态,以及上述行为状态对应的索引。使能行为状态监控接口,用于请求订阅电子设备的行为状态;例如,可以用于请求订阅进入车载状态或退出车载状态。获取当前行为状态接口,用于请求获取电子设备的当前行为状态,电子设备的当前行为状态可以是车载、骑行、走路、跑步、绝对静止、快走、步行、电梯、相对静止中的一个。
56.硬件抽象层包括硬件抽象层接口定义语言(hal interface definition language,hidl)服务层和本地(native)服务层。其中hidl服务层包括hidl接口。本地服务层包括与ar对应的hal接口。其中hal接口为一些与ar对应的hidl接口的软件实现。ar模块应用可以通过hidl接口与hal接口建立连接,以实现ar行为状态的订阅、行为状态数据的获取等。
57.内核层包括内核节点。该内核节点用于实现hal接口与scp处理器之间的通信。
58.电子设备的scp处理器集成有传感器集线器(sensorhub)系统,该scp处理器包括scp模块。该scp模块为scp处理器通过传感器集线器系统实现行为状态获取的软件实现。该scp模块可以与电子设备中内置的传感器通信连接,以获取传感器数据并根据传感器数据分析电子设备的行为状态。电子设备中内置的传感器可以包括压力传感器,陀螺仪传感器,气压传感器,磁传感器,加速度传感器,距离传感器,接近光传感器,指纹传感器,温度传感器,触摸传感器,环境光传感器,骨传导传感器等。
59.此外,该scp模块用于根据ar相关的应用程序下发的请求,获取当前的行为状态数据或者行为状态的变化数据,并对当前的行为状态数据或者行为状态的变化数据进行上报等。
60.以位置定位应用为例,该位置定位应用用于对电子设备当前所处的位置进行定位,以定位用户当前所处的位置。
61.可以理解的是,若位置定位应用盲目地周期性启动位置定位,会增加电子设备的功耗。为了降低位置定位类应用引起的功耗,位置定位应用可以在发现电子设备(即用户)处于跑步或走路等状态且持续一段时间后,才启动位置定位。这样一来,位置定位类应用可以调用ar模块应用中的api,监听电子设备的行为状态变化,或者主动获取电子设备的行为状态。
62.示例地,如图2所示,以位置定位应用调用ar模块应用提供的api为例,对电子设备中的应用处理器与scp处理器之间的交互进行说明。
63.s201,电子设备开机初始化时,应用处理器向scp处理器发送建立连接请求。
64.在电子设备开机时,应用处理器和scp处理器进行初始化,应用处理器可以向scp处理器发送建立连接请求,以使应用处理器中的ar模块应用与scp处理器中的scp模块建立通信连接,从而便于后续位置定位应用调用ar模块应用提供的api,从scp处理器中的scp模块获取行为状态数据。该行为状态数据可以包括车载、骑行、走路、跑步、绝对静止、快走、步行、电梯、相对静止中的一种,或者该行为状态数据可以包括在一个上报周期(如5秒)内,进入或退出某种行为状态的次数和时间,如在一个上报周期内,进入或退出跑步状态的次数和时间。
65.s202,scp处理器向应用处理器返回建立连接成功。
66.当scp处理器与应用处理器之间建立连接成功时,应用处理器中的位置定位应用可以调用ar模块应用提供的获取所支持识别的状态列表接口,以获取ar所支持识别的行为状态列表,例如该ar所支持识别的状态列表包括车载、骑行、走路、跑步、绝对静止、快走、步行、电梯、相对静止等行为状态。
67.s203,应用处理器向scp处理器发送订阅行为状态请求。
68.在应用处理器与scp处理器建立连接成功后,应用处理器中的位置定位应用可以调用使能行为状态监控接口,以使应用处理器向scp处理器中的scp模块发送订阅行为状态请求。该订阅行为状态请求携带有行为状态索引、上报周期、以及进入或退出行为状态的标识。
69.其中,行为状态索引是指:行为状态列表中各个行为状态对应的索引,每个行为状态对应的索引互不相同。例如,车载状态对应的索引为0;骑行状态对应的索引为1;走路状
态对应的索引为2;跑步状态对应的索引为3;绝对静止状态对应的索引为4;快走状态对应的索引为5;步行状态对应的索引为6;电梯状态对应的索引为7;相对静止状态对应的索引为8。
70.上报周期是指:从订阅时间点开始或者从上一次上报结束的时间点开始,在一个上报周期内,如果有订阅的状态产生,则将在一个上报周期的节点进行数据上报(即状态信息的上报)。也就是说,在一个上报周期内,scp模块会记录在一个周期内的行为状态产生的时间以及行为状态产生的次数。当一个上报周期结束,scp模块可以将记录的一个周期内的行为状态产生的时间以及行为状态产生的次数作为行为状态数据上报至应用处理器,以使与ar相关的应用(如位置定位应用)获取该上报的行为状态数据。
71.进入或退出行为状态的标识,用于区分订阅进入行为状态或订阅退出行为状态。例如,进入行为状态的可以用0作为标识,退出行为状态可以用1作为标识。也就是说,0表示订阅进入行为状态,1表示订阅退出行为状态。
72.s204,scp处理器向应用处理器返回行为状态数据。
73.当scp处理器中的scp模块接收到订阅行为状态请求,scp模块可以获取传感器数据,并确定电子设备的行为状态,记录在一个上报周期内的行为状态的变化,作为行为状态数据。在一个上报周期结束时,scp模块可以将记录的行为状态数据返回给应用处理器,以位置定位应用使用。
74.s205,应用处理器向scp处理器发送获取当前行为状态请求。
75.在应用处理器与scp处理器建立连接成功后,应用处理器中的位置定位应用可以调用获取当前行为状态接口,以使应用处理器向scp处理器中的scp模块发送获取当前行为状态请求,以请求获取电子设备的当前行为状态。
76.s206,scp处理器向应用处理器返回当前行为状态数据。
77.当scp处理器中的scp模块接收到获取当前行为状态请求,scp模块可以获取传感器数据,并确定电子设备的当前行为状态,将当前行为状态数据返回给应用处理器,以供位置定位应用使用。
78.需要说明的是,在某些处理器平台(如联发科(mediatek.inc,mtk)平台)上传感器集线器(sensorhub)系统,也即scp处理器不稳定,可能导致scp处理器反复重启,从而导致应用处理器与scp处理器连接不上,导致ar业务不可用。具体地,在scp处理器反复重启或者功能出现问题的情况下,应用处理器频繁触发与scp处理器的连接,导致通信负载严重,系统不稳定。此外,针对ar业务中调用频率较高的应用程序接口(application programming interface,api),可能出现ap处理器与scp处理器之间的通信负载较重的问题,从而可能导致与ar相关的应用产生应用无响应(application not responding,anr)问题,使ar相关的应用卡顿。
79.基于上述问题,本技术实施例提供了一种行为识别方法。该方法可以在ar业务的执行过程中,针对应用处理器的多层结构之间的交互以及与scp处理器之间的交互流程进行优化,提高ar业务执行过程中的稳定性,从而提高电子设备的系统稳定性,提高用户体验。
80.下面将结合附图,对本技术实施例提供的一种行为识别方法进行详细说明。
81.如图3所示,本技术实施例提供的一种行为识别方法,包括以下步骤s300-s310。
82.s300,第一应用创建子线程。
83.通常情况下,当第一应用在调用ar模块应用所提供的api时,第一应用会在主线程中调用ar模块应用所提供的api。此时,若ar模块应用长时间无反馈,则第一应用可能出现anr无响应,从而导致系统瘫痪。
84.在本技术实施例中,可以在应用层制定调用ar模块应用提供的api的使用规范。例如,可以在使用规范中规定,当第一应用调用ar模块应用提供的api时,对ar模块应用提供的api的调用在子线程中实现。
85.示例地,按照上述规定,当第一应用调用ar模块应用提供的api(例如连接服务接口、获取当前行为状态接口等)时,第一应用可以创建一个子线程,以实现调用ar模块应用提供的api,从而避免第一应用出现anr无响应问题导致系统瘫痪。
86.s301,第一应用通过子线程调用ar模块应用提供的第一接口。其中,第一接口用于指示ar模块应用向hidl接口发送第一请求信息。
87.第一应用是指与ar相关的应用程序,例如省电精灵、天气、显示引擎或位置定位类应用程序(如高德地图、百度地图)。
88.第一接口可以是ar模块应用提供的与ar行为识别相关的应用程序提供的api,例如连接服务接口、获取ar所支持识别的行为状态列表接口、使能行为状态监控接口、获取当前行为状态接口等。其中,连接服务接口可以用于指示ar模块应用向hidl接口发送连接请求。当第一应用调用ar模块应用提供的连接服务接口时,ar模块应用会向hidl接口发送连接请求信息。使能行为状态监控接口可以用于指示ar模块应用向hidl接口发送订阅行为状态的请求信息。当第一应用调用ar模块应用提供的使能行为状态监控接口时,ar模块应用会向hidl接口发送订阅行为状态的请求信息。获取当前行为状态接口用于指示ar模块应用向hidl接口发送获取当前行为状态的请求信息。当第一应用调用ar模块应用提供的获取当前行为状态接口时,ar模块应用会向hidl接口发送获取当前行为状态的请求信息。
89.当第一应用需要获取scp模块提供的行为数据时,第一应用可以调用相关的api。例如,在第一应用与scp模块连接成功的情况下,第一应用可以调用获取当前行为状态接口,以获取电子设备(如手机)的当前行为状态。
90.应理解,为了确定第一应用与scp模块是否连接成功,第一应用在调用其他接口(如获取当前行为状态接口)之前,第一应用会先调用连接服务接口,以请求与scp模块建立通信连接。
91.s302,ar模块应用向hidl接口发送第一请求信息。
92.示例性地,当第一应用调用连接服务接口时,ar模块应用向hidl接口发送连接请求信息。当第一应用调用使能行为状态监控接口时,ar模块应用向hidl接口发送订阅行为状态的请求信息。
93.需要说明的是,通常情况下,在电子设备开机启动时,ar模块应用会向hidl接口发送连接请求信息,以请求与scp模块建立连接。在ar模块应用接收到与scp模块建立连接的信息之后,ar模块可以存储与scp模块建立连接的信息,如建立连接成功或建立连接失败。
94.当第一应用调用连接服务接口,向ar模块应用发送连接请求信息时,ar模块应用可以根据存储的与scp模块建立连接的信息,向第一应用反馈建立连接成功或建立连接失败。
95.s303,响应于接收到第一请求信息,hidl接口向hal接口发送第一请求信息。
96.示例性地,响应于接收到第一请求信息,hidl接口建立binder线程,通过binder线程将第一请求信息发送hal接口。
97.需要说明的是,在本技术实施例中,当hidl接口接收到第一请求信息时,hidl接口可以根据接收到的请求信息的数量(接收到的不同的请求信息可能对应不同的业务),调整hidl接口创建的binder线程的数目。例如,当有多个应用(如三个应用)同时调用ar模块应用提供的api时,ar模块应用会针对多个应用向hidl接口发送多个请求信息,此时hidl接口可以针对多个请求信息建立多个binder线程(如3个binder线程)。
98.s304,响应于接收到第一请求信息,hal接口向内核节点发送第一请求信息。
99.在mtk的处理器芯片平台下,应用处理器的hal接口需要通过内核节点与scp处理器中的scp模块通信。然而,通常情况下,hal接口与内核节点之间的通信采用ioctl命令,并且ioctl命令为一个单向通道,会一直占用着hal接口与内核节点之间的一个线程通道。
100.在本技术实施例中,为了使hal接口能够向内核节点下发相应的配置请求(如第一请求信息),并且hal接口也能够接收内核节点反馈的数据或者响应(如第一反馈信息),hal接口在初始化时可以建立两个线程,如线程a和线程b。
101.示例性地,如图4所示,hal接口向内核节点发送第一请求信息,可以包括s304a-s304c。
102.s304a,hal接口创建线程a和线程b。
103.s304b,hal接口通过线程a向内核节点发送第一请求信息。
104.例如,当第一应用调用ar模块应用的使能行为状态监控接口,用于请求订阅ar行为状态中的车载状态时,第一请求信息可以包括如下参数:行为状态索引(例如车载状态的索引为0)、上报周期、进入行为状态(如车载状态)的标识。
105.s304c,hal接口通过线程b监听内核节点的上报信息。
106.示例地,在hal接口在线程a中通过ioctl命令向内核节点发送第一请求信息之后,hal接口还可以在线程b中启动循环,监听是否有来自于内核节点的netlink消息上报。
107.s305,响应于接收到第一请求信息,内核节点向scp模块发送第一请求信息。
108.当内核节点接收到hal接口发送的ioctl命令时,内核节点可以通过ioctl处理函数对ioctl命令进行解析,以获得第一请求信息。
109.在本技术实施例中,为降低应用处理器中的内核节点与scp处理器中的scp模块之间的通信负载,内核节点中缓存有频繁接收的第一请求信息对应的反馈数据,内核节点可以根据在预设周期内接收到第一请求信息的次数以及缓存是否有效,确定是否将缓存数据作为第一请求信息的反馈数据上报。在内核节点将缓存数据作为反馈数据上报的情况下,内核节点不再向scp模块发送第一请求信息,以降低内核节点与scp模块之间的通信负载。在内核节点不将缓存数据作为反馈数据上报的情况下,内核节点再向scp模块发送第一请求信息,以请求获取最新的反馈数据,提高数据的可靠性。
110.示例性地,如图5所示,内核节点向scp模块发送第一请求信息,包括:
111.s305b,内核节点统计在预设周期内接收第一请求信息的次数。
112.应理解,内核节点接收到的第一请求信息可以与ar模块应用提供的某一api对应。例如,ar模块应用中的使能行为状态监控接口作为第一接口被调用时,第一请求信息对应
着ar模块应用的使能行为状态监控接口。又例如,ar模块应用中的获取当前行为状态接口作为第一接口被调用时,第一请求信息对应着ar模块应用的获取当前行为状态接口。
113.当内核节点接收到第一请求信息时,内核节点可以根据在预设周期内接收到的第一请求信息的数量以及间隔时间,得到第一请求信息对应的api的调用次数和频率。
114.s305c,内核节点判断是否频繁接收第一请求信息。
115.示例地,若在预设周期内接收到第一请求信息的次数超过预设阈值(如每1秒内接收到第一请求信息的次数超过1次),则内核节点可以确定频繁接收第一请求信息。
116.若内核节点确定频繁接收第一请求信息,则执行s305d。相应地,若内核节点确定未频繁接收第一请求信息,则执行s305e。
117.s305d,内核节点判断缓存数据是否失效。
118.通常情况下,电子设备的行为状态的变化频率相对较低,针对高频调用的api(如获取当前行为状态接口),内核节点会频繁接收到相应的请求信息,此时可以设置数据的缓存机制。例如,当内核节点接收到scp模块针对第一请求信息的第一反馈信息时,内核节点可以将第一反馈信息进行缓存,并设置缓存有效期(例如2秒)。
119.若内核节点判断缓存数据的缓存时间未超过缓存有效期(2秒),则表示缓存数据未失效,执行s305f,将内核节点缓存的第一反馈数据发送至hal接口。若内核节点判断缓存数据的缓存时间超过缓存有效期,则执行s305e,将第一请求信息发送至scp模块,以接收scp模块反馈的新的第一反馈数据。
120.这样,当第一反馈信息被缓存时,当内核节点在缓存有效期内再次接收到第一请求信息,则内核节点可以直接将缓存的第一反馈信息发送至hal,以反馈给第一应用,从而降低内核节点与scp模块之间的通信负载,提高内核节点与scp模块之间通信的稳定性和可靠性。
121.s305e,内核节点向scp模块发送第一请求信息,以请求scp模块反馈第一反馈数据。
122.例如,当第一应用调用ar模块应用的使能行为状态监控接口,用于请求订阅ar行为状态中的车载状态时,使能行为状态监控接口为非高频调用的api(也即内核节点未频繁接收到订阅行为状态请求)。此时,内核节点可以将第一请求信息(即订阅行为状态请求)以及该请求包括的各参数(如行为状态索引、上报周期、进入或退出状态的标识)发送至scp模块。
123.s305f,内核节点将第一请求信息对应的缓存数据作为第一反馈数据发送至hal接口。
124.例如,当第一应用调用ar模块应用的获取当前行为状态接口,用于请求获取电子设备(如手机)的当前行为状态。由于内核节点判断获取当前行为状态接口为高频调用的api(也即内核节点频繁接收到获取当前行为状态请求),因此内核节点在接收到第一请求信息时,若内核节点判断缓存数据的缓存时间未超过缓存有效期,则内核节点可以直接将缓存的第一反馈数据发送至hal接口,避免重复与scp模块通信,从而降低内核节点与scp模块的通信负载。
125.s306,响应于接收到第一请求信息,scp模块向内核节点发送第一反馈信息。第一反馈信息为第一请求信息的反馈信息。
126.示例性地,若第一请求信息用于请求与scp模块建立连接时,第一反馈信息用于反馈与scp模块是否建立连接成功。
127.当然,若第一请求信息包括订阅行为状态的参数时,scp模块接收到订阅行为状态的参数时,会启动对行为状态的监听。此时,若scp模块监测到第一应用订阅的行为状态已发生(例如车载状态产生),则scp模块会向内核节点发送行为状态变化的数据(例如进入某一种行为状态时间等)。相应地,若scp模块监测到第一应用订阅的行为状态已退出(如退出车载状态),则scp模块会向内核节点发送行为状态退出的数据(例如退出某一种行为状态时间等)。此时,上述行为状态发送的数据或者行为状态退出的数据即为第一反馈信息。
128.s307,响应于接收到第一反馈信息,内核节点向hal接口发送第一反馈信息;或者,响应于未接收到第一反馈信息,内核节点向hal接口发送第二反馈信息。其中,第二反馈信息指示内核节点与scp模块连接失败。
129.示例性地,若内核节点接收到scp模块反馈的第一反馈信息,则内核节点可以解析接收到的第一反馈信息,并通过线程b以netlink机制向hal发送第一反馈信息。
130.然而,当内核节点未接收到scp模块反馈的第一反馈信息时,表示内核节点与scp模块之间的通信连接断开。例如,第一反馈信息用于反馈与scp模块的连接状态时,若内核节点与scp模块未连接成功时,scp模块可能接收不到内核节点发送的第一请求信息,相应地,内核节点也接收不到scp模块反馈的第一反馈信息。此时,若内核节点未接收到scp模块反馈的第一反馈信息时,内核节点向hal接口发送第二反馈信息,以指示内核节点与scp模块连接失败。
131.s308,响应于接收到第一反馈信息或第二反馈信息,hal接口向hidl接口发送第一反馈信息或第二反馈信息。
132.示例性地,当hal接口接收到第一反馈信息或第二反馈信息时,hal接口可以通过binder线程向hidl接口发送第一反馈信息或第二反馈信息。
133.s309,响应于接收到第一反馈信息或第二反馈信息,hidl接口向ar模块应用发送第一反馈信息或第二反馈信息。
134.s310,响应于接收到第一反馈信息,ar模块应用向第一应用发送第一反馈信息;或者响应于接收到第二反馈信息,ar模块应用向第一应用发送第三反馈信息。
135.示例性地,若在s301中,第一应用调用ar模块应用中的连接服务接口时,第一反馈信息可以表示第一应用(或应用处理器)与scp模块连接成功。第二反馈信息表示第一应用(或应用处理器)与scp模块连接失败。
136.为了避免在第一应用(或应用处理器)与scp模块连接失败的情况下,第一应用循环请求与scp模块建立连接,影响电子设备的稳定性。如图6所示,本技术实施例中的ar模块应用接收到第一反馈信息或第二反馈信息之后,上述方法还包括:
137.s310a,判断ar模块应用与scp模块是否建立连接成功。
138.当ar模块应用与scp模块建立连接成功时,执行s310c和s310d。当ar模块应用与scp模块建立连接失败时,也执行s310c和s310e。
139.需要说明的是,当ar模块应用与scp模块建立连接成功时,ar模块应用可以将建立连接成功以句柄的形式保存在ar模块应用中。当ar模块应用于scp模块建立连接失败时,ar模块应用可以将建立连接失败以句柄的形式保存在ar模块应用中。
140.当第一应用调用ar模块应用的其他api(如获取所支持识别的行为状态列表接口)时,若ar模块应用与scp模块建立连接成功,则继续执行s302-s310以完成后续的流程;若ar模块应用与scp模块建立连接失败,则ar模块应用直接向第一应用发送空数据(即第三反馈信息)。
141.s310b,判断ar模块应用向hidl接口发送连接请求的次数是否超过预设阈值。
142.若ar模块应用向hidl接口发送连接请求的次数超过预设阈值,则执行s310c。若ar模块应用向hidl接口发送连接请求的次数没有超过预设阈值(如15次),则在间隔预设时间间隔(如1秒)之后,再次执行s302-s309,以请求与scp模块建立连接,然后再循环执行上述s310a。
143.s310c,ar模块应用向第一应用发送第一反馈信息(即连接成功)。
144.s310d,将ar模块应用与scp模块建立连接成功,保存在ar模块应用中。
145.s310e,将ar模块应用与scp模块建立连接失败,保存在ar模块应用中。
146.需要说明的是,在一些实施例中,当手机系统启动时,ar模块应用初始化,ar模块应用会请求与scp处理器中的scp模块建立连接。此时,该建立连接的方法可以包括上述s302-s309,s310a,s310b,s310d和s310e。
147.下面以位置定位应用为例,结合ar业务流程的分层架构,对上述行为识别方法进行举例说明。
148.如图7所示,在电子设备开机阶段时,电子设备可以执行s701a-s701j。
149.s701a,ar模块应用向hidl接口发送与scp模块建立连接请求。
150.在电子设备(如手机)的开机阶段,ar模块应用初始化时,会尝试与scp模块建立连接,此时ar模块应用可以向hidl接口发送与scp模块建立连接的请求。
151.s701b,hidl接口向hal接口发送与scp模块建立连接请求。
152.响应于接收到与scp模块建立连接请求,根据ar模块应用于scp模块的交互流程,hidl接口会继续向hal接口发送与scp模块建立连接请求。
153.s701c,hal接口创建线程a。
154.此时,获取连接的请求已经到达hal接口。响应于接收到与scp模块建立连接请求,hal接口可以创建一个线程a,用于向内核节点发送相应的请求,如与scp模块建立连接请求。
155.s701d,hal接口通过线程a向内核节点发送与scp模块建立连接请求。
156.当hal接口创建完成线程a时,hal接口可以通过线程a向内核节点发送与scp模块建立连接请求,以请求与scp模块建立连接。示例地,通常情况下,hal接口与内核节点通过ioctl命令进行交互,因此在本技术实施例中hal接口可以在线程a中调用ioctl命令,以向内核节点发送与scp模块建立连接的请求。其中,该ioctl命令的参数用于指示请求与scp模块建立连接。
157.s701e,内核节点向scp模块发送与scp模块建立连接请求。
158.示例性地,当内核节点接收到来自于hal接口的ioctl命令时,内核节点可以通过ioctl处理函数对ioctl命令进行解析,获取与scp模块建立连接的请求。
159.当内核节点获取到与scp模块建立连接的请求时,内核节点可以向scp模块发送与scp模块建立连接请求。
160.需要说明的是,当内核节点向scp模块发送与scp模块建立连接请求失败时,scp模块不会接收到建立连接请求。此外,在scp模块接收到建立连接请求之后,若scp模块出现异常重启现象,scp模块会出现无响应。在scp模块未接收到建立连接请求或者scp模块异常重启且无响应的情况下,scp模块不会向内核节点反馈连接状态。
161.s701f,内核节点确定超过预设时间阈值未收到与scp模块建立连接成功。
162.针对scp不会向内核节点反馈连接状态的情况,若内核节点确定在超过预设时间阈值的情况下,仍然未收到与scp模块建立连接成功,则内核节点可以确定与scp模块建立连接失败。
163.s701g,内核节点向hal接口反馈与scp模块建立连接失败。
164.当内核节点确定与scp模块建立连接失败时,内核节点可以向hal接口反馈与scp模块建立连接失败。
165.s701h,hal接口向hidl接口反馈与scp模块建立连接失败。
166.响应于接收到与scp模块建立连接失败,hal接口可以向hidl接口反馈与scp模块建立连接失败
167.s701i,hidl接口向ar模块应用反馈与scp模块建立连接失败。
168.响应于接收到与scp模块建立连接失败,hidl接口可以向ar模块应用反馈与scp模块建立连接失败。
169.s701j,ar模块应用存储与scp模块建立连接失败。
170.响应于接收到与scp模块建立连接失败,ar模块应用可以将与scp模块建立连接失败的信息存储起来,以便与ar相关的应用程序(如位置定位应用)调用ar模块应用的连接服务接口时,根据存储的与scp模块建立连接的信息,向位置定位应用反馈不同的信息,适应不同的应用出现的问题,提高电子设备的稳定性。
171.需要说明的是,为了提高电子设备系统的稳定性和可靠性,避免因ar模块应用与scp模块建立连接失败时,与ar相关的应用程序不能获取电子设备的行为状态,ar模块应用与scp模块建立连接失败的情况下,ar模块应用可以多次重复请求与scp模块建立连接,直到ar模块应用于scp模块建立连接成功或者重复请求次数达到预设次数(如15次)。
172.例如,若ar模块应用接收到与scp模块建立连接失败,ar模块应用每间隔预设时间(如1秒)可以重复执行s701a,以请求再次与scp模块建立连接,直到ar模块应用于scp模块建立连接成功或者重复请求次数达到预设次数(如15次)。
173.当然,若经过重复请求后,ar模块应用仍然接收到与scp模块建立连接失败,则ar模块应用执行s701j,将与scp模块建立连接失败的信息存储起来。
174.还需要说明的是,若在上述s701e内核节点向scp模块发送与scp模块建立连接请求之后,scp模块接收到该连接请求,并且该scp模块正常运行,scp模块会向内核节点反馈与scp模块建立连接成功。当内核节点在预设时间内接收到与scp模块建立连接成功的反馈,内核节点依次通过hal接口、hidl接口反馈与scp模块建立连接成功至ar模块应用中。当ar模块应用接收到与scp模块建立连接成功,则ar模块应用存储与scp模块建立连接成功。
175.在应用运行阶段,例如位置定位应用请求与ar模块应用建立连接时,如图7所示,位置定位应用请求与ar模块建立连接的方法,包括s702-s706。
176.s702,位置定位应用创建子线程。
177.根据上述s301的描述,通常情况下,当位置定位应用调用ar模块应用提供的连接服务接口时,位置定位应用会直接在主线程中调用连接服务接口。此时,若ar模块应用长时间无反馈,则位置定位应用可能出现anr无响应的问题,导致系统不稳定(如系统瘫痪)。
178.然而,若位置定位应用在子线程中调用连接服务接口时,即使ar模块应用长时间不反馈,位置定位应用也不会出现anr无响应的问题。
179.因此在本技术实施例中,在位置定位应用调用ar模块应用提供的api(如连接服务接口)之前,位置定位应用可以先创建一个子线程,以使该子线程用于调用ar模块应用提供的api(如连接服务接口)。
180.s703,位置定位应用通过子线程调用ar模块应用中的连接服务接口,发送连接请求,该连接请求用于与ar模块应用建立连接。
181.当位置定位应用创建完成子线程之后,位置定位应用可以通过创建的子线程调用ar模块应用中的连接服务接口,以便发送连接请求,以请求与ar模块应用建立连接。
182.s704,ar模块应用基于存储的与scp模块建立连接的信息为连接失败,获取当前调用连接服务接口的应用的包名,并确定应用包名是否为预设包名。
183.示例性地,若某一应用通过binder机制与ar模块应用建立连接,则ar模块应用可以通过binder机制可以获得当前调用连接服务接口的应用的包名。例如,若位置定位应用调用连接服务接口,则ar模块应用获取位置定位应用的包名。
184.其中,预设包名是预先存储在ar模块应用中的部分与ar相关的应用程序的包名。该预设包名可以包括一个或多个应用的包名。
185.需要说明的是,对于一部分与ar相关的应用程序,当该应用接收到与scp模块建立连接失败时,该应用可能会死循环请求与scp模块建立连接,从而造成系统的稳定性问题。
186.在本技术实施例中,可以将在与scp模块建立连接失败之后仍然循环请求与scp模块建立连接的应用的包名,作为预设包名存储在ar模块应用中,以便ar模块应用获取到应用的包名为预设包名时,制定相应的逃生方案,避免循环请求与scp模块建立连接,而造成系统的稳定性降低的问题。
187.当然,对于另一部分与ar相关的应用程序,当该应用接收到与scp模块建立连接失败时,该应用不会循环请求与scp模块建立连接,则ar模块应用可以直接向该应用反馈与scp模块建立连接失败。该部分应用不会作为预设包名存储在ar模块应用中,即该部分应用为非预设包名。
188.对于该示例,若位置定位应用的包名为预设包名,则执行s705。若位置定位应用的包名为非预设包名,则执行s706。
189.s705,若当前调用连接服务接口的应用的包名为预设包名,则ar模块应用向位置定位应用返回建立连接成功。
190.在ar模块应用存储的与scp模块建立连接的信息为连接失败的情况下,若位置定位应用的包名为预设包名,则需要制定逃生方案,例如即使ar模块应用与scp模块建立连接失败,ar模块应用也会向位置定位应用返回建立连接成功,以避免位置定位应用循环请求与scp模块建立连接。
191.s706,若当前调用连接服务接口的应用的包名为非预设包名,则ar模块应用向位置定位应用返回建立连接失败。
192.当位置定位应用的包名为非预设包名时,在位置定位应用接收到与scp模块建立连接失败的情况下,该位置定位应用不会循环请求与scp模块建立连接,则ar模块应用直接向位置定位应用返回建立连接失败即可。
193.可以理解的是,当ar模块应用中存储的与scp模块建立连接的信息为连接成功时,ar模块应用可以与scp模块正常进行交互,而不关心应用包名是否为预设包名。因此,ar模块应用不需要获取应用包名,而是可以直接向位置定位应用返回建立连接成功。
194.在位置定位应用接收到ar模块应用返回的与scp模块建立连接成功之后,位置定位应用可以调用ar模块应用提供的获取所支持识别的状态列表接口,以获取scp模块所支持识别的状态列表。如图8所示,位置定位应用获取scp模块所支持识别的状态列表,包括s801-s809。
195.s801,位置定位应用通过子线程调用获取所支持识别的行为状态列表接口,发送获取所支持识别的行为状态列表请求。
196.根据上文s702中的描述,位置定位应用可以在子线程中调用ar模块应用提供的api,以避免ar模块应用长时间不反馈,造成位置定位应用出现anr问题。
197.因此,在位置定位应用调用获取所支持识别的行为状态列表接口,以请求获取电子设备所支持识别的行为状态列表的情况下,位置定位应用可以复用s802中创建的子线程。也就是说,位置定位应用仍然通过子线程调用获取所支持识别的行为状态列表接口。
198.s802,ar模块应用向hidl接口发送获取行为状态列表请求。
199.当ar模块应用接收到获取所支持识别的行为状态列表请求时,ar模块应用可以向hidl接口发送获取行为状态列表请求。
200.s803,hidl接口向hal接口发送获取行为状态列表请求。
201.当hidl接口接收到获取行为状态列表请求时,hidl接口可以向hal接口发送获取行为状态列表请求。
202.s804,hal接口向hidl接口返回行为状态列表。
203.通常情况下,在与scp模块连接的传感器以及scp模块固定的情况下,ar所支持识别的行为状态列表也是固定的,例如该行为状态列表可以包括车载、骑行、走路、跑步、绝对静止、快走、步行、电梯、相对静止。在hal接口中可以预先存储ar所支持识别的行为状态列表。
204.当hal接口接收到获取行为状态列表请求时,hal接口可以将存储的ar所支持识别的行为状态列表反馈给hidl接口。
205.s805,hidl接口向ar模块应用返回行为状态列表。
206.当hidl接口接收到行为状态列表时,hidl接口可以向ar模块应用反馈行为状态列表。
207.s806,ar模块应用确定存储的与scp模块建立连接的信息是否为连接成功。
208.在上述s805,若位置定位应用包名为预设包名,则即使ar模块应用与scp模块建立连接失败,ar模块应用也会向位置定位应用返回建立连接成功。
209.因此,在该s806中,ar模块应用确定存储的与scp模块建立连接的信息是否为连接成功,ar模块应用向位置定位应用返回的数据是不同的。
210.具体地,当ar模块应用存储的与scp模块建立连接的信息是为连接成功,则执行
s807。当ar模块应用存储的与scp模块建立连接的信息是为连接失败时,则执行s808。
211.s807,若ar模块应用存储的与scp模块建立连接的信息是为连接成功,则ar模块应用向位置定位应用返回行为状态列表。
212.应理解,在ar模块应用存储的与scp模块建立连接的信息是为连接成功的情况下,在ar模块应用向位置定位应用返回行为状态列表之后,位置定位应用可以根据行为状态列表中的各行为状态的索引,订阅电子设备的某一种行为状态。例如,订阅电子设备的进入跑步状态。又例如,订阅电子设备的退出走路状态。
213.s808,若ar模块应用存储的与scp模块建立连接的信息是为连接失败,则ar模块应用向位置定位应用返回空的行为状态列表。
214.应理解,在ar模块应用存储的与scp模块建立连接的信息是为连接失败的情况下,ar模块应用与scp模块连接失败,位置定位应用不能使用ar模块应用的功能,例如不能订阅电子设备的行为状态或者获取电子设备当前的行为状态。
215.此时,为了避免位置定位应用继续执行后续的操作,如调用使能行为状态监控接口,ar模块应用可以返回空的行为状态列表给位置定位应用。当位置定位应用接收到空的行为状态列表时,位置定位应用将不再执行后续的操作。
216.s809,ar模块应用存储行为状态列表。
217.为了简化流程,ar模块应用可以将获取得到的行为状态列表存储下来,以便后续有ar相关的应用程序(如天气应用)再次调用所支持识别的行为状态列表接口时,ar模块应用直接根据存储的与scp模块建立连接的信息是否为连接成功,向ar相关的应用程序(如天气应用)反馈行为状态列表或者空的行为状态列表。
218.由此可以不必执行s802-s805,从而简化流程,提高系统运行效率。
219.当位置定位应用获取到该电子设备所支持识别的行为状态列表之后,位置定位应用可以根据需要订阅电子设备的某一种行为状态,例如位置定位应用可以订阅电子设备进入跑步状态,以便根据跑步状态的持续时间为电子设备的位置进行定位。
220.下面以位置定位应用订阅电子设备进入跑步状态为例,对应用订阅电子设备的行为状态的流程进行说明。
221.如图9所示,位置定位应用订阅进入跑步状态的流程包括s901-s914。
222.s901,位置定位应用通过子线程调用使能行为状态监控接口,发送订阅进入跑步状态请求。该请求用于订阅电子设备进入跑步状态,且该请求中携带有跑步对应的状态索引、上报周期、进入跑步状态标识。
223.根据上文s702中的描述,位置定位应用可以在子线程中调用ar模块应用提供的api,以避免ar模块应用长时间不反馈,造成位置定位应用出现anr问题。
224.因此,在位置定位应用调用使能行为状态监控接口,以请求订阅电子设备的进入跑步状态的情况下,位置定位应用可以复用s702中创建的子线程。也就是说,位置定位应用仍然通过子线程调用使能行为状态监控接口。
225.示例地,上述订阅进入跑步状态的请求中携带的参数可以包括跑步状态对应的行为状态索引(如3)、上报周期(如5秒)、进入跑步状态。也就是说,位置定位应用在此次调用使用行为状态监控接口时,规定此次需要订阅进入跑步状态,并且每隔5秒上报一次行为状态数据。
226.其中,该行为状态数据中包括进入跑步状态的次数以及每次进入跑步状态的时间。
227.s902,ar模块应用向hidl接口发送订阅进入跑步状态请求。
228.响应于接收到订阅进入跑步状态请求,ar模块应用可以向hidl接口发送订阅进入跑步状态请求。
229.s903,hidl接口向hal接口发送订阅进入跑步状态请求。
230.响应于接收到订阅进入跑步状态请求,hidl接口可以向hal接口发送订阅进入跑步状态请求
231.s904,hal接口创建线程b。
232.根据上述s304中的描述,在mtk的处理器芯片平台下,应用处理器的hal接口需要通过内核节点与scp处理器中的scp模块通信。然而,通常情况下,hal接口与内核节点之间的通信采用ioctl命令,并且ioctl命令为一个单向通道,会一直占用着hal接口与内核节点之间的一个线程通道,从而导致hal接口可能接收不到由内核节点上报的行为状态的数据。
233.因此,hal接口会创建两个线程,其中一个线程用于发送请求(如订阅行为状态的情况),另一个线程用于监听内核节点的上报信息。
234.此外,由于hal接口在执行上述s701c已经创建了线程a,因此在该s904中,hal接口再创建一个线程b即可。
235.s905,hal接口通过线程a向内核节点发送订阅进入跑步状态请求。
236.当hal接口接收到来自于hidl接口的订阅进入跑步状态请求时,hal接口可以复用上述s701c创建的线程a,并通过线程a发送订阅进入跑步状态请求。
237.示例地,通常情况下,hal接口与内核节点通过ioctl命令进行交互,因此在本技术实施例中hal接口可以在线程a中调用ioctl命令,以向内核节点发送订阅进入跑步状态请求,并携带跑步对应的状态索引、上报周期、进入跑步状态标识等参数。
238.s906,hal接口通过线程b监听内核节点的上报信息。
239.在hal接口通过线程a发送订阅进入跑步状态请求之后,hal接口可以通过线程b监听内核节点的上报信息。当内核节点有上报信息时,线程b则可以监听到,以便接收内核节点的上报信息。
240.s907,内核节点向scp模块发送订阅进入跑步状态请求。
241.示例性地,当内核节点接收到来自于hal接口的ioctl命令时,内核节点可以通过ioctl处理函数对ioctl命令进行解析,获取订阅进入跑步状态请求。
242.当内核节点获取到订阅进入跑步状态请求时,内核节点向scp模块发送订阅进入跑步状态请求。
243.s908,scp模块获取与跑步状态相关的传感器的数据,确定电子设备的行为状态,记录一个上报周期内的电子设备的行为状态变化。
244.当scp接收到订阅进入跑步状态请求时,scp模块可以获取与跑步状态相关的传感器的数据,确定电子设备的行为状态,例如是否进入跑步状态。
245.在一个上报周期内,scp模块可以记录电子设备的行为状态变化,如进入跑步状态的次数,以及每次进入跑步状态的时间节点。
246.s909,当一个上报周期结束,scp模块向内核节点上报行为状态数据。
247.通常情况下,位置定位应用在发送订阅进入跑步状态请求时,携带有上报周期。当一个上报周期结束时,scp模块可以将这个上报周期内电子设备的行为状态变化,作为行为状态数据上报给内核节点。
248.s910,内核节点向hal接口上报行为状态数据。
249.当内核节点接收到行为状态数据时,内核节点可以向hal接口上报行为状态数据。
250.s911,hal接口向hidl接口上报行为状态数据。
251.在线程b中,hal接口可以监听内核节点的上报信息。因此,当内核节点向hal接口上报行为状态数据,内核节点可以在线程b中监听到内核节点上报的行为状态数据。
252.当hal接口监听到有行为状态数据上报时,hal接口可以向hidl接口上报行为状态数据。
253.s912,hidl接口向ar模块应用上报行为状态数据。
254.当hidl接收到行为状态数据时,hidl接口可以向ar模块应用上报行为状态数据。
255.s913,ar模块应用向位置定位应用上报行为状态数据。
256.当ar模块应用接收到行为状态数据时,ar模块应用可以向位置定位应用上报行为状态数据。
257.s914,位置定位应用根据上报的行为状态数据进行分析处理。
258.当位置定位应用接收到行为状态数据时,位置定位应用可以根据上报的行为状态数据进行分析处理。例如,当位置定位应用接收到进入跑步状态的时间节点和次数,位置定位应用可以选择对电子设备进行定位的时机,避免持续对电子设备进行定位,以降低电子设备的功耗。
259.通常情况下,订阅电子设备的某一种行为状态(如跑步状态),需要调用两次ar模块应用提供的使能行为状态监控接口。其中一次调用使能行为状态监控接口订阅电子设备进入跑步状态,此时使能行为状态监控接口携带的参数包括跑步对应的行为状态索引(如3)、上报周期(如每隔5秒上报一次)、进入跑步状态标识。另一次调用使能行为状态监控接口订阅电子设备退出跑步状态,此时使能行为状态监控接口携带的参数包括跑步对应的行为状态索引(如3)、上报周期(如每隔5秒上报一次)、退出跑步状态标识。具体调用过程与上述s901-s913类似,此处不再赘述。
260.当然,在某些情况下,位置定位应用需要根据电子设备的当前行为状态智能化对电子设备的位置进行定位,此时位置定位应用可以调用获取当前行为状态接口,以请求获取电子设备的当前行为状态。如图10所示,位置定位应用获取当前行为状态的流程如下:
261.s1001,位置定位应用通过子线程调用获取当前行为状态接口,发送获取当前行为状态请求。
262.根据上文s702中的描述,位置定位应用可以在子线程中调用ar模块应用提供的api,以避免ar模块应用长时间不反馈,造成位置定位应用出现anr问题。
263.因此,在位置定位应用调用获取当前行为状态接口,以请求获取电子设备的当前行为状态的情况下,位置定位应用可以复用s702中创建的子线程。也就是说,位置定位应用仍然通过子线程调用获取当前行为状态接口。
264.s1002,ar模块应用向hidl接口发送获取当前行为状态请求。
265.当ar模块应用接收到获取当前行为状态请求时,ar模块应用向hidl接口发送获取
当前行为状态请求。此时,当前行为状态请求可以对应上述s303中的第一请求信息。
266.s1003,hidl接口向hal接口发送获取当前行为状态请求。
267.当hidl接口接收到获取当前行为状态请求,hidl接口可以向hal接口发送获取当前行为状态请求。
268.此时,当前行为状态请求可以对应上述s303中的第一请求信息。
269.s1004,hal接口创建线程b。
270.根据上述s304中的描述,在mtk的处理器芯片平台下,应用处理器的hal接口需要通过内核节点与scp处理器中的scp模块通信。然而,通常情况下,hal接口与内核节点之间的通信采用ioctl命令,并且ioctl命令为一个单向通道,会一直占用着hal接口与内核节点之间的一个线程通道,从而导致hal接口可能接收不到由内核节点上报的行为状态的数据。
271.因此,hal接口会创建两个线程,其中一个线程用于发送请求(如订阅行为状态的情况),另一个线程用于监听内核节点的上报信息。
272.此外,由于hal接口在执行上述s701c已经创建了线程a,因此在该s1004中,hal接口再创建一个线程b即可。
273.s1005,hal接口通过线程a向内核节点发送获取当前行为状态请求。
274.当hal接口接收到来自于hidl接口的获取当前行为状态请求时,hal接口可以复用上述s701c创建的线程a,并通过线程a发送获取当前行为状态请求。
275.示例地,通常情况下,hal接口与内核节点通过ioctl命令进行交互,因此在本技术实施例中hal接口可以在线程a中调用ioctl命令,以向内核节点发送获取当前行为状态请求。
276.此时,当前行为状态请求可以对应上述s304中的第一请求信息。
277.s1006,hal接口通过线程b监听内核节点的上报信息。
278.在hal接口通过线程a发送获取当前行为状态请求之后,hal接口可以通过线程b监听内核节点的上报信息。当内核节点有上报信息时,线程b则可以监听到,以便接收内核节点的上报信息。
279.s1007,内核节点确定是否频繁接收到获取当前行为状态请求。
280.在一些实施例中,根据上述s305中的描述,为降低应用处理器中的内核节点与scp处理器中的scp模块之间的通信负载,内核节点可以根据是否频繁接收到某一请求(如此处的获取当前行为状态请求),来确定是否缓存相应的上报数据(如对应获取当前行为状态请求的当前行为状态数据),以及确定是否执行s1008,以根据缓存数据是否失效,来确定是否将缓存数据作为当前行为状态数据上报。
281.在另一些实施例中,内核节点也可以不执行s1007。此时,内核节点可以对scp模块上报的信息均进行缓存,当接收到新的请求(如获取当前行为状态请求)时,直接执行s1008判断缓存是否失效,以根据缓存数据是否失效,来确定是否将缓存数据作为当前行为状态数据上报。
282.s1008,内核节点判断缓存是否失效。
283.通常情况下,内核节点设置了缓存有效期,如2秒。当缓存数据(如当前行为状态数据)超过缓存有效期,则表示缓存数据已失效。相反地,当缓存数据(如当前行为状态数据)未超过缓存有效期,则表示缓存数据未失效。
284.s1009,若缓存数据没有失效,则内核节点将缓存数据作为当前行为状态数据上报。
285.在缓存数据没有失效的情况下,内核节点将缓存数据作为当前行为状态数据上报至hal接口,以降低内核节点与scp模块之间的通信负载。
286.s1010,若缓存数据已失效,则内核节点向scp模块发送获取当前行为状态请求。
287.在缓存数据已失效的情况下,内核节点向scp模块发送获取当前行为状态请求,以请求scp模块反馈最新的当前行为状态数据,从而保证数据的准确性,进而提高ar数据的可靠性。
288.s1011,scp模块获取传感器的数据,确定电子设备的当前行为状态。
289.当scp模块接收到获取当前行为状态请求,scp模块从传感器中获取相应的数据,以确定电子设备的当前行为状态。该当前行为状态可以是车载、骑行、走路、跑步、绝对静止、快走、步行、电梯、相对静止中的一种。
290.s1012,scp模块向内核节点上报当前行为状态数据。
291.当scp模块获取到电子设备的当前行为状态时,scp模块可以向内核节点上报当前行为状态数据,如车载、骑行、走路、跑步、绝对静止、快走、步行、电梯、相对静止中的一种。
292.s1013,内核节点向hal接口上报当前行为状态数据。
293.当内核节点获取到电子设备的当前行为状态数据时,内核节点可以向hal接口上报当前行为状态数据。
294.s1014,内核节点存储并更新缓存的当前行为状态数据。
295.根据上述s1007-s1009,为了降低内核节点与scp模块的通信负载,内核节点获取到电子设备的当前行为状态数据时,内核节点可以存储并更新缓存的当前行为状态数据,以供下一次请求获取当前行为状态数据时使用。
296.s1015,hal接口向hidl接口上报当前行为状态数据。
297.当hal接口接收到当前行为状态数据时,hal接口可以向hidl接口上报当前行为状态数据。
298.s1016,hidl接口向ar模块应用上报当前行为状态数据。
299.当hidl接口接收到当前行为状态数据时,hidl接口可以向ar模块应用上报当前行为状态数据。
300.s1017,ar模块应用向位置定位应用上报当前行为状态数据。
301.当ar模块应用接收到当前行为状态数据时,ar模块应用可以向位置定位应用上报当前行为状态数据。
302.s1018,根据当前行为状态数据进行分析处理。
303.当位置定位应用接收到当前行为状态数据时,位置定位应用可以根据当前行为状态数据进行分析处理。例如,当位置定位应用接收到当前行为状态数据为绝对静止状态时,位置定位应用可以暂时不启动对电子设备的位置定位。
304.本技术实施例提供了一种电子设备,该电子设备包括:应用处理器(即第一处理器)、scp处理器(即第二处理器)、存储器。存储器中存储有一个或多个计算机程序,一个或多个计算机程序包括指令。当应用处理器或scp处理器执行计算机指令时,电子设备可执行上述方法实施例中电子设备执行的各个功能或者步骤。
305.本技术实施例还提供一种芯片系统。该芯片系统可以应用于电子设备。如图11所示,该芯片系统包括第一处理器1101(如应用处理器)、第二处理器1103(如scp处理器)和至少一个接口电路1102。第一处理器1101、第二处理器1103和接口电路1102可通过线路互联。例如,接口电路1102可用于从其它装置(例如电子设备的存储器)接收信号。又例如,接口电路1102可用于向其它装置(例如第一处理器1101和第二处理器1103)发送信号。示例性的,接口电路1102可读取存储器中存储的指令,并将该指令发送给第一处理器1101或第二处理器1103。当所述指令被第一处理器1101或第二处理器1103执行时,可使得电子设备执行上述实施例中的各个步骤。当然,该芯片系统还可以包含其他分立器件,本技术实施例对此不作具体限定。
306.本技术实施例还提供一种计算机存储介质,该计算机存储介质包括计算机指令,当所述计算机指令在上述可折叠的电子设备上运行时,使得该电子设备执行上述方法实施例中手机执行的各个功能或者步骤。
307.本技术实施例还提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行上述方法实施例中手机执行的各个功能或者步骤。
308.通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
309.在本技术实施例各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
310.上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:快闪存储器、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
311.以上所述,仅为本技术实施例的具体实施方式,但本技术实施例的保护范围并不局限于此,任何在本技术实施例揭露的技术范围内的变化或替换,都应涵盖在本技术实施例的保护范围之内。因此,本技术实施例的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1