@ohos.vibrator (振动)

vibrator模块提供控制设备马达振动的能力。包括启动指定时长、预置效果、自定义文件等模式的振动;停止指定时长、预置效果或所有模式的振动。

说明:

本模块首批接口从API version 22开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

依赖权限

Android平台

说明: 在Android平台上使用震动接口时,需要配置震动权限。如果没有配置震动权限会导致运行异常

配置方法: 在.arkui-x/android/app/src/main/AndroidManifest.xml的uses-permission字段中加入android.permission.VIBRATE。

示例如下:

    <uses-permission android:name="android.permission.VIBRATE" />

导入模块

import { vibrator } from '@kit.SensorServiceKit';

vibrator.startVibration22+

startVibration(effect: VibrateEffect, attribute: VibrateAttribute, callback: AsyncCallback<void>): void

根据指定的振动效果和振动属性触发马达振动。使用callback异步回调。

需要权限:ohos.permission.VIBRATE

原子化服务API:从API Version 22开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Sensors.MiscDevice

支持平台:Android、iOS 参数

参数名 类型 必填 说明 Android平台 iOS平台
effect VibrateEffect 马达振动效果,支持四种:1、VibratePreset:按照预置振动效果触发马达振动,适用于交互反馈类的短振场景(如点击长按,滑动,拖拽等),为确保与系统整体振感反馈体验风格一致,推荐使用此接口;2、VibrateFromFile:按照文件形式定制自定义振动效果触发马达振动,适用于匹配复杂场景效果的交互反馈(如表情包触发的拟真效果、游戏场景/操作反馈);3、VibrateTime:按照指定时长触发马达振动,仅对振动时长进行启动或停止控制,满足基础功能,无法对振动强度、频率等维度进行个性化设置,此种振动调节不够细腻,无法满足精致体验;4、VibrateFromPattern22+:按照自定义振动效果触发马达振动。使用场景和VibrateFromFile一致。VibrateFromFile是面向文件中提前定制好的效果,将具体的振动事件以文件描述符形式传递到接口中;VibrateFromPattern提供更加灵活的振动事件排列组合,将振动事件以振动事件数组的形式传递到接口中。 支持 支持
attribute VibrateAttribute 马达振动属性。 支持 支持
callback AsyncCallback 回调函数。当马达振动成功,err为undefined;否则为错误对象,包含错误码和错误信息。 支持 支持

错误码

以下错误码的详细介绍请参见振动错误码通用错误码。错误码和错误信息会以异常的形式抛出,调用接口时需要使用try catch对可能出现的异常进行捕获操作。

错误码ID 错误信息
201 Permission denied.
401 Parameter error.Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed.
801 Capability not supported.
14600101 Device operation failed.

示例

1.按照预置振动效果触发马达振动:

import { vibrator } from '@kit.SensorServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';

// 使用try catch对可能出现的异常进行捕获
try {
  // 查询是否支持'haptic.notice.success'
  vibrator.isSupportEffect('haptic.notice.success', (err: BusinessError, state: boolean) => {
    if (err) {
      console.error(`Failed to query effect. Code: ${err.code}, message: ${err.message}`);
      return;
    }
    console.info('Succeed in querying effect');
    if (state) {
      try {
        vibrator.startVibration({
          type: 'preset',
          effectId: 'haptic.notice.success',
          count: 1,
        }, {
          usage: 'notification' // 根据实际选择类型归属不同的开关管控
        }, (error: BusinessError) => {
          if (error) {
            console.error(`Failed to start vibration. Code: ${error.code}, message: ${error.message}`);
 		   return;
          }
          console.info('Succeed in starting vibration');
       
        });
      } catch (err) {
        let e: BusinessError = err as BusinessError;
 	   console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
      }
    }
  })
} catch (error) {
  let e: BusinessError = error as BusinessError;
  console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
}

2.按照自定义振动配置文件触发马达振动:

import { vibrator } from '@kit.SensorServiceKit';
import { resourceManager } from '@kit.LocalizationKit';
import { BusinessError } from '@kit.BasicServicesKit';

const fileName: string = 'xxx.json';

@Entry
@Component
struct Index {
  uiContext = this.getUIContext();

  build() {
    Row() {
      Column() {
        Button('alarm-file')
          .onClick(() => {
            let rawFd: resourceManager.RawFileDescriptor | undefined = this.uiContext.getHostContext()?.resourceManager.getRawFdSync(fileName);
            if (rawFd != undefined) {
              try {
                vibrator.startVibration({
                  type: "file",
                  hapticFd: { fd: rawFd.fd, offset: rawFd.offset, length: rawFd.length }
                }, {
                  id: 0,
                  usage: 'alarm' // 根据实际选择类型归属不同的开关管控
                }, (error: BusinessError) => {
                  if (error) {
                    console.error(`Failed to start vibration. Code: ${error.code}, message: ${error.message}`);
                    return;
                  }
                  console.info('Succeed in starting vibration');
                });
              } catch (err) {
                let e: BusinessError = err as BusinessError;
                console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
              } finally {
                vibrator.stopVibration();
                this.uiContext.getHostContext()?.resourceManager.closeRawFdSync(fileName);
              }
            }
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}

3.按照指定时长触发马达振动:

import { vibrator } from '@kit.SensorServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';

try {
  vibrator.startVibration({
    type: 'time',
    duration: 1000,
  }, {
    id: 0,
    usage: 'alarm' // 根据实际选择类型归属不同的开关管控
  }, (error: BusinessError) => {
    if (error) {
      console.error(`Failed to start vibration. Code: ${error.code}, message: ${error.message}`);
      return;
    }
    console.info('Succeed in starting vibration');
  });
} catch (err) {
  let e: BusinessError = err as BusinessError;
  console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
}

vibrator.startVibration22+

startVibration(effect: VibrateEffect, attribute: VibrateAttribute): Promise<void>

根据指定的振动效果和振动属性触发马达振动。使用promise异步回调。

需要权限:ohos.permission.VIBRATE

原子化服务API:从API Version 22开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Sensors.MiscDevice

支持平台:Android、iOS 参数

参数名 类型 必填 说明 Android平台 iOS平台
effect VibrateEffect 马达振动效果,支持三种:1、VibrateTime:按照预置振动效果触发马达振动,适用于交互反馈类的短振场景(如点击长按,滑动,拖拽等),为确保与系统整体振感反馈体验风格一致,推荐使用此接口;2、VibratePreset:按照文件形式定制自定义振动效果触发马达振动,适用于匹配复杂场景效果的交互反馈(如表情包触发的拟真效果、游戏场景/操作反馈);3、VibrateFromFile:按照指定时长触发马达振动,仅对振动时长进行启动或停止控制,满足基础功能,无法对振动强度、频率等维度进行个性化设置,此种振动调节不够细腻,无法满足精致体验;4、VibrateFromPattern22+:按照自定义振动效果触发马达振动。使用场景和VibrateFromFile一致。VibrateFromFile是面向文件中提前定制好的效果,将具体的振动事件以文件描述符形式传递到接口中;VibrateFromPattern提供更加灵活的振动事件排列组合,将振动事件以振动事件数组的形式传递到接口中。 支持 支持
attribute VibrateAttribute 马达振动属性。

返回值

类型 说明
Promise 无返回结果的Promise对象。

错误码

以下错误码的详细介绍请参见振动错误码通用错误码。错误码和错误信息会以异常的形式抛出,调用接口时需要使用try catch对可能出现的异常进行捕获操作。

错误码ID 错误信息
201 Permission denied.
401 Parameter error.Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed.
801 Capability not supported.
14600101 Device operation failed.

示例

1.按照预置振动效果触发马达振动:

import { vibrator } from '@kit.SensorServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';

// 使用try catch对可能出现的异常进行捕获
try {
  // 查询是否支持'haptic.notice.success'
  vibrator.isSupportEffect('haptic.notice.success', (err: BusinessError, state: boolean) => {
    if (err) {
      console.error(`Failed to query effect. Code: ${err.code}, message: ${err.message}`);
      return;
    }
    console.info('Succeed in querying effect');
    if (state) {
      try {
        vibrator.startVibration({
          type: 'preset',
          effectId: 'haptic.notice.success',
          count: 1,
        }, {
          usage: 'notification' // 根据实际选择类型归属不同的开关管控
        }, (error: BusinessError) => {
          if (error) {
            console.error(`Failed to start vibration. Code: ${error.code}, message: ${error.message}`);
 		         return;
          }
          console.info('Succeed in starting vibration');
       
        });
      } catch (err) {
        let e: BusinessError = err as BusinessError;
 	       console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
      }
    }
  })
} catch (error) {
  let e: BusinessError = error as BusinessError;
  console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
}

2.按照自定义振动配置文件触发马达振动:

import { vibrator } from '@kit.SensorServiceKit';
import { resourceManager } from '@kit.LocalizationKit';
import { BusinessError } from '@kit.BasicServicesKit';

const fileName: string = 'xxx.json';

@Entry
@Component
struct Index {
  uiContext = this.getUIContext();

  build() {
    Row() {
      Column() {
        Button('alarm-file')
          .onClick(() => {
            let rawFd: resourceManager.RawFileDescriptor | undefined = this.uiContext.getHostContext()?.resourceManager.getRawFdSync(fileName);
            if (rawFd != undefined) {
              try {
                vibrator.startVibration({
                  type: "file",
                  hapticFd: { fd: rawFd.fd, offset: rawFd.offset, length: rawFd.length }
                }, {
                  id: 0,
                  usage: 'alarm' // 根据实际选择类型归属不同的开关管控
                }, (error: BusinessError) => {
                  if (error) {
                    console.error(`Failed to start vibration. Code: ${error.code}, message: ${error.message}`);
                    return;
                  }
                  console.info('Succeed in starting vibration');
                });
              } catch (err) {
                let e: BusinessError = err as BusinessError;
                console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
              } finally {
                vibrator.stopVibration();
                this.uiContext.getHostContext()?.resourceManager.closeRawFdSync(fileName);
              }
            }
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}

3.按照指定时长触发马达振动:

import { vibrator } from '@kit.SensorServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';

try {
  vibrator.startVibration({
    type: 'time',
    duration: 1000
  }, {
    id: 0,
    usage: 'alarm' // 根据实际选择类型归属不同的开关管控
  }).then(() => {
    console.info('Succeed in starting vibration');
  }, (error: BusinessError) => {
    console.error(`Failed to start vibration. Code: ${error.code}, message: ${error.message}`);
  });
} catch (err) {
  let e: BusinessError = err as BusinessError;
  console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
}

vibrator.stopVibration22+

stopVibration(stopMode: VibratorStopMode, callback: AsyncCallback<void>): void

按照指定模式停止马达振动。使用callback异步回调。

需要权限:ohos.permission.VIBRATE

系统能力:SystemCapability.Sensors.MiscDevice

支持平台:Android、iOS 参数

参数名 类型 必填 说明 Android平台 iOS平台
stopMode VibratorStopMode 指定的停止振动模式,支持两种:VIBRATOR_STOP_MODE_TIME:停止固定时长振动;VIBRATOR_STOP_MODE_PRESET:停止预置振动。此接口无法停止自定义振动,请使用vibrator.stopVibration22+ 支持 支持
callback AsyncCallback 回调函数,当马达停止振动成功,err为undefined,否则为错误对象。 支持 支持

错误码

以下错误码的详细介绍请参见通用错误码。错误码和错误信息会以异常的形式抛出,调用接口时需要使用try catch对可能出现的异常进行捕获操作。

错误码ID 错误信息
201 Permission denied.
401 Parameter error.Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed.

示例

1.停止指定时长振动:

import { vibrator } from '@kit.SensorServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';

// 使用try catch对可能出现的异常进行捕获
try {
  // 按照指定时长振动
  vibrator.startVibration({
    type: 'time',
    duration: 1000,
  }, {
    id: 0,
    usage: 'alarm' // 根据实际选择类型归属不同的开关管控
  }, (error: BusinessError) => {
    if (error) {
      console.error(`Failed to start vibration. Code: ${error.code}, message: ${error.message}`);
      return;
    }
    console.info('Succeed in starting vibration');
  });
} catch (err) {
  let e: BusinessError = err as BusinessError;
  console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
}

try {
  // 按照VIBRATOR_STOP_MODE_TIME模式停止振动
  vibrator.stopVibration(vibrator.VibratorStopMode.VIBRATOR_STOP_MODE_TIME, (error: BusinessError) => {
    if (error) {
      console.error(`Failed to stop vibration. Code: ${error.code}, message: ${error.message}`);
      return;
    }
    console.info('Succeed in stopping vibration');
  })
} catch (err) {
  let e: BusinessError = err as BusinessError;
  console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
}

2.停止预置振动:

import { vibrator } from '@kit.SensorServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';

try {
  // 按照预置效果振动
  vibrator.startVibration({
    type: 'preset',
    effectId: 'haptic.notice.success',
    count: 1,
  }, {
    id: 0,
    usage: 'notification' // 根据实际选择类型归属不同的开关管控
  }, (error: BusinessError) => {
    if (error) {
      console.error(`Failed to start vibration. Code: ${error.code}, message: ${error.message}`);
      return;
    }
    console.info('Succeed in starting vibration');
  });
} catch (err) {
  let e: BusinessError = err as BusinessError;
  console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
}

try {
  // 按照VIBRATOR_STOP_MODE_PRESET模式停止振动
  vibrator.stopVibration(vibrator.VibratorStopMode.VIBRATOR_STOP_MODE_PRESET, (error: BusinessError) => {
    if (error) {
      console.error(`Failed to stop vibration. Code: ${error.code}, message: ${error.message}`);
      return;
    }
    console.info('Succeed in stopping vibration');
  })
} catch (err) {
  let e: BusinessError = err as BusinessError;
  console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
}

vibrator.stopVibration22+

stopVibration(stopMode: VibratorStopMode): Promise<void>

按照指定模式停止马达的振动。使用promise异步回调。

需要权限:ohos.permission.VIBRATE

系统能力:SystemCapability.Sensors.MiscDevice

支持平台:Android、iOS 参数

参数名 类型 必填 说明 Android平台 iOS平台
stopMode VibratorStopMode 支持停止两种指定的振动模式:VIBRATOR_STOP_MODE_TIME:停止指定时长振动;VIBRATOR_STOP_MODE_PRESET:停止预置振动。此接口无法停止自定义振动,请使用vibrator.stopVibration22+ 支持 支持

返回值

类型 说明
Promise Promise对象。

错误码

以下错误码的详细介绍请参见通用错误码。错误码和错误信息会以异常的形式抛出,调用接口时需要使用try catch对可能出现的异常进行捕获操作。

错误码ID 错误信息
201 Permission denied.
401 Parameter error.Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed.

示例

1.停止指定时长振动:

import { vibrator } from '@kit.SensorServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';

// 使用try catch对可能出现的异常进行捕获
try {
  // 按照指定时长振动
  vibrator.startVibration({
    type: 'time',
    duration: 1000,
  }, {
    id: 0,
    usage: 'alarm' // 根据实际选择类型归属不同的开关管控
  }).then(() => {
    console.info('Succeed in starting vibration');
  }, (error: BusinessError) => {
    console.error(`Failed to start vibration. Code: ${error.code}, message: ${error.message}`);
  });
} catch (err) {
  let e: BusinessError = err as BusinessError;
  console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
}

try {
  // 按照VIBRATOR_STOP_MODE_TIME模式停止振动
  vibrator.stopVibration(vibrator.VibratorStopMode.VIBRATOR_STOP_MODE_TIME).then(() => {
    console.info('Succeed in stopping vibration');
  }, (error: BusinessError) => {
    console.error(`Failed to stop vibration. Code: ${error.code}, message: ${error.message}`);
  });
} catch (err) {
  let e: BusinessError = err as BusinessError;
  console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
}

2.停止预置振动:

import { vibrator } from '@kit.SensorServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';

try {
  // 按照预置效果振动
  vibrator.startVibration({
    type: 'preset',
    effectId: 'haptic.notice.success',
    count: 1,
  }, {
    id: 0,
    usage: 'notification' // 根据实际选择类型归属不同的开关管控
  }).then(() => {
    console.info('Succeed in starting vibration');
  }, (error: BusinessError) => {
    console.error(`Failed to start vibration. Code: ${error.code}, message: ${error.message}`);
  });
} catch (err) {
  let e: BusinessError = err as BusinessError;
  console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
}

try {
  // 按照VIBRATOR_STOP_MODE_PRESET模式停止振动
  vibrator.stopVibration(vibrator.VibratorStopMode.VIBRATOR_STOP_MODE_PRESET).then(() => {
    console.info('Succeed in stopping vibration');
  }, (error: BusinessError) => {
    console.error(`Failed to stop vibration. Code: ${error.code}, message: ${error.message}`);
  });
} catch (err) {
  let e: BusinessError = err as BusinessError;
  console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
}

vibrator.stopVibration22+

stopVibration(callback: AsyncCallback<void>): void

停止所有模式的马达振动。使用callback异步回调。

需要权限:ohos.permission.VIBRATE

原子化服务API:从API Version 22开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Sensors.MiscDevice

支持平台:Android、iOS 参数

参数名 类型 必填 说明 Android平台 iOS平台
callback AsyncCallback 回调函数,当马达停止振动成功,err为undefined,否则为错误对象。 支持 支持

错误码

以下错误码的详细介绍请参见通用错误码。错误码和错误信息会以异常的形式抛出,调用接口时需要使用try catch对可能出现的异常进行捕获操作。

错误码ID 错误信息
201 Permission denied.

示例

import { vibrator } from '@kit.SensorServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';

// 使用try catch对可能出现的异常进行捕获
try {
  // 停止所有模式的马达振动
  vibrator.stopVibration((error: BusinessError) => {
    if (error) {
      console.error(`Failed to stop vibration. Code: ${error.code}, message: ${error.message}`);
      return;
    }
    console.info('Succeed in stopping vibration');
  })
} catch (error) {
  let e: BusinessError = error as BusinessError;
  console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
}

vibrator.stopVibration22+

stopVibration(): Promise<void>

停止所有模式的马达振动。使用promise异步回调。

需要权限:ohos.permission.VIBRATE

原子化服务API:从API Version 22开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Sensors.MiscDevice

支持平台:Android、iOS 返回值

类型 说明 Android平台 iOS平台
Promise Promise对象。 支持 支持

错误码

以下错误码的详细介绍请参见通用错误码。错误码和错误信息会以异常的形式抛出,调用接口时需要使用try catch对可能出现的异常进行捕获操作。

错误码ID 错误信息
201 Permission denied.

示例

import { vibrator } from '@kit.SensorServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';

// 使用try catch对可能出现的异常进行捕获
try {
  // 停止所有模式的马达振动
  vibrator.stopVibration().then(() => {
    console.info('Succeed in stopping vibration');
  }, (error: BusinessError) => {
    console.error(`Failed to stop vibration. Code: ${error.code}, message: ${error.message}`);
  });
} catch (error) {
  let e: BusinessError = error as BusinessError;
  console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
}

vibrator.stopVibration22+

stopVibration(param?: VibratorInfoParam): Promise<void>

不传参默认停止本地设备马达的振动。使用promise异步回调。

需要权限:ohos.permission.VIBRATE

系统能力:SystemCapability.Sensors.MiscDevice

支持平台:Android、iOS 参数

参数名 类型 必填 说明 Android平台 iOS平台
param VibratorInfoParam 指出需要控制的设备和马达信息,默认控制的为本地设备马达 支持 支持

返回值

类型 说明
Promise Promise对象。

错误码

以下错误码的详细介绍请参见通用错误码。错误码和错误信息会以异常的形式抛出,调用接口时需要使用try catch对可能出现的异常进行捕获操作。

错误码ID 错误信息
201 Permission denied.
14600101 Device operation failed.

示例

import { vibrator } from '@kit.SensorServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';

function vibratorDemo() {
  // 查询所有马达设备信息。
  const vibratorInfoList: vibrator.VibratorInfo[] = vibrator.getVibratorInfoSync();
  // 根据实际业务逻辑获取目标马达, 例如查找本地马达,此处示例仅做展示,开发者需要自行调整筛选逻辑。
  const targetVibrator = vibratorInfoList.find((vibrator: vibrator.VibratorInfo) => {
    return vibrator.isLocalVibrator;
  });
  if (!targetVibrator) {
    return;
  }
  // 调用 vibrator.startVibration 开始振动。
  // ...

  // 使用try catch对可能出现的异常进行捕获。
  try {
    // 根据实际业务场景停止马达振动。
    vibrator.stopVibration({ deviceId: targetVibrator.deviceId, vibratorId: targetVibrator.vibratorId }).then(() => {
      console.info('Succeed in stopping vibration');
    }, (error: BusinessError) => {
      console.error(`Failed to stop vibration. Code: ${error.code}, message: ${error.message}`);
    });
  } catch (error) {
    let e: BusinessError = error as BusinessError;
    console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
  }
}

vibrator.stopVibrationSync22+

stopVibrationSync(): void

停止任何形式的马达振动。

需要权限:ohos.permission.VIBRATE

原子化服务API:从API Version 22开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Sensors.MiscDevice

支持平台:Android、iOS 错误码

以下错误码的详细介绍请参见振动错误码通用错误码。错误码和错误信息会以异常的形式抛出,调用接口时需要使用try catch对可能出现的异常进行捕获操作。

错误码ID 错误信息
201 Permission denied.
14600101 Device operation failed.

示例

import { vibrator } from '@kit.SensorServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';

// 使用try catch对可能出现的异常进行捕获
try {
  // 停止任何形式的马达振动
  vibrator.stopVibrationSync()
  console.info('Succeed in stopping vibration');
} catch (error) {
  let e: BusinessError = error as BusinessError;
  console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
}

vibrator.isSupportEffect22+

isSupportEffect(effectId: string, callback: AsyncCallback<boolean>): void

查询是否支持传入参数effectId。使用callback异步回调。

系统能力:SystemCapability.Sensors.MiscDevice

支持平台:Android、iOS 参数

参数名 类型 必填 说明 Android平台 iOS平台
effectId string 待确认的预置振动效果,字符串最大长度64,超出截取64。 支持 支持
callback AsyncCallback 回调函数,当返回true则表示支持该effectId,返回false不支持。 支持 支持

错误码

以下错误码的详细介绍请参见通用错误码。错误码和错误信息会以异常的形式抛出,调用接口时需要使用try catch对可能出现的异常进行捕获操作。

错误码ID 错误信息
201 Permission denied.
401 Parameter error.Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed.

示例

import { vibrator } from '@kit.SensorServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';

// 使用try catch对可能出现的异常进行捕获
try {
  // 查询是否支持'haptic.notice.success'
  vibrator.isSupportEffect('haptic.notice.success', (err: BusinessError, state: boolean) => {
    if (err) {
      console.error(`Failed to query effect. Code: ${err.code}, message: ${err.message}`);
      return;
    }
    console.info('Succeed in querying effect');
    if (state) {
      try {
        // 使用startVibration需要添加ohos.permission.VIBRATE权限
        vibrator.startVibration({
          type: 'preset',
          effectId: 'haptic.notice.success',
          count: 1,
        }, {
          usage: 'unknown' // 根据实际选择类型归属不同的开关管控
        }, (error: BusinessError) => {
          if (error) {
            console.error(`Failed to start vibration. Code: ${error.code}, message: ${error.message}`);
          } else {
            console.info('Succeed in starting vibration');
          }
        });
      } catch (error) {
        let e: BusinessError = error as BusinessError;
        console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
      }
    }
  })
} catch (error) {
  let e: BusinessError = error as BusinessError;
  console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
}

vibrator.isSupportEffect22+

isSupportEffect(effectId: string): Promise<boolean>

查询是否支持传入参数effectId。使用promise异步回调。

系统能力:SystemCapability.Sensors.MiscDevice

支持平台:Android、iOS 参数

参数名 类型 必填 说明 Android平台 iOS平台
effectId string 待确认的预置振动效果,字符串最大长度64,超出截取64。 支持 支持

返回值

类型 说明
Promise Promise对象。当返回true则表示支持该effectId,返回false不支持。

错误码

以下错误码的详细介绍请参见通用错误码。错误码和错误信息会以异常的形式抛出,调用接口时需要使用try catch对可能出现的异常进行捕获操作。

错误码ID 错误信息
201 Permission denied.
401 Parameter error.Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed.

示例

import { vibrator } from '@kit.SensorServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';

// 使用try catch对可能出现的异常进行捕获
try {
  // 查询是否支持'haptic.notice.success'
  vibrator.isSupportEffect('haptic.notice.success').then((state: boolean) => {
    console.info(`The query result is ${state}`);
    if (state) {
      try {
        vibrator.startVibration({
          type: 'preset',
          effectId: 'haptic.notice.success',
          count: 1,
        }, {
          usage: 'unknown' // 根据实际选择类型归属不同的开关管控
        }).then(() => {
          console.info('Succeed in starting vibration');
        }).catch((error: BusinessError) => {
          console.error(`Failed to start vibration. Code: ${error.code}, message: ${error.message}`);
        });
      } catch (error) {
        let e: BusinessError = error as BusinessError;
        console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
      }
    }
  }, (error: BusinessError) => {
    console.error(`Failed to query effect. Code: ${error.code}, message: ${error.message}`);
  })
} catch (error) {
  let e: BusinessError = error as BusinessError;
  console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
}

vibrator.isSupportEffectSync22+

isSupportEffectSync(effectId: string): boolean

查询是否支持预设的振动效果。

系统能力:SystemCapability.Sensors.MiscDevice

支持平台:Android、iOS 参数

参数名 类型 必填 说明 Android平台 iOS平台
effectId string 待确认的预置振动效果,字符串最大长度64,超出截取64。 支持 支持

返回值

类型 说明
boolean 返回对象。当返回true则表示支持该effectId,返回false不支持。

错误码

以下错误码的详细介绍请参见振动错误码通用错误码。错误码和错误信息会以异常的形式抛出,调用接口时需要使用try catch对可能出现的异常进行捕获操作。

错误码ID 错误信息
401 Parameter error.Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed.
14600101 Device operation failed.

示例

import { vibrator } from '@kit.SensorServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';

// 使用try catch对可能出现的异常进行捕获
try {
  // 查询是否支持预设'haptic.notice.success'
  let ret = vibrator.isSupportEffectSync('haptic.notice.success');
  console.info(`The query result is ${ret}`);
} catch (error) {
  let e: BusinessError = error as BusinessError;
  console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
}

vibrator.getEffectInfoSync22+

getEffectInfoSync(effectId: string, param?: VibratorInfoParam): EffectInfo

通过设备ID和可控马达ID获取预置振动效果信息,用于判断该预置振动效果是否受支持。

系统能力:SystemCapability.Sensors.MiscDevice

支持平台:Android、iOS 参数

参数名 类型 必填 说明 Android平台 iOS平台
effectId string 待确认的预置振动效果,字符串最大长度64,超出截取64。 支持 支持
param VibratorInfoParam 指出需要查询的设备和马达信息,默认查询的是本地设备马达。 支持 支持

错误码

以下错误码的详细介绍请参见振动错误码。错误码和错误信息会以异常的形式抛出,调用接口时需要使用try catch对可能出现的异常进行捕获操作。

错误码ID 错误信息
14600101 Device operation failed.

返回值

类型 说明
EffectInfo 该信息包括指示是否支持该效果。

示例

import { vibrator } from '@kit.SensorServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';

// 使用try catch对可能出现的异常进行捕获
try {
  const effectInfo: vibrator.EffectInfo = vibrator.getEffectInfoSync('haptic.clock.timer', { deviceId: 1, vibratorId: 3});
  console.info(`isEffectSupported: ${effectInfo.isEffectSupported}`);
} catch (error) {
  let e: BusinessError = error as BusinessError;
  console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
}

vibrator.getVibratorInfoSync22+

getVibratorInfoSync(param?: VibratorInfoParam): Array<VibratorInfo>;

查询本地设备马达信息列表。

系统能力:SystemCapability.Sensors.MiscDevice

支持平台:Android、iOS 参数

参数名 类型 必填 说明 Android平台 iOS平台
param VibratorInfoParam 指出需要控制的设备和马达信息,默认查询本地设备马达的信息 支持 支持

返回值

类型 说明
Array<VibratorInfo> 马达设备的信息。

示例

import { vibrator } from '@kit.SensorServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';

try {
  const vibratorInfoList: vibrator.VibratorInfo[] = vibrator.getVibratorInfoSync({ deviceId: 1, vibratorId: 3 });
  console.info(`vibratorInfoList: ${JSON.stringify(vibratorInfoList)}`);
} catch (error) {
  let e: BusinessError = error as BusinessError;
  console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
}

VibratorInfoParam22+

设备上马达的参数。默认情况下,VibratorInfoParam默认为查询或控制本地马达。

系统能力:SystemCapability.Sensors.MiscDevice

支持平台:Android、iOS

名称 类型 只读 可选 说明 Android平台 iOS平台
deviceId number 设备的ID:默认值为-1,表示本地设备,API22以后设备ID可以使用getVibratorInfoSync查询。 支持 支持
vibratorId number 马达ID:默认值为0,控制的是该设备的全部马达,API22以后马达ID可以使用getVibratorInfoSync查询。 支持 支持

EffectInfo22+

查询的预制效果信息。

系统能力:SystemCapability.Sensors.MiscDevice

支持平台:Android、iOS

名称 类型 只读 可选 说明 Android平台 iOS平台
isEffectSupported boolean 预制效果是否支持,true表示支持,false表示不支持。 支持 支持

VibratorInfo22+

表示查询的马达信息。

系统能力:SystemCapability.Sensors.MiscDevice

支持平台:Android、iOS

名称 类型 只读 可选 说明 Android平台 iOS平台
deviceId number 设备ID。 支持 支持
vibratorId number 马达ID。 支持 支持
deviceName string 设备名称。 支持 支持
isHdHapticSupported boolean 是否支持高清振动。 支持 支持
isLocalVibrator boolean 是否为本地设备。 支持 支持

vibrator.isHdHapticSupported22+

isHdHapticSupported(): boolean

查询是否支持高清振动。

系统能力:SystemCapability.Sensors.MiscDevice

支持平台:Android、iOS

返回值

类型 说明
boolean 返回对象,当返回true表示支持高清振动,返回false不支持。。

错误码

以下错误码的详细介绍请参见振动错误码。错误码和错误信息会以异常的形式抛出,调用接口时需要使用try catch对可能出现的异常进行捕获操作。

错误码ID 错误信息
14600101 Device operation failed.

示例

import { vibrator } from '@kit.SensorServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';

// 使用try catch对可能出现的异常进行捕获
try {
  // 查询是否支持高清振动
  let ret = vibrator.isHdHapticSupported();
  console.info(`The query result is ${ret}`);
} catch (error) {
  let e: BusinessError = error as BusinessError;
  console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
}

VibratorPatternBuilder22+

vibrator('addContinuousEvent')22+

addContinuousEvent(time: number, duration: number, options?: ContinuousParam): VibratorPatternBuilder;

添加长振事件的方法成VibratorPattern对象。

系统能力:SystemCapability.Sensors.MiscDevice

支持平台:Android、iOS

参数

参数名 类型 必填 说明 Android平台 iOS平台
time number 长振事件的起始时间。单位ms,取值范围[0,1800000]区间内所有整数。 支持 支持
duration number 长振事件的持续时间。单位ms,取值范围(0,5000]区间内所有整数。 支持 支持
options ContinuousParam 可选参数,可选参数对象。 支持 支持

返回值

类型 说明
VibratorPatternBuilder 返回已添加连续振动事件的VibratorPatternBuilder对象。

错误码

以下错误码的详细介绍请参见通用错误码。错误码和错误信息会以异常的形式抛出,调用接口时需要使用try catch对可能出现的异常进行捕获操作。

错误码ID 错误信息
401 Parameter error.Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed.

示例

import { vibrator } from '@kit.SensorServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';

let builder = new vibrator.VibratorPatternBuilder();
// 使用try catch对可能出现的异常进行捕获
try {
  let pointsMe: vibrator.VibratorCurvePoint[] = [
      { time: 0, intensity: 0, frequency: -7 },
      { time: 42, intensity: 1, frequency: -6 },
      { time: 128, intensity: 0.94, frequency: -4 },
      { time: 217, intensity: 0.63, frequency: -14 },
      { time: 763, intensity: 0.48, frequency: -14 },
      { time: 1125, intensity: 0.53, frequency: -10 },
      { time: 1503, intensity: 0.42, frequency: -14 },
      { time: 1858, intensity: 0.39, frequency: -14 },
      { time: 2295, intensity: 0.34, frequency: -17 },
      { time: 2448, intensity: 0.21, frequency: -14 },
      { time: 2468, intensity: 0, frequency: -21 }
  ] // VibratorCurvePoint参数最少设置4个,最大设置16个
  let param: vibrator.ContinuousParam = {
      intensity: 97,
      frequency: 34,
      points:pointsMe,
      index: 0
  }
  builder.addContinuousEvent(0, 2468, param);
  console.info(`addContinuousEvent builder is ${builder.build()}`);
} catch(error) {
  let e: BusinessError = error as BusinessError;
  console.error(`Exception. Code ${e.code}`);
}

vibrator('addTransientEvent')22+

addTransientEvent(time: number, options?: TransientParam): VibratorPatternBuilder;

添加短振事件的方法成VibratorPattern对象。

系统能力:SystemCapability.Sensors.MiscDevice

支持平台:Android、iOS

参数

参数名 类型 必填 说明 Android平台 iOS平台
time number 短振事件的起始时间。单位ms,取值范围[0,1800000]区间内所有整数。 支持 支持
options TransientParam 可选参数,可选参数对象。 支持 支持

返回值

类型 说明
VibratorPatternBuilder 返回已添加短振事件的VibratorPatternBuilder对象。

错误码

以下错误码的详细介绍请参见通用错误码。错误码和错误信息会以异常的形式抛出,调用接口时需要使用try catch对可能出现的异常进行捕获操作。

错误码ID 错误信息
401 Parameter error.Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed.

示例

import { vibrator } from '@kit.SensorServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';

let builder = new vibrator.VibratorPatternBuilder();
// 使用try catch对可能出现的异常进行捕获
try {
  let param: vibrator.TransientParam = {
      intensity: 80,
      frequency: 70,
      index: 0
  }
  builder.addTransientEvent(0, param);
  console.info(`addTransientEvent builder is ${builder.build()}`);
} catch(error) {
  let e: BusinessError = error as BusinessError;
  console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
}

vibrator('build')22+

build(): VibratorPattern;

构造组合短事件或长事件的振动序列的方法。

系统能力:SystemCapability.Sensors.MiscDevice

支持平台:Android、iOS

返回值

类型 说明
VibratorPattern 构造组合短振或长振的振动序列方法。

示例

import { vibrator } from '@kit.SensorServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';

let builder = new vibrator.VibratorPatternBuilder();
try {
  let param: vibrator.TransientParam = {
      intensity: 80,
      frequency: 70,
      index: 0
  }
  builder.addTransientEvent(0, param);
  console.info(`addTransientEvent builder is ${builder.build()}`);
} catch(error) {
  let e: BusinessError = error as BusinessError;
  console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
}
try {
  vibrator.startVibration({
      type: "pattern",
      pattern: builder.build()
  }, {
    usage: "alarm", // 根据实际选择类型归属不同的开关管控
  }, (error) => {
    if (error) {
      let e: BusinessError = error as BusinessError;
      console.error(`Vibrate fail. Code: ${e.code}, message: ${e.message}`);
    } else {
      console.info(`vibrate success`);
    }
  });
} catch(error) {
  let e: BusinessError = error as BusinessError;
  console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
}

EffectId

预置的振动效果。在调用vibrator.startVibration22+vibrator.stopVibration22+接口下发VibratePreset形式振动的时候需要使用此参数类型。此参数值种类多样,'haptic.clock.timer'为其中一种。HapticFeedback22+展示了几种常用的EffectId值。

说明:

由于设备存在多样性,不同的设备可能预置不同的效果,建议使用预置效果前先使用vibrator.isSupportEffect22+接口查询当前设备是否支持该预置效果。

系统能力:SystemCapability.Sensors.MiscDevice

支持平台:Android、iOS

名称 说明 Android平台 iOS平台
EFFECT_CLOCK_TIMER 'haptic.clock.timer' 描述用户调整计时器时的振动效果。 支持 支持

HapticFeedback22+

简单而通用的振动效果。根据各设备的马达器件不同,同一振动效果的频率会有差异,但效果的频率趋向是统一的。这几种振动效果是EffectId参数的具体值,使用方法参考vibrator.startVibration22+vibrator.stopVibration22+接口下发VibratePreset形式振动的示例代码。

系统能力:SystemCapability.Sensors.MiscDevice

支持平台:Android、iOS

名称 说明 Android平台 iOS平台
EFFECT_SOFT 'haptic.effect.soft' 较松散的振动效果,频率偏低。 支持 支持
EFFECT_HARD 'haptic.effect.hard' 较沉重的振动效果,频率居中。 支持 支持
EFFECT_SHARP 'haptic.effect.sharp' 较尖锐的振动效果,频率偏高。 支持 支持
EFFECT_NOTICE_SUCCESS22+ 'haptic.notice.success' 表达成功通知的振动效果。 支持 支持
EFFECT_NOTICE_FAILURE22+ 'haptic.notice.fail' 表达失败通知的振动效果。 支持 支持
EFFECT_NOTICE_WARNING22+ 'haptic.notice.warning' 表达警告通知的振动效果。 支持 支持

VibratorStopMode

停止振动的模式。在调用vibrator.stopVibration22+vibrator.stopVibration22+接口时,需要使用此参数类型指定停止的振动模式。停止模式和VibrateEffect22+中下发的模式为对应关系。

系统能力:SystemCapability.Sensors.MiscDevice

支持平台:Android、iOS

名称 说明 Android平台 iOS平台
VIBRATOR_STOP_MODE_TIME 'time' 停止duration模式的振动。 支持 支持
VIBRATOR_STOP_MODE_PRESET 'preset' 停止预置EffectId的振动。 支持 支持

VibrateEffect22+

马达振动效果,支持以下四种。在调用vibrator.startVibration22+vibrator.startVibration22+接口时,此参数的四种类型表示以四种不同的形式触发振动。

系统能力:SystemCapability.Sensors.MiscDevice

支持平台:Android、iOS

类型 说明 Android平台 iOS平台
VibrateTime 按照指定时长触发马达振动。
原子化服务API: 从API Version 22开始,该接口支持在原子化服务中使用。
支持 支持
VibratePreset 按照预置振动类型触发马达振动。 支持 支持
VibrateFromFile 按照自定义振动配置文件触发马达振动。 支持 支持
VibrateFromPattern22+ 按照自定义振动效果触发马达振动。 支持 支持

VibrateTime22+

指定时长振动类型。

原子化服务API:从API Version 22开始,该接口在支持原子化服务中使用。

系统能力:SystemCapability.Sensors.MiscDevice

支持平台:Android、iOS

名称 类型 必填 说明 Android平台 iOS平台
type 'time' 值为'time',按照指定时长触发马达振动。 支持 支持
duration number 马达持续振动时长, 单位ms。取值范围(0,1800000]区间内所有整数 支持 支持

VibratePreset22+

预置振动类型。当调用vibrator.startVibration22+vibrator.startVibration22+时,VibrateEffect22+参数的值可以为VibratePreset,表示触发预置振动类型。

系统能力:SystemCapability.Sensors.MiscDevice

支持平台:Android、iOS

名称 类型 必填 说明 Android平台 iOS平台
type 'preset' 值为'preset',按照预置振动效果触发马达振动。 支持 支持
effectId string 预置的振动效果ID,字符串最大长度64,超出截取64。 支持 支持
count number 可选参数,振动的重复次数,默认值为1。 支持 支持
intensity22+ number 可选参数,振动调节强度,取值范围(0,100]内所有整数,默认值为100。若振动效果不支持强度调节或设备不支持时,则按默认强度振动。 支持 支持

VibrateFromFile22+

自定义振动类型。当设备不支持此振动类型时,返回设备不支持错误码。当调用vibrator.startVibration22+vibrator.startVibration22+时,VibrateEffect22+参数的值可以为VibrateFromFile,表示触发自定义振动类型。

系统能力:SystemCapability.Sensors.MiscDevice

支持平台:Android、iOS

名称 类型 只读 可选 说明 Android平台 iOS平台
type 'file' 值为'file',按照振动配置文件触发马达振动。 支持 支持
hapticFd HapticFileDescriptor22+ 振动配置文件的描述符。 支持 支持

HapticFileDescriptor22+

自定义振动配置文件的描述符,必须确认资源文件可用,其参数可通过资源管理API从HAP资源获取。使用场景:振动序列被存储在一个文件中,需要根据偏移量和长度进行振动。

系统能力:SystemCapability.Sensors.MiscDevice

支持平台:Android、iOS

名称 类型 只读 可选 说明 Android平台 iOS平台
fd number 资源文件描述符。 支持 支持
offset number 距文件起始位置的偏移量,单位为字节,默认为文件起始位置,不可超出文件有效范围。 支持 支持
length number 资源长度,单位为字节,默认值为从偏移位置至文件结尾的长度,不可超出文件有效范围。 支持 支持

VibratorEventType22+

振动事件类型。

系统能力:SystemCapability.Sensors.MiscDevice

支持平台:Android、iOS

名称 类型 必填 说明 Android平台 iOS平台
CONTINUOUS number 值为0,表示长振。 支持 支持
TRANSIENT number 值为1,表示短振。 支持 支持

VibratorCurvePoint22+

相对事件振动强度的增益。

系统能力:SystemCapability.Sensors.MiscDevice

支持平台:Android、iOS

名称 类型 必填 说明 Android平台 iOS平台
time number 起始时间偏移。 支持 支持
intensity number 可选参数,相对事件振动强度增益,取值范围[0,100%],省略时默认值为1。 支持 支持
frequency number 可选参数,相对事件振动频率变化,取值范围[-100,100]内所有整数,省略时默认值为0。 支持 支持

VibratorEvent22+

振动事件。

系统能力:SystemCapability.Sensors.MiscDevice

支持平台:Android、iOS

名称 类型 必填 说明 Android平台 iOS平台
eventType VibratorEventType 振动事件类型。 支持 支持
time number 振动起始时间,单位ms。取值范围[0,1800000]区间内所有整数。 支持 支持
duration number 可选参数,表示振动持续时间,取值范围(0,5000]区间所有整数,短振默认值为48,长振默认值为1000 支持 支持
intensity number 可选参数,表示振动强度,取值范围[0,100]区间所有整数,省略时默认值为100。 支持 支持
frequency number 可选参数,表示振动频率,取值范围[0,100]区间内所有整数,省略时默认值为50。 支持 支持
index number 可选参数,表示通道编号,默认值为0。 支持 支持
points Array<VibratorCurvePoint> 可选参数,表示振动调节曲线数组。 支持 支持

VibratorPattern22+

马达振动序列,每个events代表一个振动事件。

系统能力:SystemCapability.Sensors.MiscDevice

支持平台:Android、iOS

名称 类型 必填 说明 Android平台 iOS平台
time number 振动绝对起始时间。 支持 支持
events Array<VibratorEvent> 振动事件数组,build()方法返回的VibratorPattern对象。 支持 支持

ContinuousParam22+

连续振动参数。

系统能力:SystemCapability.Sensors.MiscDevice

支持平台:Android、iOS

名称 类型 必填 说明 Android平台 iOS平台
intensity number 可选参数,表示振动强度,取值范围[0,100]内所有整数,省略时默认值为100。 支持 支持
frequency number 可选参数,表示振动频率,取值范围[0,100]内所有整数,省略时默认值为50。 支持 支持
points VibratorCurvePoint[] 可选参数,表示振动调节曲线数组。 支持 支持
index number 可选参数,表示通道编号,默认值为0。 支持 支持

TransientParam22+

瞬态振动参数。

系统能力:SystemCapability.Sensors.MiscDevice

支持平台:Android、iOS

名称 类型 必填 说明 Android平台 iOS平台
intensity number 可选参数,表示振动强度,取值范围[0,100]内所有整数,省略时默认值为100。 支持 支持
frequency number 可选参数,表示振动频率,取值范围[0,100]内所有整数,省略时默认值为50。 支持 支持
index number 可选参数,表示通道编号,默认值为0。 支持 支持

VibrateFromPattern22+

自定义振动效果触发马达振动。

系统能力:SystemCapability.Sensors.MiscDevice

支持平台:Android、iOS

名称 类型 必填 说明 Android平台 iOS平台
type 'pattern' 值为“pattern”,根据组合模式触发电机振动。 支持 支持
pattern VibratorPattern 振动事件数组,build()方法返回的VibratorPattern对象。 支持 支持

VibrateAttribute22+

马达振动属性。

原子化服务API:从API Version 22开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Sensors.MiscDevice

支持平台:Android、iOS

名称 类型 必填 说明 Android平台 iOS平台
id number 马达ID, 默认值为0。 支持 支持
deviceId22+ number 设备ID,默认值为-1,表示本地设备,API22以后设备ID可以使用getVibratorInfoSync查询。 原子化服务API:从API Version 22开始,该接口支持在原子化服务中使用。 支持 支持
usage Usage 马达振动的使用场景。默认值为'unknown',取值范围只允许在Usage提供的类型中选取。 支持 支持

Usage22+

type Usage = 'unknown' | 'alarm' | 'ring' | 'notification' | 'communication' | 'touch' | 'media' | 'physicalFeedback' | 'simulateReality'

振动使用场景。

原子化服务API:从API Version 22开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Sensors.MiscDevice

支持平台:Android、iOS

类型 说明 Android平台 iOS平台
'unknown' 没有明确使用场景,最低优先级,值固定为'unknown'字符串。 支持 支持
'alarm' 用于警报场景,值固定为'alarm'字符串。 支持 支持
'ring' 用于铃声场景,值固定为'ring'字符串。 支持 支持
'notification' 用于通知场景,值固定为'notification'字符串。 支持 支持
'communication' 用于通信场景,值固定为'communication'字符串。 支持 支持
'touch' 用于触摸场景,值固定为'touch'字符串。 支持 支持
'media' 用于多媒体场景,值固定为'media'字符串。 支持 支持
'physicalFeedback' 用于物理反馈场景,值固定为'physicalFeedback'字符串。 支持 支持
'simulateReality' 用于模拟现实场景,值固定为'simulateReality'字符串。 支持 支持