- 版本:1.0.0
- GitHub:
- NPM: https://npmjs.net.cn/package/%40awarns%2Fhuman-activity
- 下载
- 前一天:0
- 前一周:0
- 前一个月:0
@awarns/human-activity
本模块允许检测和响应用户(或携带手机的物体)执行的活动变化:静止、行走、跑步、骑自行车或处于车内。根据检测机制的粒度,甚至可以检测用户的站立行为。
此插件作为 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
事件外,这些事件是:startDetectingCoarseHumanActivityChangesFinished
和stopDetectingCoarseHumanActivityChangesFinished
。然而,一旦启动任务运行完成,一旦检测到相应的动作,内部监听器将发出相关事件。以下列出了这些事件。
在应用程序任务图中的示例用法
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
事件外,这些任务在执行完成后不会产生显著事件,这些事件是:startDetectingIntermediateHumanActivityChangesFinished
和stopDetectingIntermediateHumanActivityChangesFinished
。然而,一旦启动任务运行完成,一旦检测到相应的动作,内部监听器将发出相关事件。以下列出了这些事件。
在应用程序任务图中的示例用法
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 |
变化 |
可以是start 或end 。表示变化是否反映活动开始或结束 |
timestamp |
日期 |
检测到变化时的本地时间 |
activity |
HumanActivity |
检测到的活动。可以是上下文-apis插件支持的任何活动(请参阅context-apis API文档中关于人类活动的部分,以获取完整列表) |
confidence |
数字 |
活动检测机制报告的检测动作的概率值。范围从0到1。此字段在由粗略检测机制报告的记录中将包含未定义的值 |
许可证
Apache许可证版本2.0