多模态融合感知是基于设备的泛传感器数据,比如加速度计,陀螺仪等器件,进行活动,状态,姿态等的识别,例如,提供设备是否静止的感知事件。
运作机制
多模态融合感知能力作为系统为应用提供的一种基础服务,需要应用在所使用的业务场景,向系统主动发起订阅服务,并在业务场景结束时,主动取消订阅服务,在此过程中系统会将实时的设备状态结果上报给应用。
约束与限制
使用多模融合感知,需要用户进行相关权限的申请。设备需要支持对应能力所需的传感器。
Stationary开发指导
场景介绍
当应用需要获取当前设备状态时,可以调用Stationary模块,例如:需要判断当前设备处于绝对静止状态或者相对静止状态。
设备状态类型参数说明
名称 | 描述 |
---|---|
still | 绝对静止。 |
relativeStill | 相对静止。 |
订阅设备状态事件参数说明
变量 | 值 | 说明 |
---|---|---|
ENTER | 1 | 订阅进入事件。 |
EXIT | 2 | 订阅退出事件。 |
ENTER_EXIT | 3 | 订阅进入和退出事件。 |
返回设备状态参数说明
变量 | 值 | 说明 |
---|---|---|
ENTER | 1 | 返回进入状态。 |
EXIT | 2 | 返回退出状态。 |
接口说明
接口名 | 描述 |
---|---|
on(activity: ActivityType, event: ActivityEvent, reportLatencyNs: number, callback: Callback): void | 订阅设备状态,结果通过callback返回。 |
once(activity: ActivityType, callback: Callback): void | 查询设备状态,结果通过callback返回。 |
off(activity: ActivityType, event: ActivityEvent, callback?: Callback): void | 取消订阅设备状态。 |
约束与限制
设备需要支持加速度传感器。
目前只提供了算法框架,api接口测试框架的调用返回结果为:data={“type”:3,“value”:-1};
如需相对静止和绝对静止能力,则具体算法需要开发者自己在device_status/libs/src/algorithm实现,可参考案例如下:
algoPara_.resultantAcc =
sqrt((algoPara_.x * algoPara_.x) + (algoPara_.y * algoPara_.y) + (algoPara_.z * algoPara_.z));
if ((algoPara_.resultantAcc > RESULTANT_ACC_LOW_THRHD) && (algoPara_.resultantAcc < RESULTANT_ACC_UP_THRHD)) {
if (state_ == STILL) {
return;
}
counter_--;
if (counter_ == 0) {
counter_ = COUNTER_THRESHOLD;
UpdateStateAndReport(VALUE_ENTER, STILL, TYPE_ABSOLUTE_STILL);
}
} else {
counter_ = COUNTER_THRESHOLD;
if (state_ == UNSTILL) {
return;
}
UpdateStateAndReport(VALUE_EXIT, UNSTILL, TYPE_ABSOLUTE_STILL);
}
开发步骤
- 订阅绝对静止的进入事件,1秒上报一次。
import { stationary } from '@kit.MultimodalAwarenessKit';
import { BusinessError } from '@kit.BasicServicesKit';
let reportLatencyNs = 1000000000;
try {
stationary.on('still', stationary.ActivityEvent.ENTER, reportLatencyNs, (data) => {
console.log('data='+ JSON.stringify(data));
})
} catch (error) {
let message = (error as BusinessError).message;
console.error('stationary on failed:' + message);
}
- 查询绝对静止状态的进入事件。
import { stationary } from '@kit.MultimodalAwarenessKit';
import { BusinessError } from '@kit.BasicServicesKit';
try {
stationary.once('still', (data) => {
console.log('data='+ JSON.stringify(data));
})
} catch (error) {
let message = (error as BusinessError).message;
console.error('stationary once failed:' + message);
}
- 取消订阅绝对静止状态的进入事件。
import { stationary } from '@kit.MultimodalAwarenessKit';
import { BusinessError } from '@kit.BasicServicesKit';
try {
stationary.off('still', stationary.ActivityEvent.ENTER, (data) => {
console.log('data='+ JSON.stringify(data));
})
} catch (error) {
let message = (error as BusinessError).message;
console.error('stationary off failed:' + message);
}
最后呢
很多开发朋友不知道需要学习那些鸿蒙技术?鸿蒙开发岗位需要掌握那些核心技术点?为此鸿蒙的开发学习必须要系统性的进行。
而网上有关鸿蒙的开发资料非常的少,假如你想学好鸿蒙的应用开发与系统底层开发。你可以参考这份资料,少走很多弯路,节省没必要的麻烦。由两位前阿里高级研发工程师联合打造的《鸿蒙NEXT星河版OpenHarmony开发文档》里面内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(Harmony NEXT)技术知识点
如果你是一名Android、Java、前端等等开发人员,想要转入鸿蒙方向发展。可以直接领取这份资料辅助你的学习。下面是鸿蒙开发的学习路线图。
针对鸿蒙成长路线打造的鸿蒙学习文档。话不多说,我们直接看详细鸿蒙(OpenHarmony )手册(共计1236页)与鸿蒙(OpenHarmony )开发入门视频,帮助大家在技术的道路上更进一步。
- 《鸿蒙 (OpenHarmony)开发学习视频》
- 《鸿蒙生态应用开发V2.0白皮书》
- 《鸿蒙 (OpenHarmony)开发基础到实战手册》
- OpenHarmony北向、南向开发环境搭建
- 《鸿蒙开发基础》
- 《鸿蒙开发进阶》
- 《鸿蒙开发实战》
总结
鸿蒙—作为国家主力推送的国产操作系统。部分的高校已经取消了安卓课程,从而开设鸿蒙课程;企业纷纷跟进启动了鸿蒙研发。
并且鸿蒙是完全具备无与伦比的机遇和潜力的;预计到年底将有 5,000 款的应用完成原生鸿蒙开发,未来将会支持 50 万款的应用。那么这么多的应用需要开发,也就意味着需要有更多的鸿蒙人才。鸿蒙开发工程师也将会迎来爆发式的增长,学习鸿蒙势在必行! 自↓↓↓拿