CN114416389B - 一种活动识别方法以及相关设备 - Google Patents
一种活动识别方法以及相关设备 Download PDFInfo
- Publication number
- CN114416389B CN114416389B CN202111517869.XA CN202111517869A CN114416389B CN 114416389 B CN114416389 B CN 114416389B CN 202111517869 A CN202111517869 A CN 202111517869A CN 114416389 B CN114416389 B CN 114416389B
- Authority
- CN
- China
- Prior art keywords
- activity
- module
- application
- reporting
- recognition
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Telephone Function (AREA)
- Telephonic Communication Services (AREA)
Abstract
本申请公开了一种活动识别方法,该方法由电子设备执行,电子设备包括第一处理器、第二处理器和至少一个物理传感器,第一处理器包括应用层、硬件抽象层和内核层,所述第二处理器包括活动识别模块和活动识别算法模块。具体地,活动识别模块获取硬件抽象层在接收到应用层中至少一个应用下发的第二订阅参数后确定的第一订阅参数,第一订阅参数包括活动标识和活动状态,然后判断是否满足上报条件,当满足上报条件时,活动识别模块将从活动识别算法模块获得的识别结果由内核层上报至硬件抽象层,然后通过硬件抽象层上报至应用层的至少一个应用,实现对于终端多种活动的活动识别。
Description
本申请要求于2021年12月01日提交中国国家知识产权局、申请号为202111456938.0、申请名称为“一种活动识别方法以及终端”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及计算机技术领域,尤其涉及一种活动识别方法、用于执行该活动识别方法的电子设备、芯片以及计算机存储介质、计算机程序产品。
背景技术
随着科学技术的不断发展,产生了各种各样的终端。例如,智能手机、平板电脑、智能手表、智能手环、智能眼镜等终端被广泛应用于生产和生活。上述终端可以运行不同的应用,以实现相应的功能。
为了提升应用的用户体验,许多应用对终端的活动识别(activity recognition,AR)提出了要求。其中,AR是指通过底层传感器如加速度传感器等采集终端的活动特征,以对终端的活动(也可以称为行为,具体可以包括静止、走路、跑步、骑行、乘车或乘电梯等不同类型)进行识别。
例如,电池管理应用通常需要识别终端是否静止,以便于终端静止时,对无线网络WIFI模块、蓝牙低功耗(bluetooth low energy,BLE)模块的扫描频率进行管控,以实现功耗管控。又例如,通信应用通常需要识别终端是否处于乘电梯的活动,以便于终端在电梯中时激活探测网络,以及时搜网,保障通话质量。
发明内容
本申请提供一种活动识别方法,该方法能够对于电子设备的活动状态进行准确识别,从而满足上层应用的需求,为用户提供更好的体验。本申请还提供了上述活动识别方法对应的电子设备、芯片、计算机可读存储介质以及计算机程序产品。
为达到上述目的,本申请采用如下技术方案:
第一方面,本申请提供了一种活动识别方法。该方法由电子设备执行。该电子设备包括但不限于智能手机、平板电脑、智能手环、智能手表等终端。其中,电子设备包括第一处理器、第二处理器和至少一个物理传感器。第一处理器包括应用层、硬件抽象层和内核层,所述第二处理器包括活动识别模块和活动识别算法模块。
具体地,应用层中至少一个应用可以下发第二订阅参数,硬件抽象层可以在接收到该第二订阅参数后确定第一订阅参数,该第一订阅参数包括应用订阅的活动标识和活动状态。如此,活动识别模块可以获取第一订阅参数,然后判断是否满足上报条件,该上报条件具体用于确定是否触发上报识别结果的流程,当满足上报条件时,活动识别模块可以执行上报识别结果的流程,具体是将从活动识别算法模块获得的识别结果由内核层上报至硬件抽象层,然后通过硬件抽象层上报至应用层的至少一个应用。
在该方法中,应用层的应用在需要获取活动状态时,可以通过下发订阅参数,并通过硬件抽象层、内核的处理传递至活动识别模块,活动识别模块在满足上报条件时,将活动识别算法模块确定的识别结果,通过内核、硬件抽象层返回至应用层的应用,如此实现了对活动状态的识别,满足了应用的需求,有利于提高应用的用户体验。
在一种可能的实现方式中,电子设备还包括存储器。存储器中包括共享内存。当第一订阅参数由硬件抽象层下发至内核层时,内核层可以将第一订阅参数写入共享内存,活动识别模块从共享内存中获取第一订阅参数。
该方法通过共享内存实现第一订阅参数在内核层和活动识别模块之间的传递,降低了传输开销,提高了传输效率。
在一种可能的实现方式中,活动识别模块将从活动识别算法模块获得的识别结果写入存储器的共享内存中,内核层从共享内存中获取识别结果,然后将识别结果上报至硬件抽象层。
该方法通过在共享内存中存储识别结果,使得内核层可以快速获取识别结果,并将识别结果返回应用,提高了响应效率。
在一种可能的实现方式中,当活动识别模块的上报模式为批量上报模式时,上报条件可以为:距离上次上报时间大于或等于最小上报周期,且当前时间的活动状态相对于上次上报时间的活动状态发生变化。其中,第二订阅参数包括各活动对应的上报周期,第一订阅参数包括为相同活动的上报周期的最小值的最小上报周期。
如此可以满足不同活动状态的批量上报要求,避免漏报的情况发生,从而满足同一应用对不同活动状态的需求,或者是不同应用对不同活动状态的需求,提高了用户体验。
在一种可能的实现方式中,当活动识别模块的上报模式为变化上报模式时,上报条件为:活动类型发生变化。其中,第一订阅参数和第二订阅参数相同,活动类型是硬件抽象层根据第一订阅参数确定的。
如此,实现了活动类型变化时及时上报,以便于应用能够根据变化的活动类型及时进行相应的调整,提高了用户体验。
在一种可能的实现方式中,活动状态包括进入活动状态、退出活动状态以及进入活动状态和退出活动状态。
如此,该活动识别方法可以实现对于进入活动状态和/或退出活动状态的精细化识别,提高了识别准确度。
在一种可能的实现方式中,进入活动状态包括进入乘车状态、进入骑车状态、进入步行状态、进入跑步状态、进入静止状态、进入躺下状态或者进入电梯状态中的任一种。
如此,该活动识别方法可以实现对于进入乘车状态、进入骑车状态、进入步行状态、进入跑步状态、进入静止状态、进入躺下状态或者进入电梯状态等多种活动状态的识别,满足了不同业务的需求。
在一种可能的实现方式中,识别结果为活动识别算法模块从活动识别模块获取至少一个物理传感器上报的传感数据,并通过活动识别算法对传感数据处理得到。
其中,活动识别算法模块周期性地获取物理传感器上报的传感数据,并对传感数据进行处理获得识别结果。活动识别模块在确定满足上报条件时,向应用上报相应时间的识别结果,如此可以减少上报数据量,降低传输开销。
在一种可能的实现方式中,识别结果包括由传感数据识别得到的活动状态以及识别时间。
由于识别结果不仅包括识别到的活动状态,还可以包括识别时间,基于该活动状态和识别时间可以获知活动状态的变化趋势,为应用提供更丰富的信息。
在一种可能的实现方式中,活动识别模块调用传感器注册接口发布获得识别模块的参数,然后调用内存地址获取接口获取共享内存指针,并配置用于接收传感器发送传感数据的发送频率以及设置用于周期性从活动识别算法模块获得识别结果的定时器以实现初始化。
如此,活动识别模块可以通过初始化发布活动识别模块的参数,获得用于访问共享内存的共享指针,配置传感数据的发送频率以及周期性从活动识别算法模块获取识别结果。
在一种可能的实现方式中,活动识别模块调用传感器释放接口销毁已发布的活动识别模块的参数,将共享内存指针清零,通过传感器释放接口停止获取传感数据以及取消定时器实现以实现销毁。
如此,活动识别模块可以销毁已发布的活动识别模块的参数,将共享内存指针清零,停止获取传感数据,停止获得识别结果,最终实现对于活动识别模块的销毁。
在一种可能的实现方式中,第一处理器为应用处理器,第二处理器为系统协处理器。
如此,该活动识别方法可以通过电子设备中的应用处理器与系统协处理器共同完成。
第二方面,本申请提供了一种电子设备,所述电子设备包括第一处理器、第二处理器和至少一个物理传感器,所述第二处理器和所述第一处理器、所述至少一个物理传感器通信,所述第二处理器用于执行计算机程序,以执行上述第一方面中任一种可能的设计中所述的活动识别方法。
第三方面,本申请提供了一种芯片,所述芯片包括第二处理器和通信接口,所述第二处理器通过所述通信接口和第一处理器、至少一个物理传感器通信,所述第二处理器用于执行计算机程序,以执行上述第一方面中任一种可能的设计中所述的活动识别方法。
第四方面,本申请提供了一种计算机存储介质,包括计算机指令,当所述计算机指令在电子设备运行时,所述电子设备执行上述第一方面中任一种可能的设计中所述的活动识别方法。
第五方面,本申请提供了一种计算机程序产品,包括指令;当所述指令被电子设备运行时,使得所述电子设备执行上述第一方面中任一种可能的设计中所述的活动识别方法。
应当理解的是,本申请中对技术特征、技术方案、有益效果或类似语言的描述并不是暗示在任意的单个实施例中可以实现所有的特点和优点。相反,可以理解的是对于特征或有益效果的描述意味着在至少一个实施例中包括特定的技术特征、技术方案或有益效果。因此,本说明书中对于技术特征、技术方案或有益效果的描述并不一定是指相同的实施例。进而,还可以任何适当的方式组合本实施例中所描述的技术特征、技术方案和有益效果。本领域技术人员将会理解,无需特定实施例的一个或多个特定的技术特征、技术方案或有益效果即可实现实施例。在其他实施例中,还可在没有体现所有实施例的特定实施例中识别出额外的技术特征和有益效果。
附图说明
图1为本申请实施例提供的一种电子设备的软硬件框架示意图;
图2为本申请实施例提供的一种终端的软硬件框架示意图;
图3为本申请实施例提供的一种终端的活动识别线程的示意图;
图4为本申请实施例提供的一种批量上报的活动识别方法的流程图;
图5为本申请实施例提供的一种批量上报的活动识别方法的接口流程图;
图6为本申请实施例提供的一种多应用批量上报的活动识别方法的流程图;
图7为本申请实施例提供的一种批量上报的活动识别方法的确定最小周期的流程示意图;
图8为本申请实施例提供的一种变化上报的活动识别方法的流程图;
图9为本申请实施例提供的一种变化上报的活动识别方法的接口流程图;
图10为本申请实施例提供的一种变化上报的活动识别方法的确定活动类型的流程示意图;
图11为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
本申请说明书和权利要求书及附图说明中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于限定特定顺序。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
为了下述各实施例的描述清楚简洁,首先给出相关技术的简要介绍:
活动识别(activity recognition,AR)是指通过底层物理传感器如加速度传感器等采集终端的活动特征,以对终端的活动进行识别。其中,终端的活动可以为静止、走路、跑步、骑行、乘车、乘电梯、乘飞机等。随着用户需求的不断增长,许多应用对终端的活动识别提出了要求。
示例性地,电池管理应用需要对于终端是否静止进行识别,当终端处于静止时,电池管理应用降低无线网络WIFI模块、BLE模块等的扫描频率,以实现功耗管控。天气应用需要对于终端是否处于乘高铁或者乘飞机进行识别,当终端处于乘高铁或者乘飞机时,天气应用需要及时刷新以更新天气数据。屏幕亮度调节应用需要对于终端是否处于乘车进行识别,当终端处于乘车时,屏幕亮度调节应用需要根据车辆中的亮度,自动调节屏幕的亮度,避免因为环境改变影响用户体验。通信应用需要对于终端是否处于进出电梯、乘飞机等活动进行识别,当终端处于进出电梯、乘飞机时,通信应用需要及时搜索终端周围的通信网络,以便保持通话连接。
有鉴于此,本申请实施例提供了一种活动识别方法,该方法可以由电子设备执行。电子设备包括但不限于智能手机、平板电脑、个人数字助理(personal digitalassistant,PDA) 或者智能穿戴设备等。智能穿戴设备包括智能手表、智能手环或者智能眼镜等。
具体地,应用于电子设备,电子设备包括第一处理器、第二处理器和至少一个物理传感器。第一处理器包括应用层、硬件抽象层、内核层,第二处理器包括活动识别模块和活动识别算法模块。
活动识别模块获取第一订阅参数,第一订阅参数包括活动标识和活动状态。活动标识可以包括活动名称与活动类型。第一订阅参数是硬件抽象层在接收应用层中的至少一个应用下发的第二订阅参数后确定的。活动识别模块判断是否满足上报条件,当满足上报条件时,活动识别模块将从活动识别算法模块获得的识别结果由内核层上报至硬件抽象层,然后通过硬件抽象层上报至应用层的应用,实现活动识别。
在该方法中,应用层的应用在需要获取活动状态时,可以通过下发订阅参数,并通过硬件抽象层、内核的处理传递至活动识别模块,活动识别模块在满足上报条件时,将活动识别算法模块确定的识别结果,通过内核、硬件抽象层返回至应用层的应用,如此实现了对活动状态的识别,满足了应用的需求,有利于提高应用的用户体验。
为了使得本申请的技术方案更加清楚、易于理解,下面先对终端的软硬件结构进行示例说明。
如图1所示,电子设备包括第一处理器、第二处理器和至少一个物理传感器。其中第一处理器为应用处理器(application processor,AP),应用处理器从上至下分为应用(application,APP)层、硬件抽象层(hardware abstraction layer,HAL)和内核(kernel)层。第二处理器为系统协处理器(system companion processor,SCP),系统协处理器包括活动识别模块和活动识别算法模块。层与层之间通过软件接口通信。
在一些可能的实现方式中,活动识别模块和活动识别算法模块可以部署在系统协处理器(system companion processor,SCP)中,也可以部署在应用处理器(applicationprocessor, AP)中。当活动识别模块和活动识别算法模块可以部署在SCP中时,可以实现对于终端低功耗的活动识别。
在本实施例中,如图1所示,订阅参数从上至下传递称为“下发”,识别结果从下至上传递为“上报”。
下面以电子设备为终端为例进行介绍。如图2所示,终端的软件系统架构包括应用处理器和系统协处理器。具体地,应用处理器从上至下分为应用层、硬件抽象层和内核层。SCP包括活动识别模块以及活动识别算法模块。SCP模块为SCP的软件实现。活动识别模块还可以从物理传感器中获取传感数据。
应用层包括终端的各种应用(application,APP)以及活动识别管理服务(activity recognition manage service,ARMS)。应用层用于通过用户界面为用户提供所需的各项应用软件和服务。本实施例中,应用层部署具有活动识别功能的应用程序包(Android application package,APK),例如可以为电池管理应用、天气应用、屏幕亮度调节应用以及通信应用等。应用下发订阅参数。例如,天气应用通过registerListener向ARMS注册用于活动识别的回调监听器,通过ARMS提供的SDK接口配置订阅参数。
在本实施例中,ARMS位于应用层,在一些可能的实现方式中,还可以位于框架层,本实施例中以ARMS位于应用层为例进行介绍。具体地,应用通过ARMS所提供的软件开发工具包(software development kit,SDK)连接或者断开ARMS。当一应用与ARMS 连接后,ARMS可以对该应用所订阅的订阅参数进行统一管理。其中订阅参数包括该应用关注的活动类型、上报周期、应用名称等。其中,该应用关注的活动类型进一步包括该应用关注的活动名称,以及进入该活动以及退出该活动的类型。例如,通信应用关注终端是否进入乘车活动,订阅参数中包括乘车活动名称、是否进入乘车活动、是否退出乘车活动等。
硬件抽象层位于操作系统内核层与硬件电路之间,用于将硬件抽象化。在本实施例中,硬件抽象层包括硬件抽象层接口定义语言(hardware abstraction layerinterface definition language,HIDL)接口和HAL接口。
HIDL接口可以使独立编译的代码库(libraries)之间进行通信,用于进行进程间通信 (inter-process communication,IPC)。在本实施例中,HIDL接口用于提供活动识别的HILD 接口,具体包括活动识别的订阅、退订以及事件回调等。在本实施例中,对于应用层所下发的订阅参数,HIDL接口通过enableActivity将订阅参数下发给HAL接口。
HAL接口可以隐藏特定平台的硬件接口细节,为操作系统提供虚拟硬件平台,使操作系统具有硬件无关性,可以在多种平台上进行移植。在本实施例中,HAL接口通过enableEvent将订阅参数下发至内核层。进一步地,当订阅参数中的上报模式为批量上报模式时,对于相同的活动识别类型,HAL接口从多个上报周期中确定最小上报周期。
内核层是基于硬件的第一层软件扩充,用于提供操作系统的最基本的功能。内核层负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。在本实施例中,内核层与活动识别模块通过共享内存区域进行通信,实现应用处理器与系统协处理器之间的信息交互。
系统协处理器包括活动识别模块以及活动识别算法模块。活动识别模块用于执行活动识别功能,活动识别算法模块包含活动识别算法,根据传感数据以及订阅参数,确定活动识别结果。
活动识别模块和内核层可以通过共享内存区域进行通信,共享内存位于电子设备的存储器中。具体地,活动识别模块可以定义指示共享内存的指针,批量上报模式下指针类型为struct ar_para_batch{ar_config_list configs_batch;ar_upload_list uploads_batch;},变化上报模式下指针类型为struct ar_para_on_change{ar_config_listconfigs_on_change; ar_upload_list uploads_on_change;}。进一步地,configs_batch和configs_on_change为AP 侧通过内核层所下发的订阅参数所存储的共享内存,uploads_batch和uploads_on_change 为终端通过SCP批量上报或变化上报识别结果的共享内存。例如,当上报模式为批量上报模式时,内核层在共享内存的configs_batch中写入订阅参数后,可以通过MTK平台的传感器消息传递机制,发送表示批量上报模式写入订阅参数的消息(例如IOCTL_AR_BATCH_CONFIG_EVENT=515)至活动识别模块,活动识别模块根据该消息,从共享内存configs_batch子区域读取订阅参数。
在本实施例中,当应用层对于订阅参数进行下发时,订阅参数通过AP侧的接口逐层下发,当订阅参数下发至内核层时,内核层将对应的订阅参数写入共享内存,SCP中的活动识别模块可以通过共享内存获取应用层下发的订阅参数,进一步根据订阅参数从至少一个物理传感器获取传感数据,然后将传感数据发送至活动识别算法模块进行活动识别。具体地,当活动识别模块在共享内存uploads_batch中写入订阅参数时,通过MTK平台传感器消息传递机制,发送表示批量上报模式上报识别结果的消息(例如 IOCTL_AR_BATCH_REPORT_EVENT=1324)至内核层。内核层接收到该消息,则从 uploads_batch共享内存子区域读取活动识别结果。
活动识别模块根据活动识别算法模块所返回的活动识别结果,结合订阅参数,对于活动识别结果进行上报。识别结果包括识别状态和识别时间。订阅参数中包括应用对应的上报模式,具体可以为批量上报模式以及变化上报模式。批量上报是指按照一定的周期对于活动识别结果进行上报的上报模式。变化上报是指当订阅的活动状态发生变化时,例如从进入跑步状态变为进入静止状态,活动识别模块将变化后的结果进行上报的上报模式。当上报模式为变化上报模式时,内核层在共享内存的configs_on_change中写入订阅参数后,通过MTK平台Sensor消息传递机制,发送表示下发变化上报模式的订阅参数的消息(例如IOCTL_AR_ON_CHANGE_CONFIG_EVENT=516)至活动识别模块。活动识别模块根据该消息从共享内存configs_on_change子区域读取订阅参数。
活动识别模块可以根据订阅参数,从物理传感器获取传感数据,然后将传感数据发送至活动识别算法模块进行活动识别。活动识别模块根据活动识别算法模块所返回的活动识别结果,结合订阅参数,对于活动识别结果进行上报。当识别结果表征活动类型发生变化时,活动识别模块开始上报。具体地,活动识别模块将变化上报模式对应的识别结果写入uploads_on_change中,通过MTK平台传感器消息传递机制,发送表示变化上报模式上报识别结果的消息(例如IOCTL_AR_BATCH_REPORT_EVENT=1325)至内核层。内核层接收到该消息,则从uploads_on_change共享内存子区域读取活动识别结果。
对于批量上报的活动识别结果,内核层通过eventUpload将识别结果上报至HAL接口。
HAL接口对于内核层上报的活动识别结果,通过activityUpload将此识别结果上报至 HIDL。
HIDL通过moventUpload进一步将识别结果上报至ARMS。
ARMS根据监听机制(例如可以为listener),将识别结果通过batchCallback上报至订阅该活动类型的应用。当该识别结果对应多个应用时,ARMS将识别结果通过batchCallback上报至多个对应应用。
以上对于本申请的软件以及硬件架构进行了介绍,下面结合图3对本申请实施例的活动识别方法的具体步骤进行介绍。
在电子设备开机时,SCP模块创建活动识别模块,SCP模块为SCP的软件实现。具体地,SCP模块通过INTERNAL_APP_INIT()函数创建活动识别模块,该活动识别模块可以为一个线程(如活动识别线程)。其中,INTERNAL_APP_INIT()函数可以用于传递如下参数:活动识别模块进行活动识别的活动类型,如AR类型,活动识别模块的初始化函数,示例性的初始化函数为ArInit(),活动识别模块的任务销毁函数,示例性的任务销毁函数为 ArEnd(),活动识别模块的事件处理函数,示例性的事件处理函数为ArHandleEvent(),还可以传递厂商信息。
该活动识别模块可以用于执行以下步骤:
S302:活动识别模块的初始化;S304:活动识别模块的消息处理以及S306:活动识别模块的销毁。下面分别进行介绍。
S302:活动识别模块的初始化。
活动识别模块的初始化具体包括以下步骤:
S3022:活动识别模块调用芯片平台传感器注册接口(例如sensorRegister接口)发布活动识别模块的参数。其中,该参数包括活动识别模块的名称、类型、中断类型等。AP侧可以根据该参数的类型查找、下发配置参数。例如,该活动识别模块的名称可以为“AR”,表示用于活动识别;类型可以为SENS_TYPE_AR,示例性的SENS_TYPE_ACCEL为1表示加速度ACC类型,SENS_TYPE_MODEM为2表示通信协议MODEM类型, SENS_TYPE_AR为56表示活动识别AR类型,本申请示例性的注册的活动识别模块参数的类型为SENS_TYPE_AR类型,可用于AP侧识别和使用,中断类型为WAKEUP唤醒类型。
S3024:活动识别模块通过内存地址获取接口(例如get_sensor_share_mem_addr接口) 获取共享内存指针。其中共享内存是指内核层和活动识别模块均可以进行数据写入和读取的内存,用于实现AP与SCP之间的信息传输。共享内存指针用于指示该共享内存中的具体区域。批量上报(Batch)模式下,指针类型为struct ar_para_batch{ar_config_listconfigs_batch;ar_upload_list uploads_batch;}结构体类型的指针,变化上报(OnChange) 模式下,指针类型为struct ar_para_on_change{ar_config_list configs_on_change; ar_upload_list uploads_on_change;}结构体类型的指针。进一步地,configs_batch为批量上报模式时,内核层下发订阅参数的共享内存区域,configs_on_change为变化上报模式时,内核层下发订阅参数的共享内存区域,uploads_batch为批量上报模式时,活动识别模块写入识别结果的共享内存区域,uploads_on_change为变化上报模式时,活动识别模块写入识别结果的共享内存区域。共享内存区域的初始状态为0,可以表示共享内存存储数据为空。
S3026:活动识别模块通过传感器回答接口(例如sensorRequest接口)为传感器配置传感数据发送频率。物理传感器获取发送频率后,按照该发送频率向活动识别模块发送传感器所采集的传感数据,以使活动识别模块可以将传感数据发送至活动识别算法模块进行活动识别。其中,物理传感器可以为加速度传感器、调制解调器等,不同物理传感器可以对应不同的发送频率。
调制解调器可以采集到基站小区标识(Cell Identity,CID)、制式、高铁标志位等数据。其中,不同运营商以及不同移动通信技术对应不同的制式,例如在第二代通信技术中,移动网络制式为GSM制式,联通网络制式为GSM制式,电信网络制式为CDMA制式。第三代通信技术中,移动网络制式为TD-SCDMA制式,联通网络制式为WCDMA制式,电信网络制式为CDMA2000制式。第四代通信技术中,移动网络制式为TD-LTE制式,联通网络制式为TD-LTE制式和FDD-LTE制式混合,电信网络制式为TD-LTE制式和 FDD-LTE制式混合。根据终端的制式可以获取该终端对应的运营商以及对应的通信技术,如此,可以实现在一些网络较差的环境下的网络自动切换,为用户提供较高的使用体验。在高铁沿线,调制解调器获取的通信数据通常包括高铁标志位,因此可以根据高铁标志位判断终端是否位于高铁沿线,进一步可以根据高铁标志位以及终端的移动速度确定终端是否为乘坐高铁活动状态。
S3028:活动识别模块设置定时器,用于按照固定识别周期从活动识别算法模块获取识别结果。例如,活动识别模块可以通过getAlgoResult()获取AR活动识别结果。进一步地,活动识别模块根据识别结果以及订阅参数将识别结果进行上报。
需要说明的是,上述S3022至S3028均为活动识别模块初始化的相关步骤,本方案并不限定上述S3022至S3028的执行顺序。
S304:活动识别模块的消息处理。具体包括以下步骤:
S3042:活动识别模块通过ar_para_batch的configs_batch子区域,或ar_para_on_change 的configs_on_change子区域获取内核层通过共享内存下发的订阅参数。其中,订阅参数可以包括订阅活动的类型,订阅活动的类型包括活动名称以及状态。例如,活动名称可以为 VEHICLE(乘车)、RIDING(骑车)、WALK(走路)、RUNNING(跑步)、STILL(静止)、TILT(躺下)、ELEVATOR(电梯)、PLANE(飞机)等,其中VEHICLE(乘车) 进一步可以包括HIGH_SPEED_RAIL(高铁)、METRO(地铁)、TRAIN(火车)等。示例性地,订阅活动名称可以为乘车,订阅活动的状态为终端进入乘车状态以及终端退出乘车状态。当上报模式为批量上报模式时,订阅参数还包括上报周期。活动识别模块解析内核层所下发的订阅参数,确定所要上报的识别结果以及上报时间。
S3044:活动识别模块通过AlgDataCollect算法接口将物理传感器所采集的传感数据传递至活动识别算法模块。其中,物理传感器可以为多种传感器,例如加速度传感器、调制解调器、气压传感器、环境光传感器以及陀螺仪等。
S3046:活动识别模块周期性从活动识别算法模块获取识别结果,示例性的可以基于定时器通过getAlgoResult接口获取。其中,周期可以为1s。
S3048:活动识别模块根据识别结果进行逻辑处理。当为批量上报模式时,当距离上次上报时间间隔超过最小上报周期且活动状态发生变化时,进行上报。其中,最小上报周期为HAL接口根据活动类型以及上报周期所确定的。当仅存在一个应用具有该活动类型时,该上报周期为最小上报周期。当存在多个应用具有同一个活动类型时,HAL接口确定多个上报周期中的最小值为最小上报周期。当为变化上报模式时,当活动状态发生变化时进行上报。
S30410:活动识别模块将识别结果通过共享内存ar_para_batch的uploads_batch子区域,或者ar_para_on_change的upploads_on_change子区域上传至内核层。
活动识别模块根据上报模式以及识别结果,进行数据上报。例如当上报模式为批量上报时,距离上次上报时间间隔超过(大于或等于)最小上报周期,且活动状态发生变化时,将该周期内所获取的识别结果以及对应的识别时间进行上报。当上报模式为变化上报时,识别结果表征终端的状态发生了变化,则将识别结果进行上报。
需要说明的是,上述S3042至S30410均为活动识别模块初始化的相关步骤,本方案并不限定上述S3042至S30410的执行顺序。
S306:活动识别模块的销毁。活动识别模块的销毁具体包括以下步骤:
S3062:活动识别模块调用芯片平台接口传感器释放接口(例如sensorRelease接口) 销毁已发布的活动识别模块的参数。如此,当终端关机或者重启的情况下,取消之前注册的活动识别模块。
S3064:活动识别模块通过memset将共享内存指针置空。如此,可以清空共享内存区域,防止数据泄露。
S3066:活动识别模块通过sensorRelease接口停止从物理传感器获取数据。降低功耗开销。
S3068:活动识别模块通过timTimerCancel取消定时器。停止从活动识别算法模块获取识别结果,降低系统定时器调度开销,释放定时器资源。
需要说明的是,上述S3062至S3068均为活动识别模块初始化的相关步骤,本方案并不限定上述S3062至S3068的执行顺序。
本申请实施例支持批量上报和变化上报两种上报模式。批量上报是指按照一定的周期对于活动识别结果进行上报的上报模式。具体地,对于不同应用所下发的订阅参数,HAL 接口按照订阅参数中活动识别的类型获取每种活动识别类型的最小上报周期,然后活动识别模块按照每种活动类型对应的最小上报周期对于该活动识别的活动识别结果进行上报。其中最小上报周期内的活动识别包括在该周期内的多种变化结果。在ARMS层根据所上报的活动识别类型,将该活动识别类型的活动识别结果发送至对应的应用。
下面结合图4对于一个应用批量上报进行详细介绍。
应用在ARMS注册事件回调监听器,用于获取返回的识别结果。天气应用通过registerListener接口向ARMS注册用于活动识别的回调监听器,以使ARMS通过该回调监听器向应用返回识别结果。图5为一种批量上报的活动识别方法的接口示意图。
应用向ARMS下发应用订阅活动类型(活动名称以及进入和/或退出)、上报周期。例如,应用通过ARMS提供的SDK接口配置订阅参数,该订阅参数可以表示该天气应用关注终端是否处于乘坐高铁(活动名称为高铁,关注进入以及退出)、上报周期。例如 HIGH_SPEED_RAIL=20(活动名称为高铁),1(关注进入),60(上报周期为60s); HIGH_SPEED_RAIL=20(活动名称为高铁),0(关注退出),60(上报周期为60s)。当应用向ARMS下发应用订阅活动类型时,可以通过1表示应用关注进入活动状态,0表示关注退出活动状态。
ARMS向HIDL下发应用订阅活动类型(活动名称以及进入和退出)、上报周期。ARMS经过enableMovement接口将多个应用分别订阅活动类型(活动名称以及进入和/或退出)、上报周期下发至HIDL层。例如天气应用可以为:HIGH_SPEED_RAIL=20(活动名称为高铁),1(关注进入),60(上报周期为60s);HIGH_SPEED_RAIL=20(活动名称为高铁),0(关注退出),60(上报周期为60s)。
HIDL接口向HAL接口下发多个应用分别订阅活动类型(活动名称以及进入和退出)、上报周期。HIDL层进一步通过enableActivity接口将订阅活动类型(活动名称以及进入和/或退出)、上报周期下发给HAL接口。例如天气应用,HIGH_SPEED_RAIL=20(活动名称为高铁),1(关注进入),60(上报周期为60s);HIGH_SPEED_RAIL=20(活动名称为高铁),0(关注退出),60(上报周期为60s)。
HAL接口为将多个应用订阅活动类型中活动名称相同的活动确定最小上报周期。当仅有一个活动类型仅被一个应用所订阅时,上报周期为最小上报周期。例如天气应用,HIGH_SPEED_RAIL=20(活动名称为高铁),1(关注进入),60(上报周期为60s); HIGH_SPEED_RAIL=20(活动名称为高铁),0(关注退出),60(上报周期为60s)。
HAL接口向内核层下发活动类型(活动名称以及进入和退出)以及对应最小上报周期。 HAL接口经过enableEvent接口将活动类型(活动名称以及进入和/或退出)以及对应最小上报周期下发至内核层。例如天气应用,HIGH_SPEED_RAIL=20(活动名称为高铁),2 (关注进入以及退出),60(上报周期为60s);HIGH_SPEED_RAIL=20(活动名称为高铁),0(关注退出),60(上报周期为60s)。当HAL接口向内核层下发应用订阅活动类型时,可以通过2表示既关注进入活动状态,又关注退出活动状态,1表示应用关注进入活动状态,0表示关注退出活动状态。
内核层在共享内存configs_batch中写入活动类型(活动名称以及进入和/退出)以及对应最小上报周期。例如天气应用,HIGH_SPEED_RAIL=20(活动名称为高铁),2(关注进入以及退出),60(上报周期为60s)。其中,在初始化阶段,内核层获取到共享内存的指针。
内核层向活动识别模块发送表示批量上报模式写入订阅参数,例如 IOCTL_AR_BATCH_REPORT_EVENT=515。
活动识别模块从共享内存configs_batch获取活动类型(活动名称以及进入和/或退出) 以及对应最小上报周期。在初始化阶段,活动识别模块获取到共享内存的指针。在初始化阶段,活动识别模块向物理传感器配置传感数据发送频率,物理传感器按照传感数据发送频率向活动识别模块发送传感数据。活动识别模块通过AlgDataCollect接口向活动识别算法模块发送传感数据。在应用启动状态或者开机状态时,活动识别模块可以向活动识别算法模块发送传感数据,并且以固定的周期从活动识别算法模块获取活动识别结果。
例如,活动识别算法模块通过getAlgoResult接口按照识别周期向活动识别模块发送识别结果(状态及可信度)。
活动识别模块进行逻辑处理,判断距离上次上报时间是否超过(大于或等于)最小上报周期,以及活动状态是否发生改变。当超过且活动状态发生改变时进行上报。例如,经过一分钟之后,终端进入乘坐高铁状态,算法输出活动识别结果为进入乘坐高铁状态。活动识别模块经过共享内存子区域uploads_batch将这一事件进行上报。当该最小上报周期内终端经过进入高铁、退出高铁、进入高铁等多种状态时,活动识别模块每一种状态分别对应的识别时间以及可信度进行上报。例如,识别结果为进入高铁活动状态,可信度百分比为100%,识别时间为终端开机时间后10s。
活动识别模块在共享内存uploads_batch写入最小上报周期内识别结果(状态及可信度)及对应识别时间。例如,识别结果为进入高铁活动状态,可信度百分比为100%,识别时间为终端开机后10s。
活动识别模块向内核层发IOCTL_AR_BATCH_REPORT_EVENT=1324。活动识别模块向内核层发送表示批量上报模式上报识别结果的消息,例如 IOCTL_AR_BATCH_REPORT_EVENT=1324。
内核层从共享内存uploads_batch中获取最小上报周期内识别结果(状态及可信度)及对应识别时间。例如,识别结果为进入高铁活动状态,可信度百分比为100%,识别时间为终端开机后10s。
内核层向HAL接口上报最小上报周期内识别结果(状态及可信度)及对应识别时间。内核层通过eventUpload接口向HAL接口上报最小上报周期内识别结果(状态及可信度)及对应识别时间。例如,识别结果为进入高铁活动状态,可信度百分比为100%,识别时间为终端开机后10s。
HAL接口向HIDL上报最小上报周期内识别结果(状态及可信度)及对应识别时间。HAL接口通过activityUpload接口向HIDL上报最小上报周期内识别结果(状态及可信度)及对应识别时间。例如,识别结果为进入高铁活动状态,可信度百分比为100%,识别时间为终端开机后10s。
HIDL向ARMS上报最小上报周期内识别结果(状态及可信度)及对应识别时间。HIDL通过moventUpload接口向ARMS上报最小上报周期内识别结果(状态及可信度)及对应识别时间。例如,识别结果为进入高铁活动状态,可信度百分比为100%,识别时间为终端开机后10s。
ARMS向应用上报最小上报周期内识别结果(状态及可信度)及对应识别时间。ARMS根据监听器(例如listener)通过batchCallback接口向应用上报最小上报周期内识别结果(状态及可信度)及对应识别时间。例如,识别结果为进入高铁活动状态,可信度百分比为100%,识别时间为终端开机后10s。
通常情况下,终端中的多个应用均可以通过批量上报的模式上报识别结果,下面结合图5对于两个个应用批量上报进行详细介绍。
应用A在ARMS注册事件回调监听器,用于获取返回的识别结果。例如,天气应用通过registerListener接口向ARMS注册用于活动识别的回调监听器,以使ARMS通过该回调监听器向应用返回识别结果。
应用A向ARMS下发应用订阅活动类型(活动名称以及进入和/或退出)、上报周期。例如,应用通过ARMS提供的SDK接口配置订阅参数,该订阅参数可以表示该天气应用关注终端是否处于乘坐高铁(活动名称为高铁,关注进入以及退出)、上报周期。例如 HIGH_SPEED_RAIL=20(活动名称为高铁),1(关注进入),60(上报周期为60s); HIGH_SPEED_RAIL=20(活动名称为高铁),0(关注退出),60(上报周期为60s)。
ARMS向HIDL下发应用订阅活动类型(活动名称以及进入和退出)、上报周期。ARMS经过enableMovement接口将多个应用分别订阅活动类型(活动名称以及进入和/或退出)、上报周期下发至HIDL层。例如天气应用,HIGH_SPEED_RAIL=20(活动名称为高铁), 1(关注进入),60(上报周期为60s);HIGH_SPEED_RAIL=20(活动名称为高铁), 0(关注退出),60(上报周期为60s)。
HIDL接口向HAL接口下发多个应用分别订阅活动类型(活动名称以及进入和退出)、上报周期。HIDL层进一步通过enableActivity接口将订阅活动类型(活动名称以及进入和/或退出)、上报周期下发给HAL接口。例如天气应用,HIGH_SPEED_RAIL=20(活动名称为高铁),1(关注进入),60(上报周期为60s);HIGH_SPEED_RAIL=20(活动名称为高铁),0(关注退出),60(上报周期为60s)。
HAL接口为将多个应用订阅活动类型中活动名称相同的活动确定最小上报周期。当仅有一个活动类型仅被一个应用所订阅时,上报周期为最小上报周期。例如天气应用,HIGH_SPEED_RAIL=20(活动名称为高铁),1(关注进入),60(上报周期为60s); HIGH_SPEED_RAIL=20(活动名称为高铁),0(关注退出),60(上报周期为60s)。
HAL接口向内核层下发活动类型(活动名称以及进入和退出)以及对应最小上报周期。 HAL接口经过enableEvent接口将活动类型(活动名称以及进入和/或退出)以及对应最小上报周期下发至内核层。例如天气应用,HIGH_SPEED_RAIL=20(活动名称为高铁),2 (关注进入以及退出),60(上报周期为60s);HIGH_SPEED_RAIL=20(活动名称为高铁),0(关注退出),60(上报周期为60s)。
内核层在共享内存configs_batch中写入活动类型(活动名称以及进入和/退出)以及对应最小上报周期。
应用B在ARMS注册事件回调监听器,用于获取返回的识别结果。例如,显示应用通过registerListener接口向ARMS注册用于活动识别的回调监听器,以使ARMS通过该回调监听器向应用返回识别结果。
应用B向ARMS下发应用订阅活动类型(活动名称以及进入和/或退出)、上报周期。应用通过ARMS提供的SDK接口配置订阅参数,该订阅参数可以表示该显示应用关注终端是否处于乘坐高铁(活动名称为高铁,关注进入以及退出)、上报周期。例如显示应用, HIGH_SPEED_RAIL=20(活动名称为高铁),1(关注进入),100(上报周期为100s)。
ARMS向HIDL下发多个应用分别订阅活动类型(活动名称以及进入)、上报周期。ARMS经过enableMovement接口将多个应用分别订阅活动类型(活动名称以及进入和/或退出)、上报周期下发至HIDL层。例如显示应用,HIGH_SPEED_RAIL=20(活动名称为高铁),1(关注进入),100(上报周期为100s)。
HIDL向HAL接口下发多个应用分别订阅活动类型(活动名称以及进入)、上报周期。HIDL层进一步通过enableActivity接口将订阅活动类型(活动名称以及进入)、上报周期下发给HAL接口。例如显示应用,HIGH_SPEED_RAIL=20(活动名称为高铁),1(关注进入),100(上报周期为100s)。
HAL接口为将多个应用订阅活动类型中活动名称相同的活动确定最小上报周期。例如,天气应用及显示应用,HIGH_SPEED_RAIL=20(活动名称为高铁),1(关注进入, 60(上报周期为60s);HIGH_SPEED_RAIL=20(活动名称为高铁),0(关注退出,60 (上报周期为60s)。此时,HAL接口在天气应用对应的高铁的周期60s和显示应用对应的高铁的周期100s中确定高铁的最小上报周期为100s。
HAL接口向内核层下发活动类型(活动名称以及进入和/或退出)以及对应最小上报周期。HAL接口经过enableEvent接口将活动类型(活动名称以及进入和退出)以及对应最小上报周期下发至内核层。例如,天气应用及显示应用,HIGH_SPEED_RAIL=20(活动名称为高铁),1(关注进入以及退出),60(上报周期为60s),HIGH_SPEED_RAIL =20(活动名称为高铁),1(关注进入以及退出),60(上报周期为60s)。
如图6所示,应用1订阅步行,周期为60s;骑车,周期为80s。应用2订阅跑步,周期为100s;步行,周期为120s。应用3订阅骑车,周期为40s;高铁,周期为20s;飞机,周期为10s。HAL接口根据HIDL下发的应用对应的活动类型以及周期,分别确定出活动类型对应的最小上报周期。在该实施例中,活动类型以及最小上报周期为:步行,最小上报周期60s;骑车,最小上报周期40s;跑步,最小上报周期100s;高铁,最小上报周期 20s;飞机,最小上报周期10s。然后将活动类型以及最小上报周期进行下发。活动识别模块根据识别结果以及该活动类型对应的最小上报周期决定是否进行上报。
后续过程与单个应用进行上报类似,订阅活动参数下发至活动识别模块,活动识别模块根据从活动识别算法模块获取的活动识别结果,结合最小上报周期决定是否上报,直至上报至ARMS。ARMS向应用A上报最小上报周期内识别结果(状态及可信度)及对应识别时间。ARMS根据监听器(例如listener)通过batchCallback接口向应用上报最小上报周期内识别结果(状态及可信度)及对应识别时间。例如,识别结果为进入高铁活动状态,可信度百分比为100%,识别时间为终端开机后10s。
ARMS向应用B上报最小上报周期内识别结果(状态及可信度)及对应识别时间。ARMS根据监听器(例如listener)通过batchCallback接口向应用上报最小上报周期内识别结果(状态及可信度)及对应识别时间。例如,识别结果为进入高铁活动状态,可信度百分比为100%,识别时间为终端开机后10s。批量上报的接口流程图如图5所示。
变化上报是指当订阅的活动状态发生变化时,例如从进入跑步状态变为进入静止状态,活动识别模块将变化后的结果进行上报的上报模式。
下面结合图7,对于一个应用进行变化上报的流程进行详细介绍。
应用在ARMS注册事件回调监听器,用于获取返回的识别结果。天气应用通过registerListener接口向ARMS注册用于活动识别的回调监听器,以使ARMS通过该回调监听器向应用返回识别结果。如图8为变化上报接口示意图。
应用向ARMS下发应用订阅活动类型(活动名称以及进入)。应用通过ARMS提供的SDK接口配置订阅参数,该订阅参数可以表示该天气应用关注终端是否处于乘坐高铁 (活动名称为高铁,关注进入)。例如HIGH_SPEED_RAIL=20(活动名称为高铁),1 (关注进入)。变化上报模式可以仅关注进入某一活动的情况,当终端进入某一应用关注的活动状态时,向该应用发送进入该活动的识别结果。在一些可能的实现方式中,订阅参数中包括活动名称即表示关注进入该活动状态。
ARMS向HIDL下发多个应用分别订阅活动类型(活动名称)。ARMS经过enableMovement接口将多个应用分别订阅活动类型(活动名称)至HIDL层。例如天气应用,HIGH_SPEED_RAIL=20(活动名称为高铁),1(关注进入)。
HIDL向HAL接口下发多个应用分别订阅活动类型(活动名称)。HIDL层进一步通过enableActivity接口将订阅活动类型(活动名称)下发给HAL接口。例如天气应用, HIGH_SPEED_RAIL=20(活动名称为高铁),1(关注进入)。
HAL接口向内核层下发活动类型(活动名称)。HAL接口经过enableEvent接口将活动类型下发至内核层。例如天气应用,HIGH_SPEED_RAIL=20(活动名称为高铁),1 (关注进入)。
内核层在共享内存uploads_on_change中写入活动类型。例如天气应用,HIGH_SPEED_RAIL=20(活动名称为高铁),1(关注进入)。在初始化阶段,内核层获取到共享内存的指针。
内核层向活动识别模块发送表示变化上报模式下订阅参数写入完成的消息,例如IOCTL_AR_ONCHANGE_REPORT_EVENT=516。
活动识别模块从共享内存uploads_on_change获取活动类型。在初始化阶段,内核层获取到共享内存的指针。
活动识别模块向活动识别算法模块发送传感数据。在初始化阶段,活动识别模块向物理传感器配置传感数据发送频率,物理传感器按照传感数据发送频率向活动识别模块发送传感数据。活动识别模块通过AlgDataCollect接口向活动识别算法模块发送传感数据。
活动识别算法模块按照识别周期向活动识别模块发送识别结果(状态及可信度)。活动识别算法模块通过getAlgoResult接口按照识别周期向活动识别模块发送识别结果(状态及可信度)。
活动识别模块判断识别结果是否发生变化,当发生变化时进行上报。例如,经过一分钟之后,终端进入乘坐高铁状态,算法输出活动识别结果为进入乘坐高铁状态。活动识别模块经过共享内存子区域uploads_on_change将这一事件进行上报。例如,识别结果为进入高铁活动状态,可信度百分比为100%,识别时间为终端开机后10s。
活动识别模块在共享内存configs_on_change写入识别结果(状态及可信度)及对应识别时间。例如,识别结果为进入高铁活动状态,可信度百分比为100%,识别时间为终端开机后10s。
活动识别模块向内核层发IOCTL_AR_ONCHANGE_REPORT_EVENT=1324。活动识别模块向内核层发送表示批量上报模式上报识别结果的消息,例如 IOCTL_AR_BATCH_REPORT_EVENT=1325。
内核层从共享内存configs_on_change中获取识别结果(状态及可信度)及对应识别时间。例如,识别结果为进入高铁活动状态,可信度百分比为100%,识别时间为终端开机后10s。
内核层向HAL接口上报识别结果(状态及可信度)及对应识别时间。内核层通过eventUpload接口向HAL接口上报识别结果(状态及可信度)及对应识别时间。例如,识别结果为进入高铁活动状态,可信度百分比为100%,识别时间为终端开机后10s。
HAL接口向HIDL上报识别结果(状态及可信度)及对应识别时间。HAL接口通过activityUpload接口向HIDL上报识别结果及对应时间。例如,识别结果为进入高铁活动状态,可信度百分比为100%,识别时间为终端开机后10s。
HIDL向ARMS上报识别结果及对应识别时间。HIDL通过moventUpload接口向ARMS上报识别结果及对应识别时间。例如,识别结果为进入高铁活动状态,可信度百分比为100%,识别时间为终端开机后10s。
ARMS向应用上报识别结果及对应识别时间。ARMS根据监听器(例如listener)通过on_changeCallback接口向应用上报识别结果及对应识别时间。例如,识别结果为进入高铁活动状态,可信度百分比为100%,识别时间为终端开机后10s。
下面结合图7,对于两个应用进行变化上报的流程进行详细介绍。
应用A在ARMS注册事件回调监听器,用于获取返回的识别结果。天气应用通过registerListener接口向ARMS注册用于活动识别的回调监听器,以使ARMS通过该回调监听器向应用返回识别结果。
应用A向ARMS下发应用订阅活动类型(活动名称)。应用通过ARMS提供的SDK 接口配置订阅参数,该订阅参数可以表示该天气应用关注终端是否处于乘坐高铁(活动名称为高铁,关注进入以及退出)。例如HIGH_SPEED_RAIL=20(活动名称为高铁),1 (关注进入)。变化上报模式下,仅关注进入该活动状态。
应用B在ARMS注册事件回调监听器,用于获取返回的识别结果。例如,显示应用通过registerListener接口向ARMS注册用于活动识别的回调监听器,以使ARMS通过该回调监听器向应用返回识别结果。
应用B向ARMS下发应用订阅活动类型。应用通过ARMS提供的SDK接口配置订阅参数,该订阅参数可以表示该显示应用关注终端是否处于乘坐高铁以及是否处于骑车。例如HIGH_SPEED_RAIL=20(活动名称为高铁),1(关注进入),RIDING=1(活动名称为骑车),1(关注进入)。
ARMS向HIDL下发多个应用分别订阅活动类型。ARMS经过enableMovement接口将多个应用分别订阅活动类型至HIDL层。例如天气应用,HIGH_SPEED_RAIL=20(活动名称为高铁),1(关注进入),以及显示应用,HIGH_SPEED_RAIL=20(活动名称为高铁),1(关注进入),RIDING=1(活动名称为骑车),1(关注进入)。
HIDL向HAL接口下发多个应用分别订阅活动类型。HIDL层进一步通过enableActivity 接口将订阅活动类型下发给HAL接口。例如天气应用,HIGH_SPEED_RAIL=20(活动名称为高铁),1(关注进),以及显示应用,HIGH_SPEED_RAIL=20(活动名称为高铁), 1(关注进入),RIDING=1(活动名称为骑车),1(关注进入)。
HAL接口向内核层下发活动类型。HAL接口经过enableEvent接口将活动类型下发至内核层。例如HIGH_SPEED_RAIL=20(活动名称为高铁),1(关注进入),对应天气应用与显示应用,RIDING=1(活动名称为骑车),1(关注进入),对应显示应用。如图 9所示。
内核层在共享内存uploads_on_change中写入活动类型(活动名称以及进入和/或退出)。例如HIGH_SPEED_RAIL=20(活动名称为高铁),1(关注进入),对应天气应用与显示应用,RIDING=1(活动名称为骑车),1(关注进入),对应显示应用。在初始化阶段,内核层获取到共享内存的指针。
内核层向活动识别模块发送表示变化上报模式下写入订阅参数完成的消息,例如IOCTL_AR_ONCHANGE_REPORT_EVENT=516。
活动识别模块从共享内存uploads_on_change获取活动类型(活动名称以及进入和/或退出)。在初始化阶段,内核层获取到共享内存的指针。
活动识别模块向活动识别算法模块发送传感数据。在初始化阶段,活动识别模块向物理传感器配置传感数据发送频率,物理传感器按照传感数据发送频率向活动识别模块发送传感数据。活动识别模块通过AlgDataCollect接口向活动识别算法模块发送传感数据。
活动识别算法模块按照识别周期向活动识别模块发送识别结果(状态及可信度)。活动识别算法模块通过getAlgoResult接口按照识别周期向活动识别模块发送识别结果(状态及可信度)。
活动识别模块判断识别结果是否发生变化,当发生变化时进行上报。例如,经过一分钟之后,终端进入乘坐高铁状态,算法输出活动识别结果为进入乘坐高铁状态。活动识别模块经过共享内存子区域uploads_on_change将这一事件进行上报。例如,识别结果为进入高铁活动状态,可信度百分比为100%,识别时间为终端开机后10s。又例如,识别结果为进入骑车活动状态,可信度百分比为95%,识别时间为终端开机后90s。
活动识别模块在共享内存configs_on_change写入识别结果(状态及可信度)及对应识别时间。例如,识别结果为进入高铁活动状态,可信度百分比为100%,识别时间为终端开机后10s。又例如,识别结果为进入骑车活动状态,可信度百分比为95%,识别时间为终端开机后90s。
活动识别模块向内核层发送表示批量上报模式上报识别结果的消息,例如IOCTL_AR_BATCH_REPORT_EVENT=1325。
内核层从共享内存configs_on_change中获取识别结果(状态及可信度)及对应识别时间。例如,识别结果为进入高铁活动状态,可信度百分比为100%,识别时间为终端开机后10s。又例如,识别结果为进入骑车活动状态,可信度百分比为95%,识别时间为终端开机后90s。
内核层向HAL接口上报识别结果(状态及可信度)及对应识别时间。内核层通过eventUpload接口向HAL接口上报识别结果及对应识别时间。例如,识别结果为进入高铁活动状态,可信度百分比为100%,识别时间为终端开机时间后10s。又例如,识别结果为进入骑车活动状态,可信度百分比为95%,识别时间为终端开机后90s。
HAL接口向HIDL上报识别结果及对应识别时间。HAL接口通过activityUpload接口向HIDL上报识别结果及对应时间。例如,识别结果为进入高铁活动状态,可信度百分比为100%,开始时间为终端开机后10s。又例如,识别结果为进入骑车活动状态,可信度百分比为95%,识别时间为终端开机后90s。
HIDL向ARMS上报识别结果及对应识别时间。HIDL通过moventUpload接口向ARMS上报识别结果及对应识别时间。例如,识别结果为进入高铁活动状态,可信度百分比为100%,识别时间为终端开机后10s。又例如,识别结果为进入骑车活动状态,可信度百分比为95%,识别时间为终端开机后90s。
ARMS向应用上报识别结果及对应识别时间。ARMS根据监听器(例如listener)通过onChangeCallback接口向应用上报识别结果(状态及可信度)及对应识别时间。例如,识别结果为进入高铁活动状态,可信度百分比为100%,识别时间为终端开机后10s,将对应的识别结果分别发送至天气应用和显示应用。又例如,识别结果为进入骑车活动状态,可信度百分比为95%,识别时间为终端开机后90s,将对应的识别结果发送至显示应用。
通过以上内容的描述,本申请实施例提供了一种活动识别方法,应用于电子设备,该电子设备包括第一处理器、第二处理器和至少一个物理传感器,第一处理器包括应用层、硬件抽象层和内核层,所述第二处理器包括活动识别模块和活动识别算法模块。具体地,活动识别模块获取硬件抽象层在接收到应用层中至少一个应用下发的第二订阅参数后确定的第一订阅参数,第一订阅参数包括活动标识和活动状态,然后判断是否满足上报条件,当满足上报条件时,活动识别模块将从活动识别算法模块获得的识别结果由内核层上报至硬件抽象层,然后通过硬件抽象层上报至应用层的至少一个应用。如此,第一处理器的应用层中应用下发的第二订阅参数经由抽象层确定后为第一订阅参数,然后逐层下发至第二处理器的活动识别模块,当满足上报条件时,活动识别模块将从活动识别算法模块获得的识别结果逐层上报至应用层的应用中,实现对于终端多种活动的活动识别。
本申请实施例还提供了一种电子设备,如图11所示,该电子设备可以包括:第一处理器1110、第二处理器1120以及至少一个物理传感器1130、存储器1140、一个或多个计算机程序1150。上述各器件可以通过一个或多个通信总线1160连接。其中该一个或多个计算机程序1150被存储在上述存储器1140中,并被配置为被该一个或多个处理器1120 执行,该一个或多个计算机程序1150包括指令,上述指令可以用于执行如图3相应实施例中终端执行的各个步骤。需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到终端,以使终端执行相应方法,在此不再赘述。
本实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中包括指令,当上述指令在终端上运行时,使得该终端执行图3中的相关方法步骤,以实现上述实施例中的方法。
本实施例还提供了一种包含指令的计算机程序产品,当该计算机程序产品在终端上运行时,使得该终端执行如图3中的相关方法步骤,以实现上述实施例中的方法。
在本实施例所提供的几个实施例中,应该理解到,所揭露的终端和方法,可以通过其它的方式实现。例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本实施例各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:快闪存储器、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (14)
1.一种活动识别方法,其特征在于,应用于电子设备,所述电子设备包括第一处理器、第二处理器和至少一个物理传感器,所述第一处理器包括应用层、硬件抽象层和内核层,所述第二处理器包括活动识别模块和活动识别算法模块,所述方法包括:
所述活动识别模块获取第一订阅参数,所述第一订阅参数包括活动标识和活动状态,所述第一订阅参数是所述硬件抽象层在接收到所述应用层中的至少一个应用下发的第二订阅参数后确定的;
所述活动识别模块判断是否满足上报条件,所述上报条件用于确定是否触发上报识别结果,所述识别结果为所述活动识别算法模块从所述活动识别模块获取所述至少一个物理传感器上报的传感数据,并通过活动识别算法对所述传感数据处理得到,所述传感数据是所述活动识别模块根据所述第一订阅参数,从所述物理传感器获取到的;
当满足所述上报条件时,所述活动识别模块将从所述活动识别算法模块获得的所述识别结果,由所述内核层上报至所述硬件抽象层,然后通过所述硬件抽象层上报至所述应用层的所述至少一个应用。
2.根据权利要求1所述的方法,其特征在于,所述电子设备还包括存储器,所述存储器包括共享内存,所述第一订阅参数由所述硬件抽象层下发至所述内核层,再由所述内核层写入所述共享内存;
所述活动识别模块获取第一订阅参数,包括:
所述活动识别模块从所述共享内存获取所述第一订阅参数。
3.根据权利要求2所述的方法,其特征在于,所述活动识别模块将从所述活动识别算法模块获得的所述识别结果,由所述内核层上报至所述硬件抽象层,包括:
所述活动识别模块将从所述活动识别算法模块获得的所述识别结果写入所述共享内存,由所述内核层从所述共享内存获取所述识别结果,并将所述识别结果上报至所述硬件抽象层。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述活动识别模块的上报模式为批量上报模式时,所述第一订阅参数还包括最小上报周期,所述第二订阅参数包括各活动对应的上报周期,所述最小上报周期为相同活动的上报周期的最小值;
所述上报条件包括:
距离上次上报时间大于或等于所述最小上报周期,且当前时间的活动状态相对于上次上报时间的活动状态发生变化。
5.根据权利要求1至3任一项所述的方法,其特征在于,所述活动识别模块的上报模式为变化上报模式时,所述第一订阅参数与所述第二订阅参数相同;
所述上报条件包括:
活动类型发生变化,所述活动类型由所述硬件抽象层根据所述第一订阅参数确定。
6.根据权利要求1至3任一项所述的方法,其特征在于,所述活动状态包括进入活动状态和/或退出活动状态。
7.根据权利要求6所述的方法,其特征在于,所述进入活动状态包括进入乘车状态、进入骑车状态、进入步行状态、进入跑步状态、进入静止状态、进入躺下状态或者进入电梯状态中的任一种。
8.根据权利要求1所述的方法,其特征在于,所述识别结果包括由所述传感数据识别得到的所述活动状态以及识别时间。
9.根据权利要求2或3所述的方法,其特征在于,所述活动识别模块通过以下方式实现初始化:
所述活动识别模块调用传感器注册接口发布所述活动识别模块的参数;
所述活动识别模块调用内存地址获取接口获取共享内存指针,所述共享内存指针用于访问所述共享内存;
所述活动识别模块配置传感数据发送频率,以用于接收所述至少一个物理传感器按照所述传感数据发送频率发送的传感数据;
所述活动识别模块设置定时器,以用于根据所述定时器周期性地从所述活动识别算法模块获取所述识别结果。
10.根据权利要求2或3所述的方法,其特征在于,所述活动识别模块通过以下方式实现销毁:
所述活动识别模块调用传感器释放接口销毁已发布的所述活动识别模块的参数;
所述活动识别模块将共享内存指针清零;
所述活动识别模块通过所述传感器释放接口停止获取传感数据;
所述活动识别模块取消定时器,以停止从所述活动识别算法模块获取所述识别结果。
11.根据权利要求1至3任一项所述的方法,其特征在于,所述第一处理器为应用处理器,所述第二处理器为系统协处理器。
12.一种电子设备,其特征在于,所述电子设备包括第一处理器、第二处理器和至少一个物理传感器,所述第二处理器和所述第一处理器、所述至少一个物理传感器通信,所述第二处理器用于执行计算机程序,以执行如权利要求1至11任一项所述的方法。
13.一种芯片,其特征在于,应用于电子设备,所述芯片包括第二处理器和通信接口,所述第二处理器通过所述通信接口和所述电子设备的第一处理器、所述电子设备的至少一个物理传感器通信,所述第二处理器用于执行计算机程序,以执行如权利要求1至11任一项所述的方法。
14.一种计算机存储介质,其特征在于,包括计算机指令,当所述计算机指令在电子设备运行时,所述电子设备执行如权利要求1至11中任一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111456938 | 2021-12-01 | ||
CN2021114569380 | 2021-12-01 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114416389A CN114416389A (zh) | 2022-04-29 |
CN114416389B true CN114416389B (zh) | 2023-03-03 |
Family
ID=81265141
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111517869.XA Active CN114416389B (zh) | 2021-12-01 | 2021-12-13 | 一种活动识别方法以及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114416389B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116700463B (zh) * | 2022-09-22 | 2024-04-02 | 荣耀终端有限公司 | 一种活动识别方法及相关设备 |
CN117271170B (zh) * | 2023-11-23 | 2024-04-16 | 荣耀终端有限公司 | 活动事件处理方法及相关设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104680046A (zh) * | 2013-11-29 | 2015-06-03 | 华为技术有限公司 | 一种用户活动识别方法及装置 |
CN105867655A (zh) * | 2016-03-31 | 2016-08-17 | 乐视控股(北京)有限公司 | 用户自定义动作控制智能移动终端闹钟的方法及装置 |
CN108810272A (zh) * | 2018-06-07 | 2018-11-13 | 郑州信大先进技术研究院 | 基于移动终端多传感器的行为识别模型训练方法及装置 |
CN111050273A (zh) * | 2019-08-02 | 2020-04-21 | 广东星舆科技有限公司 | 一种基于android系统实现智能终端高精度定位的方法及系统 |
US20210200496A1 (en) * | 2019-12-26 | 2021-07-01 | Seiko Epson Corporation | Data processing device, display system, and data processing method |
WO2021232197A1 (zh) * | 2020-05-18 | 2021-11-25 | Oppo广东移动通信有限公司 | 设备状态监控方法、装置、设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110035147A (zh) * | 2019-03-19 | 2019-07-19 | 华为技术有限公司 | 一种保护电子设备可活动部分的方法及电子设备 |
-
2021
- 2021-12-13 CN CN202111517869.XA patent/CN114416389B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104680046A (zh) * | 2013-11-29 | 2015-06-03 | 华为技术有限公司 | 一种用户活动识别方法及装置 |
CN105867655A (zh) * | 2016-03-31 | 2016-08-17 | 乐视控股(北京)有限公司 | 用户自定义动作控制智能移动终端闹钟的方法及装置 |
CN108810272A (zh) * | 2018-06-07 | 2018-11-13 | 郑州信大先进技术研究院 | 基于移动终端多传感器的行为识别模型训练方法及装置 |
CN111050273A (zh) * | 2019-08-02 | 2020-04-21 | 广东星舆科技有限公司 | 一种基于android系统实现智能终端高精度定位的方法及系统 |
US20210200496A1 (en) * | 2019-12-26 | 2021-07-01 | Seiko Epson Corporation | Data processing device, display system, and data processing method |
WO2021232197A1 (zh) * | 2020-05-18 | 2021-11-25 | Oppo广东移动通信有限公司 | 设备状态监控方法、装置、设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
基于智能手机传感器的基础行为识别方法研究;孔菁 等;《计算机应用研究》;20190123;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114416389A (zh) | 2022-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114416389B (zh) | 一种活动识别方法以及相关设备 | |
US11947974B2 (en) | Application start method and electronic device | |
US20220350602A1 (en) | Multi-Thread Synchronization Method and Electronic Device | |
CN110119282B (zh) | 一种基于通用嵌入式计算机的物联网终端及系统 | |
WO2022247446A1 (zh) | 一种性能优化方法以及相关设备 | |
CN115016631B (zh) | 进程调度方法和终端设备 | |
CN117666755A (zh) | 任务调度方法及相关设备 | |
CN113760081A (zh) | 基于业务的耗电处理方法和终端设备 | |
CN116661882B (zh) | 预加载小程序的方法、电子设备及存储介质 | |
CN116708958B (zh) | 马达控制方法及电子设备 | |
CN114816031B (zh) | 终端设备的省电方法、终端设备及介质 | |
EP4332756A1 (en) | Application deployment method, distributed operation system, electronic device, and storage medium | |
CN117407127A (zh) | 线程调度方法及电子设备 | |
CN111367683A (zh) | 一种结果获取方法、装置及设备 | |
CN116709180A (zh) | 地理围栏的生成方法及服务器 | |
CN116700913A (zh) | 嵌入式文件系统的调度方法、设备及存储介质 | |
CN115113867A (zh) | 电子设备及其免安装应用的处理方法、介质 | |
CN112817715A (zh) | 任务切换方法、装置及设备 | |
CN117729561B (zh) | 系统升级方法、终端及存储介质 | |
CN116055443B (zh) | 识别社交场景的方法、电子设备及计算机可读存储介质 | |
CN117857646B (zh) | 数据网络共享方法、电子设备及存储介质 | |
CN112764885B (zh) | 对象的访问方法、装置、电子设备、存储介质和程序产品 | |
CN117131240B (zh) | 服务推荐方法、电子设备及计算机可读存储介质 | |
CN116795557B (zh) | 通信方法、电子设备及可读存储介质 | |
CN116095230B (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 |