当应用需要获取用户动作时,可以调用motion模块,例如判断用户当前是用左手还是右手操作设备屏幕。
详细的接口介绍请参考@ohos.multimodalAwareness.motion (动作感知能力)。
从API version 15开始,支持获取操作手状态。从API version 20开始,支持获取握持手状态。
| 接口名 | 描述 |
|---|---|
| on(type:'operatingHandChanged',callback:Callback<OperatingHandStatus>):void; | 订阅操作手感知,操作手结果通过callback返回。 |
| off(type: 'operatingHandChanged', callback?: Callback<OperatingHandStatus>): void; | 取消订阅操作手感知。 |
| getRecentOperatingHandStatus(): OperatingHandStatus; | 获取最新的操作手状态。 |
使用motion模块获取用户操作手时,需要权限:ohos.permission.ACTIVITY_MOTION 或 ohos.permission.DETECT_GESTURE,具体申请方式请参考声明权限。
- "requestPermissions":[
- {
- "name" : "ohos.permission.ACTIVITY_MOTION",
- // reason和usedScene按需填写
- "reason" : "", // 用于应用上架校验
- "usedScene" : {
- "abilities" : [
- "" // 使用权限的名称
- ],
- "when" : "" // 调用时机
- },
- },
- {
- "name" : "ohos.permission.DETECT_GESTURE"
- }
- ]
此功能如果设备不支持,将返回801错误码。
指关节操作不属于使用手操作场景。
窗口旋转场景,多指同时操作场景不支持。
能力有效范围:不包含距离屏幕边缘8mm内区域。
结果上报条件:首次订阅或切换操作手后,连续点数次触发。
触控响应说明:屏幕四周边缘8mm范围内不支持触控响应。
导入模块。
- import { motion } from '@kit.MultimodalAwarenessKit';
- import { BusinessError } from '@kit.BasicServicesKit';
定义回调函数接收操作手结果
- let callback:Callback<motion.OperatingHandStatus> = (data:motion.OperatingHandStatus) => {
- console.info('callback succeeded' + data);
- };
订阅操作手感知
- try {
- motion.on('operatingHandChanged', callback);
- console.info('on succeeded');
- // ...
- } catch (err) {
- let error = err as BusinessError;
- console.error('Failed on and err code is ' + error.code);
- // ...
- }
取消订阅操作手感知
- try {
- motion.off('operatingHandChanged');
- console.info('off succeeded');
- // ...
- } catch (err) {
- let error = err as BusinessError;
- console.error('Failed off and err code is ' + error.code);
- // ...
- }
获取最新操作手状态
- try {
- let data:motion.OperatingHandStatus = motion.getRecentOperatingHandStatus();
- console.info('get succeeded' + data);
- // ...
- } catch (err) {
- let error = err as BusinessError;
- console.error('Failed get and err code is ' + error.code);
- // ...
- }
| 接口名 | 描述 |
|---|---|
| on(type:'holdingHandChanged',callback:Callback<HoldingHandStatus>): void; | 订阅握持手感知,感知结果通过callback返回。 |
| off(type: 'holdingHandChanged', callback?: Callback<HoldingHandStatus>): void; | 取消订阅握持手感知。 |
使用motion模块获取用户握持手时,需要权限: ohos.permission.DETECT_GESTURE,具体申请方式请参考声明权限。
- "requestPermissions":[
- {
- "name" : "ohos.permission.DETECT_GESTURE"
- }
- ]
导入模块。
- import { motion } from '@kit.MultimodalAwarenessKit';
- import { BusinessError } from '@kit.BasicServicesKit';
定义回调函数接收握持手结果
- let callback:Callback<motion.HoldingHandStatus> = (data:motion.HoldingHandStatus) => {
- console.info('callback succeeded' + data);
- };
订阅握持手感知
- try {
- motion.on('holdingHandChanged', callback);
- console.info('on succeeded');
- // ...
- } catch (err) {
- let error = err as BusinessError;
- console.error('Failed on and err code is ' + error.code);
- // ...
- }
取消订阅握持手感知
- try {
- motion.off('holdingHandChanged');
- console.info('off succeeded');
- // ...
- } catch (err) {
- let error = err as BusinessError;
- console.error('Failed off and err code is ' + error.code);
- // ...
- }
合作咨询
我们的专家服务团队将竭诚为您提供专业的合作咨询服务
解决方案
精准高效的一站式服务支持,助力开发者商业成功