目录

获取用户动作开发指导

场景介绍

当应用需要获取用户动作时,可以调用motion模块,例如判断用户当前是用左手还是右手操作设备屏幕。

详细的接口介绍请参考@ohos.multimodalAwareness.motion (动作感知能力)。

从API version 15开始,支持获取操作手状态。从API version 20开始,支持获取握持手状态。

获取操作手状态开发指导

[h2]接口说明

接口名 描述
on(type:'operatingHandChanged',callback:Callback<OperatingHandStatus>):void; 订阅操作手感知,操作手结果通过callback返回。
off(type: 'operatingHandChanged', callback?: Callback<OperatingHandStatus>): void; 取消订阅操作手感知。
getRecentOperatingHandStatus(): OperatingHandStatus; 获取最新的操作手状态。

[h2]需要权限

使用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"
    }
  ]

[h2]约束与限制

[h2]开发步骤

  1. 导入模块。

    import { motion } from '@kit.MultimodalAwarenessKit';
    import { BusinessError } from '@kit.BasicServicesKit';
  2. 定义回调函数接收操作手结果

    let callback:Callback<motion.OperatingHandStatus> = (data:motion.OperatingHandStatus) => {
      console.info('callback succeeded' + data);
    };
  3. 订阅操作手感知

    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);
      // ...
    }
  4. 取消订阅操作手感知

    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);
      // ...
    }
  5. 获取最新操作手状态

    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);
      // ...
    }

获取握持手状态开发指导

[h2]接口说明

接口名 描述
on(type:'holdingHandChanged',callback:Callback<HoldingHandStatus>): void; 订阅握持手感知,感知结果通过callback返回。
off(type: 'holdingHandChanged', callback?: Callback<HoldingHandStatus>): void; 取消订阅握持手感知。

[h2]需要权限

使用motion模块获取用户握持手时,需要权限: ohos.permission.DETECT_GESTURE,具体申请方式请参考声明权限。

"requestPermissions":[
    {
      "name" : "ohos.permission.DETECT_GESTURE"
    }
  ]

[h2]约束与限制

[h2]开发步骤

  1. 导入模块。

    import { motion } from '@kit.MultimodalAwarenessKit';
    import { BusinessError } from '@kit.BasicServicesKit';
  2. 定义回调函数接收握持手结果

    let callback:Callback<motion.HoldingHandStatus> = (data:motion.HoldingHandStatus) => {
      console.info('callback succeeded' + data);
    };
  3. 订阅握持手感知

    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);
      // ...
    }
  4. 取消订阅握持手感知

    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);
      // ...
    }