@awarns/human-activity
AwarNS 框架包,允许检测和响应用户活动变化
npm i --save @awarns/human-activity

@awarns/human-activity

npm (scoped) npm

本模块允许检测和响应用户(或携带手机的物体)执行的活动变化:静止、行走、跑步、骑自行车或处于车内。根据检测机制的粒度,甚至可以检测用户的站立行为。

此插件作为 nativescript-context-apis 插件(来自同一作者)的包装器,提供人类活动变化检测任务。即使在后台也能获取人类活动更新。

使用以下命令行指令安装插件

ns plugin add @awarns/human-activity

用法

安装和设置此插件后,您将可以访问两个任务组,以不同粒度级别开始和停止监听人类活动更新。收到的更新将是下面描述的 HumanActivityChange 记录。

设置

此插件要求您在框架初始化期间注册其加载器,如下所示

// ... platform imports
import { awarns } from '@awarns/core';
import { demoTasks } from '../tasks';
import { demoTaskGraph } from '../graph';
import { registerHumanActivityPlugin } from '@awarns/human-activity';

awarns
.init(
demoTasks,
demoTaskGraph,
[
registerHumanActivityPlugin(),
]
)
// ... handle initialization promise

插件加载器参数

此插件加载器不接收任何参数。

任务

任务名称 描述
startDetectingCoarseHumanActivityChanges 允许以粗粒度级别开始检测人类活动变化。此粒度级别的意思是,活动变化将在活动开始后至少1分钟才报告。相比之下,检测机制对活动中的暂停更为鲁棒。这意味着,例如,如果用户在行走时停下来几秒钟,或者在车内停车等待红灯,这些微妙的变化不会在这个粒度级别被检测到
stopDetectingCoarseHumanActivityChanges 上一任务的补充。允许根据需要停止接收粗粒度活动更新
startDetectingIntermediateHumanActivityChanges 允许以中间粒度级别开始检测人类活动变化。此粒度级别的意思是,一旦检测到活动变化,就会报告。相比之下,检测机制对活动中的暂停更为敏感。这意味着,例如,如果用户在行走时停下来几秒钟,或者在车内停车等待红灯,这些微妙的变化将检测为变为静止的转变。由于这种额外的粒度,此活动检测机制能够检测用户站立动作(手机突然倾斜)
stopDetectingIntermediateHumanActivityChanges 上一任务的补充。允许根据需要停止接收中间活动更新

注意:所有任务都需要 物理活动访问权限 才能执行。每个任务将在框架初始化期间自动请求缺少的权限

开始/停止接收粗粒度人类活动变化更新

要注册这些任务以供使用,您只需在应用程序的任务列表中导入它们并调用它们的生成器函数即可

import { Task } from '@awarns/core/tasks';
import {
startDetectingCoarseHumanActivityChangesTask,
stopDetectingCoarseHumanActivityChangesTask,
} from '@awarns/human-activity';

export const demoTasks: Array<Task> = [
startDetectingCoarseHumanActivityChangesTask(),
stopDetectingCoarseHumanActivityChangesTask(),
];

任务生成器参数

这些任务生成器不接收任何参数

任务输出事件

这些任务在执行完成后不会产生显著事件,除了常规的 {task-name}Finished 事件外,这些事件是:startDetectingCoarseHumanActivityChangesFinishedstopDetectingCoarseHumanActivityChangesFinished

然而,一旦启动任务运行完成,一旦检测到相应的动作,内部监听器将发出相关事件。以下列出了这些事件。

在应用程序任务图中的示例用法

on('startEvent', run('startDetectingCoarseHumanActivityChanges'));
on('stopEvent', run('stopDetectingCoarseHumanActivityChanges'));

on('userStartedBeingStill', run('writeRecords'));
on('userFinishedBeingStill', run('writeRecords'));

on('userStartedWalking', run('writeRecords'));
on('userFinishedWalking', run('writeRecords'));

on('userStartedRunning', run('writeRecords'));
on('userFinishedRunning', run('writeRecords'));

on('userStartedRidingABicycle', run('writeRecords'));
on('userFinishedRidingABicycle', run('writeRecords'));

on('userStartedBeingInAVehicle', run('writeRecords'));
on('userFinishedBeingInAVehicle', run('writeRecords'));

注意:要使用writeRecords任务,必须安装并配置持久化包。请参阅持久化包文档

在中级水平上开始/停止接收人类活动变化更新

要注册这些任务以供使用,您只需在应用程序的任务列表中导入它们并调用它们的生成器函数即可

import { Task } from '@awarns/core/tasks';
import {
startDetectingIntermediateHumanActivityChangesTask,
stopDetectingIntermediateHumanActivityChangesTask,
} from '@awarns/human-activity';

export const demoTasks: Array<Task> = [
startDetectingIntermediateHumanActivityChangesTask(),
stopDetectingIntermediateHumanActivityChangesTask(),
];

任务生成器参数

这些任务生成器不接收任何参数

任务输出事件

除了常规的{任务名称}Finished事件外,这些任务在执行完成后不会产生显著事件,这些事件是:startDetectingIntermediateHumanActivityChangesFinishedstopDetectingIntermediateHumanActivityChangesFinished

然而,一旦启动任务运行完成,一旦检测到相应的动作,内部监听器将发出相关事件。以下列出了这些事件。

在应用程序任务图中的示例用法

on('startEvent', run('startDetectingCoarseHumanActivityChanges'));
on('stopEvent', run('stopDetectingCoarseHumanActivityChanges'));

on('userStartedBeingStill', run('writeRecords'));
on('userFinishedBeingStill', run('writeRecords'));

on('userStartedStandingUp', run('writeRecords'));
on('userFinishedStandingUp', run('writeRecords'));

on('userStartedWalking', run('writeRecords'));
on('userFinishedWalking', run('writeRecords'));

on('userStartedRunning', run('writeRecords'));
on('userFinishedRunning', run('writeRecords'));

on('userStartedRidingABicycle', run('writeRecords'));
on('userFinishedRidingABicycle', run('writeRecords'));

on('userStartedBeingInAVehicle', run('writeRecords'));
on('userFinishedBeingInAVehicle', run('writeRecords'));

注意:要使用writeRecords任务,必须安装并配置持久化包。请参阅持久化包文档

事件

名称 有效载荷 描述
用户开始静止 HumanActivityChange 表示手机用户已停止移动
用户完成静止 HumanActivityChange 表示手机用户已开始移动
用户开始站立 HumanActivityChange 表示手机用户已开始站立
用户完成站立 HumanActivityChange 表示手机用户已完成站立
用户开始行走 HumanActivityChange 表示手机用户已开始行走
用户完成行走 HumanActivityChange 表示手机用户已停止行走
用户开始跑步 HumanActivityChange 表示手机用户已开始跑步
用户完成跑步 HumanActivityChange 表示手机用户已停止跑步
用户开始骑自行车 HumanActivityChange 表示手机用户已开始骑自行车
用户完成骑自行车 HumanActivityChange 表示手机用户已停止骑自行车
用户开始乘坐车辆 HumanActivityChange 表示手机用户已开始乘坐车辆
用户完成乘坐车辆 HumanActivityChange 表示手机用户已停止乘坐车辆

记录

HumanActivityChange

属性 类型 描述
id 字符串 记录的唯一ID
type 字符串 始终为human-activity
change 变化 可以是startend。表示变化是否反映活动开始或结束
timestamp 日期 检测到变化时的本地时间
activity HumanActivity 检测到的活动。可以是上下文-apis插件支持的任何活动(请参阅context-apis API文档中关于人类活动的部分,以获取完整列表)
confidence 数字 活动检测机制报告的检测动作的概率值。范围从0到1。此字段在由粗略检测机制报告的记录中将包含未定义的值

许可证

Apache许可证版本2.0