openharmony 鸿蒙 js-apis-vibrator

2025-06-12 浏览 (1)

@ohos.vibrator (Vibrator)

The vibrator module allows precise control over the vibration of device vibrators. With the APIs provided by this module, you can start vibration in various modes such as specified duration, preset effect, and custom effect and stop any or all of them.

NOTE

The initial APIs of this module are supported since API version 8. Newly added APIs will be marked with a superscript to indicate their earliest API version.

Modules to Import

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

vibrator.startVibration9+

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

Starts vibration with the specified effect and attribute. This API uses an asynchronous callback to return the result.

Required permissions: ohos.permission.VIBRATE

Atomic service API: This API can be used in atomic services since API version 11.

System capability: SystemCapability.Sensors.MiscDevice

Parameters

NameTypeMandatoryDescription
effectVibrateEffectYesVibration effect. The following options are supported:
- VibrateTime: starts vibration of the specified duration. This mode is not recommended because there is no start or stop.
- VibratePreset: starts vibration based on the preset effect. This mode is applicable to short vibration scenarios.
- VibrateFromFile: starts the vibration according to a custom vibration configuration file. This mode is applicable to short vibration scenarios.
- VibrateFromPattern18+: starts vibration according to a custom vibration pattern.
attributeVibrateAttributeYesVibration attribute.
callbackAsyncCallback<void>YesCallback used to return the operation result. If the operation is successful, err is undefined; otherwise, err is an error object, which contains the error code and error information.

Error codes

For details about the error codes, see Vibrator Error Codes and Universal Error Codes.

IDError Message
201Permission denied.
401Parameter error.Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed.
801Capability not supported.
14600101Device operation failed.

Example

  1. Start vibration based on the preset effect.
import { vibrator } from '@kit.SensorServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';

try {
  // Check whether 'haptic.clock.timer' is supported.
  vibrator.isSupportEffect('haptic.clock.timer', (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.clock.timer',
          count: 1,
        }, {
          usage: 'alarm' // The switch control is subject to the selected type.
        }, (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}`);
}
  1. Start vibration according to the custom vibration configuration file.
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' // The switch control is subject to the selected type.
                }, (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}`);
              }
            }
            this.uiContext.getHostContext()?.resourceManager.closeRawFdSync(fileName);
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}
  1. Start vibration of the specified duration.
import { vibrator } from '@kit.SensorServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';

try {
  vibrator.startVibration({
    type: 'time',
    duration: 1000,
  }, {
    id: 0,
    usage: 'alarm' // The switch control is subject to the selected type.
  }, (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.startVibration9+

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

Starts vibration with the specified effect and attribute. This API uses a promise to return the result.

Required permissions: ohos.permission.VIBRATE

Atomic service API: This API can be used in atomic services since API version 11.

System capability: SystemCapability.Sensors.MiscDevice

Parameters

NameTypeMandatoryDescription
effectVibrateEffectYesVibration effect. The following options are supported:
- VibrateTime: starts vibration of the specified duration. This mode is not recommended because there is no start or stop.
- VibratePreset: starts vibration based on the preset effect. This mode is applicable to short vibration scenarios.
- VibrateFromFile: starts vibration according to a custom vibration configuration file.
- VibrateFromPattern18+: starts vibration according to a custom vibration pattern.
attributeVibrateAttributeYesVibration attribute.

Return value

TypeDescription
Promise<void>Promise that returns no value.

Error codes

For details about the error codes, see Vibrator Error Codes and Universal Error Codes.

IDError Message
201Permission denied.
401Parameter error.Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed.
801Capability not supported.
14600101Device operation failed.

Example

  1. Start vibration based on the preset effect.
import { vibrator } from '@kit.SensorServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';

try {
  // Check whether 'haptic.clock.timer' is supported.
  vibrator.isSupportEffect('haptic.clock.timer', (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.clock.timer',
          count: 1,
        }, {
          usage: 'alarm' // The switch control is subject to the selected type.
        }, (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}`);
}
  1. Start vibration according to the custom vibration configuration file.
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' // The switch control is subject to the selected type.
                }, (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}`);
              }
            }
            this.uiContext.getHostContext()?.resourceManager.closeRawFdSync(fileName);
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}
  1. Start vibration of the specified duration.
import { vibrator } from '@kit.SensorServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';

try {
  vibrator.startVibration({
    type: 'time',
    duration: 1000
  }, {
    id: 0,
    usage: 'alarm' // The switch control is subject to the selected type.
  }).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.stopVibration9+

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

Stops vibration in the specified mode. This API uses an asynchronous callback to return the result.

Required permissions: ohos.permission.VIBRATE

System capability: SystemCapability.Sensors.MiscDevice

Parameters

NameTypeMandatoryDescription
stopModeVibratorStopModeYesMode to stop the vibration. The options are as follows:
- VIBRATOR_STOP_MODE_TIME: used to stop vibration of the specified duration.
- VIBRATOR_STOP_MODE_PRESET: used to stop vibration of the preset effect.
To stop custom vibration, use vibrator.stopVibration10+.
callbackAsyncCallback<void>YesCallback used to return the result. If the vibration stops, err is undefined; otherwise, err is an error object.

Error codes

For details about the error codes, see Universal Error Codes.

IDError Message
201Permission denied.
401Parameter error.Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed.

Example

Stop vibration of the specified duration.

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

try {
  // Start vibration of the specified duration.
  vibrator.startVibration({
    type: 'time',
    duration: 1000,
  }, {
    id: 0,
    usage: 'alarm' // The switch control is subject to the selected type.
  }, (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 {
  // Stop vibration in VIBRATOR_STOP_MODE_TIME mode.
  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}`);
}

Stop preset vibration.

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

try {
  // Start vibration with a preset effect.
  vibrator.startVibration({
    type: 'preset',
    effectId: 'haptic.clock.timer',
    count: 1,
  }, {
    id: 0,
    usage: 'alarm' // The switch control is subject to the selected type.
  }, (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 {
  // Stop vibration in VIBRATOR_STOP_MODE_PRESET mode.
  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.stopVibration9+

stopVibration(stopMode: VibratorStopMode): Promise<void>

Stops vibration in the specified mode. This API uses a promise to return the result.

Required permissions: ohos.permission.VIBRATE

System capability: SystemCapability.Sensors.MiscDevice

Parameters

NameTypeMandatoryDescription
stopModeVibratorStopModeYesVibration stop mode:
- VIBRATOR_STOP_MODE_TIME: used to stop vibration of the specified duration.
- VIBRATOR_STOP_MODE_PRESET: used to stop vibration of the preset effect.
To stop custom vibration, use vibrator.stopVibration10+.

Return value

TypeDescription
Promise<void>Promise that returns no value.

Error codes

For details about the error codes, see Universal Error Codes.

IDError Message
201Permission denied.
401Parameter error.Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed.

Example

Stop vibration of the specified duration.

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

try {
  // Start vibration of the specified duration.
  vibrator.startVibration({
    type: 'time',
    duration: 1000,
  }, {
    id: 0,
    usage: 'alarm' // The switch control is subject to the selected type.
  }).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 {
  // Stop vibration in VIBRATOR_STOP_MODE_TIME mode.
  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}`);
}

Stop preset vibration.

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

try {
  // Start vibration with a preset effect.
  vibrator.startVibration({
    type: 'preset',
    effectId: 'haptic.clock.timer',
    count: 1,
  }, {
    id: 0,
    usage: 'alarm' // The switch control is subject to the selected type.
  }).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 {
  // Stop vibration in VIBRATOR_STOP_MODE_PRESET mode.
  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.stopVibration10+

stopVibration(callback: AsyncCallback<void>): void

Stops vibration in all modes. This API uses an asynchronous callback to return the result.

Required permissions: ohos.permission.VIBRATE

Atomic service API: This API can be used in atomic services since API version 11.

System capability: SystemCapability.Sensors.MiscDevice

Parameters

NameTypeMandatoryDescription
callbackAsyncCallback<void>YesCallback used to return the result. If the vibration stops, err is undefined; otherwise, err is an error object.

Error codes

For details about the error codes, see Universal Error Codes.

IDError Message
201Permission denied.

Example

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

try {
  // Stop vibration in all modes.
  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.stopVibration10+

stopVibration(): Promise<void>

Stops vibration in all modes. This API uses a promise to return the result.

Required permissions: ohos.permission.VIBRATE

Atomic service API: This API can be used in atomic services since API version 11.

System capability: SystemCapability.Sensors.MiscDevice

Return value

TypeDescription
Promise<void>Promise that returns no value.

Error codes

For details about the error codes, see Universal Error Codes.

IDError Message
201Permission denied.

Example

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

try {
  // Stop vibration in all modes.
  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.stopVibrationSync12+

stopVibrationSync(): void

Stops any form of motor vibration.

Required permissions: ohos.permission.VIBRATE

Atomic service API: This API can be used in atomic services since API version 12.

System capability: SystemCapability.Sensors.MiscDevice

Error codes

For details about the error codes, see Vibrator Error Codes and Universal Error Codes.

IDError Message
201Permission denied.
14600101Device operation failed.

Example

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

try {
  // Stop any form of motor vibration.
    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.isSupportEffect10+

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

Checks whether an effect ID is supported. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.Sensors.MiscDevice

Parameters

NameTypeMandatoryDescription
effectIdstringYesVibration effect ID.
callbackAsyncCallback<boolean>YesCallback used to return the result. The value true means that the effect ID is supported, and the value false means the opposite.

Error codes

For details about the error codes, see Universal Error Codes.

IDError Message
201Permission denied.
401Parameter error.Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed.

Example

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

try {
  // Check whether 'haptic.clock.timer' is supported.
  vibrator.isSupportEffect('haptic.clock.timer', (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 {
        // To use startVibration, you must configure the ohos.permission.VIBRATE permission.
        vibrator.startVibration({
          type: 'preset',
          effectId: 'haptic.clock.timer',
          count: 1,
        }, {
          usage: 'unknown' // The switch control is subject to the selected type.
        }, (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.isSupportEffect10+

isSupportEffect(effectId: string): Promise<boolean>

Checks whether an effect ID is supported. This API uses a promise to return the result.

System capability: SystemCapability.Sensors.MiscDevice

Parameters

NameTypeMandatoryDescription
effectIdstringYesVibration effect ID.

Return value

TypeDescription
Promise<boolean>Promise that returns the result. The value true means that the effect ID is supported, and the value false means the opposite.

Error codes

For details about the error codes, see Universal Error Codes.

IDError Message
201Permission denied.
401Parameter error.Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed.

Example

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

try {
  // Check whether 'haptic.clock.timer' is supported.
  vibrator.isSupportEffect('haptic.clock.timer').then((state: boolean) => {
    console.info(`The query result is ${state}`);
    if (state) {
      try {
        vibrator.startVibration({
          type: 'preset',
          effectId: 'haptic.clock.timer',
          count: 1,
        }, {
          usage: 'unknown' // The switch control is subject to the selected type.
        }).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.isSupportEffectSync12+

isSupportEffectSync(effectId: string): boolean

Checks whether the preset vibration effect is supported.

System capability: SystemCapability.Sensors.MiscDevice

Parameters

NameTypeMandatoryDescription
effectIdstringYesID of the preset vibration effect.

Return value

TypeDescription
booleanReturned object. The value true means that the effect ID is supported, and the value false means the opposite.

Error codes

For details about the error codes, see Vibrator Error Codes and Universal Error Codes.

IDError Message
401Parameter error.Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed.
14600101Device operation failed.

Example

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

try {
    // Check whether the preset 'haptic.clock.timer' is supported.
    let ret = vibrator.isSupportEffectSync('haptic.clock.timer');
    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.isHdHapticSupported12+

isHdHapticSupported(): boolean

Checks whether HD vibration is supported.

System capability: SystemCapability.Sensors.MiscDevice

Return value

TypeDescription
booleanBoolean value indicating whether HD vibration is supported. The value true indicates that HD vibration is supported, and the value false indicates the opposite.

Error codes

For details about the error codes, see Vibrator Error Codes.

IDError Message
14600101Device operation failed.

Example

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

try {
    // Check whether HD vibration is supported.
    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}`);
}

VibratorPatternBuilder18+

vibrator('addContinuousEvent')18+

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

Adds a long vibration event as a VibratorPattern object.

System capability: SystemCapability.Sensors.MiscDevice

Parameters

NameTypeMandatoryDescription
timenumberYesStart time of the long vibration.
durationnumberYesDuration of the long vibration.
optionsContinuousParamNoOptional parameters.

Return value

TypeDescription
VibratorPatternBuilderVibratorPatternBuilder object representing a long vibration event.

Error codes

For details about the error codes, see Universal Error Codes.

IDError Message
401Parameter error.

Example

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

let builder = new vibrator.VibratorPatternBuilder();
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 }
  ] // No less than four VibratorCurvePoint objects must be set. The maximum value is 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')18+

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

Adds a short vibration event as a VibratorPattern object.

System capability: SystemCapability.Sensors.MiscDevice

Parameters

NameTypeMandatoryDescription
timenumberYesStart time of long vibration.
optionsTransientParamNoOptional parameters.

Return value

TypeDescription
VibratorPatternBuilderVibratorPatternBuilder object representing a short vibration event.

Error codes

For details about the error codes, see Universal Error Codes.

IDError Message
401Parameter error.

Example

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.log(`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')18+

build(): VibratorPattern;

Constructor used to create a VibratorPattern object, which determines the vibration sequence of short or long events.

System capability: SystemCapability.Sensors.MiscDevice

Return value

TypeDescription
VibratorPatternVibratorPattern object.

Example

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.log(`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", // The switch control is subject to the selected type.
  }, (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

Enumerates the preset vibration effect IDs. This parameter is needed when you call vibrator.startVibration9+ or vibrator.stopVibration9+ to deliver the vibration effect specified by VibratePreset. This parameter supports a variety of values, such as haptic.clock.timer.

Note: Preset effects vary according to devices. You are advised to call vibrator.isSupportEffect10+ to check whether the device supports the preset effect before use.

System capability: SystemCapability.Sensors.MiscDevice

NameValueDescription
EFFECT_CLOCK_TIMER'haptic.clock.timer'Vibration effect when a user adjusts the timer.

HapticFeedback12+

Defines the vibration effect. The frequency of the same vibration effect may vary depending on the vibrator, but the frequency trend remains consistent.

System capability: SystemCapability.Sensors.MiscDevice

NameValueDescription
EFFECT_SOFT'haptic.effect.soft'Soft vibration, low frequency.
EFFECT_HARD'haptic.effect.hard'Hard vibration, medium frequency.
EFFECT_SHARP'haptic.effect.sharp'Sharp vibration, high frequency.
EFFECT_NOTICE_SUCCESS18+'haptic.notice.success'Vibration for a success notification.
EFFECT_NOTICE_FAILURE18+'haptic.notice.fail'Vibration for a failure notification.
EFFECT_NOTICE_WARNING18+'haptic.notice.warning'Vibration for an alert.

VibratorStopMode

Enumerates vibration stop modes. This parameter is required for vibrator.stopVibration9+ or vibrator.stopVibration9+. The stop mode must match that delivered in VibrateEffect9+.

System capability: SystemCapability.Sensors.MiscDevice

NameValueDescription
VIBRATOR_STOP_MODE_TIME'time'The vibration to stop is in duration mode.
VIBRATOR_STOP_MODE_PRESET'preset'The vibration to stop is in EffectId mode.

VibrateEffect9+

Describes the vibration effect. This parameter is required for vibrator.startVibration9+ or vibrator.startVibration9+.

System capability: SystemCapability.Sensors.MiscDevice

TypeDescription
VibrateTimeStart vibration of the specified duration.
Atomic service API: This API can be used in atomic services since API version 11.
VibratePresetVibration with a preset effect.
VibrateFromFileVibration according to a custom vibration configuration file.
VibrateFromPattern18+Triggers vibration with the custom effect. This API uses an asynchronous callback to return the result.

VibrateTime9+

Represents vibration of the specified duration.

Atomic service API: This API can be used in atomic services since API version 11.

System capability: SystemCapability.Sensors.MiscDevice

NameTypeMandatoryDescription
type'time'YesThe value is time, indicating vibration of the specified duration.
durationnumberYesVibration duration, in ms.

VibratePreset9+

Represents the preset vibration effect. You can pass this value to VibrateEffect9+ to specify a preset vibration effect when calling vibrator.startVibration9+ or vibrator.startVibration9+.

System capability: SystemCapability.Sensors.MiscDevice

NameTypeMandatoryDescription
type'preset'YesThe value preset means vibration with the specified effect.
effectIdstringYesPreset vibration effect ID.
countnumberNoNumber of repeated vibrations. This parameter is optional. The default value is 1.
intensity12+numberNoVibration intensity. This parameter is optional. The value range is [0, 100]. The default value is 100. If vibration intensity adjustment is not supported, the default vibration intensity will be used.

VibrateFromFile10+

Represents a custom vibration pattern. It is supported only by certain devices. An error code will be returned if a device does not support this vibration mode. You can pass this value to VibrateEffect9+ to specify a custom vibration pattern when calling vibrator.startVibration9+ or vibrator.startVibration9+.

System capability: SystemCapability.Sensors.MiscDevice

NameTypeMandatoryDescription
type'file'YesThe value file means vibration according to a vibration configuration file.
hapticFdHapticFileDescriptor10+YesFile descriptor (FD) of the vibration configuration file.

HapticFileDescriptor10+

Describes the FD of a custom vibration configuration file. Ensure that the file is available, and the parameters in it can be obtained from the sandbox path through the file management API or from the HAP resource through the resource management API. The use case is as follows: The system triggers vibration according to the sequence set in a configuration file, based on the specified offset and length. For details about the storage format of the vibration sequence, see Custom Vibration.

System capability: SystemCapability.Sensors.MiscDevice

NameTypeMandatoryDescription
fdnumberYesFD of the custom vibration configuration file.
offsetnumberNoOffset from the start position of the file, in bytes. The default value is the start position of the file, and the value cannot exceed the valid range of the file.
lengthnumberNoResource length, in bytes. The default value is the length from the offset position to the end of the file, and the value cannot exceed the valid range of the file.

VibratorEventType18+

Vibration event type.

System capability: SystemCapability.Sensors.MiscDevice

NameTypeMandatoryDescription
CONTINUOUSnumberYesThe value 0 indicates long vibration.
TRANSIENTnumberYesThe value 1 indicates short vibration.

VibratorCurvePoint18+

Defines the gain relative to the vibration intensity.

System capability: SystemCapability.Sensors.MiscDevice

NameTypeMandatoryDescription
timenumberYesStart time offset.
intensitynumberNoGain relative to the vibration intensity. This parameter is optional. The value range is [0, 1]. If this parameter is left empty, the default value is 1.
frequencynumberNoChange relative to the vibration frequency. This parameter is optional. The value range is [-100, 100]. If this parameter is left empty, the default value is 0.

VibratorEvent18+

Vibration event.

System capability: SystemCapability.Sensors.MiscDevice

NameTypeMandatoryDescription
eventTypeVibratorEventTypeYesVibration event type.
timenumberYesVibration start time.
durationnumberNoVibration duration. This parameter is optional. The value range is [0, 5000]. The default value is 48 for short vibration and 1000 for long vibration.
intensitynumberNoVibration intensity. This parameter is optional. The value range is [0, 100]. If this parameter is left empty, the default value is 100.
frequencynumberNoVibration frequency. This parameter is optional.The value range is [0, 100]. If this parameter is left empty, the default value is 50.
indexnumberNoChannel number. This parameter is optional. If this parameter is left empty, the default value is 0.
pointsArray<VibratorCurvePoint>NoAdjustment points of the vibration curve.

VibratorPattern18+

Defines the vibration sequence.

System capability: SystemCapability.Sensors.MiscDevice

NameTypeMandatoryDescription
timenumberYesAbsolute vibration start time.
eventsArray<VibratorEvent>YesVibration event array, which is the VibratorPattern object returned by **build() **.

ContinuousParam18+

Defines the parameters for continuous vibration.

System capability: SystemCapability.Sensors.MiscDevice

NameTypeMandatoryDescription
intensitynumberNoVibration intensity. This parameter is optional. The value range is [0, 100]. If this parameter is left empty, the default value is 100.
frequencynumberNoVibration frequency. This parameter is optional.The value range is [0, 100]. If this parameter is left empty, the default value is 50.
pointsVibratorCurvePoint[]NoAdjustment points of the vibration curve.
indexnumberNoChannel number. This parameter is optional. If this parameter is left empty, the default value is 0.

TransientParam18+

Defines the parameters for transient vibration.

System capability: SystemCapability.Sensors.MiscDevice

NameTypeMandatoryDescription
intensitynumberNoVibration intensity. This parameter is optional. If this parameter is left empty, the default value is 100.
frequencynumberNoVibration frequency. This parameter is optional. If this parameter is left empty, the default value is 50.
indexnumberNoChannel number. This parameter is optional. If this parameter is left empty, the default value is 0.

VibrateFromPattern18+

Defines the custom vibration effect.

System capability: SystemCapability.Sensors.MiscDevice

NameTypeMandatoryDescription
type'pattern'YesIf the value is pattern, the vibrator vibrates based on the specified pattern.
patternVibratorPatternYesVibration event array, which is the VibratorPattern object returned by **build() **.

VibrateAttribute9+

Describes the vibration attribute.

Atomic service API: This API can be used in atomic services since API version 11.

System capability: SystemCapability.Sensors.MiscDevice

NameTypeMandatoryDescription
idnumberNoVibrator ID. The default value is 0.
usageUsageYesVibration scenario.

Usage9+

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

Enumerates the vibration scenarios.

Atomic service API: This API can be used in atomic services since API version 11.

System capability: SystemCapability.Sensors.MiscDevice

TypeDescription
'unknown'Unknown scenario, with the lowest priority. This parameter has a fixed value of unknown.
'alarm'Vibration for alarms. This parameter has a fixed value of alarm.
'ring'Vibration for ringing. This parameter has a fixed value of ring.
'notification'Vibration for notification. This parameter has a fixed value of notification.
'communication'Vibration for communication. This parameter has a fixed value of communication.
'touch'Vibration for touch. This parameter has a fixed value of touch.
'media'Vibration for media. This parameter has a fixed value of media.
'physicalFeedback'Vibration for physical feedback. This parameter has a fixed value of physicalFeedback.
'simulateReality'Vibration for simulated reality. This parameter has a fixed value of simulateReality.

vibrator.vibrate(deprecated)

vibrate(duration: number): Promise<void>

Triggers vibration with the specified duration. This API uses a promise to return the result.

This API is deprecated since API version 9. You are advised to use vibrator.startVibration9+ instead.

Required permissions: ohos.permission.VIBRATE

System capability: SystemCapability.Sensors.MiscDevice

Parameters

NameTypeMandatoryDescription
durationnumberYesVibration duration, in ms.

Return value

TypeDescription
Promise<void>Promise that returns no value.

Example

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

vibrator.vibrate(1000).then(() => {
  console.info('Succeed in vibrating');
}, (error: BusinessError) => {
  console.error(`Failed to vibrate. Code: ${error.code}, message: ${error.message}`);
});

vibrator.vibrate(deprecated)

vibrate(duration: number, callback?: AsyncCallback<void>): void

Triggers vibration with the specified duration. This API uses an asynchronous callback to return the result.

This API is deprecated since API version 9. You are advised to use vibrator.startVibration9+ instead.

Required permissions: ohos.permission.VIBRATE

System capability: SystemCapability.Sensors.MiscDevice

Parameters

NameTypeMandatoryDescription
durationnumberYesVibration duration, in ms.
callbackAsyncCallback<void>NoCallback used to return the result. If the vibration starts, err is undefined; otherwise, err is an error object.

Example

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

vibrator.vibrate(1000, (error: BusinessError) => {
  if (error) {
    console.error(`Failed to vibrate. Code: ${error.code}, message: ${error.message}`);
  } else {
    console.info('Succeed in vibrating');
  }
})

vibrator.vibrate(deprecated)

vibrate(effectId: EffectId): Promise<void>

Triggers vibration with the specified effect. This API uses a promise to return the result.

This API is deprecated since API version 9. You are advised to use vibrator.startVibration9+ instead.

Required permissions: ohos.permission.VIBRATE

System capability: SystemCapability.Sensors.MiscDevice

Parameters

NameTypeMandatoryDescription
effectIdEffectIdYesPreset vibration effect ID.

Return value

TypeDescription
Promise<void>Promise that returns no value.

Example

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

vibrator.vibrate(vibrator.EffectId.EFFECT_CLOCK_TIMER).then(() => {
  console.info('Succeed in vibrating');
}, (error: BusinessError) => {
  console.error(`Failed to vibrate. Code: ${error.code}, message: ${error.message}`);
});

vibrator.vibrate(deprecated)

vibrate(effectId: EffectId, callback?: AsyncCallback<void>): void

Triggers vibration with the specified effect. This API uses an asynchronous callback to return the result.

This API is deprecated since API version 9. You are advised to use vibrator.startVibration9+ instead.

Required permissions: ohos.permission.VIBRATE

System capability: SystemCapability.Sensors.MiscDevice

Parameters

NameTypeMandatoryDescription
effectIdEffectIdYesPreset vibration effect ID.
callbackAsyncCallback<void>NoCallback used to return the result. If the vibration starts, err is undefined; otherwise, err is an error object.

Example

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

vibrator.vibrate(vibrator.EffectId.EFFECT_CLOCK_TIMER, (error: BusinessError) => {
  if (error) {
    console.error(`Failed to vibrate. Code: ${error.code}, message: ${error.message}`);
  } else {
    console.info('Succeed in vibrating');
  }
})

vibrator.stop(deprecated)

stop(stopMode: VibratorStopMode): Promise<void>

Stops vibration in the specified mode. This API uses a promise to return the result.

This API is deprecated since API version 9. You are advised to use vibrator.stopVibration9+ instead.

Required permissions: ohos.permission.VIBRATE

System capability: SystemCapability.Sensors.MiscDevice

Parameters

NameTypeMandatoryDescription
stopModeVibratorStopModeYesMode to stop the vibration.

Return value

TypeDescription
Promise<void>Promise that returns no value.

Example

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

// Start vibration based on the specified effect ID.
vibrator.vibrate(vibrator.EffectId.EFFECT_CLOCK_TIMER, (error: BusinessError) => {
  if (error) {
    console.error(`Failed to vibrate. Code: ${error.code}, message: ${error.message}`);
  } else {
    console.info('Succeed in vibrating');
  }
})
// Stop vibration in VIBRATOR_STOP_MODE_PRESET mode.
vibrator.stop(vibrator.VibratorStopMode.VIBRATOR_STOP_MODE_PRESET).then(() => {
  console.info('Succeed in stopping');
}, (error: BusinessError) => {
  console.error(`Failed to stop. Code: ${error.code}, message: ${error.message}`);
});

vibrator.stop(deprecated)

stop(stopMode: VibratorStopMode, callback?: AsyncCallback<void>): void

Stops vibration in the specified mode. This API uses an asynchronous callback to return the result.

This API is deprecated since API version 9. You are advised to use vibrator.stopVibration9+ instead.

Required permissions: ohos.permission.VIBRATE

System capability: SystemCapability.Sensors.MiscDevice

Parameters

NameTypeMandatoryDescription
stopModeVibratorStopModeYesMode to stop the vibration.
callbackAsyncCallback<void>NoCallback used to return the result. If the vibration stops, err is undefined; otherwise, err is an error object.

Example

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

// Start vibration based on the specified effect ID.
vibrator.vibrate(vibrator.EffectId.EFFECT_CLOCK_TIMER, (error: BusinessError) => {
  if (error) {
    console.error(`Failed to vibrate. Code: ${error.code}, message: ${error.message}`);
  } else {
    console.info('Succeed in vibrating');
  }
})
// Stop vibration in VIBRATOR_STOP_MODE_PRESET mode.
vibrator.stop(vibrator.VibratorStopMode.VIBRATOR_STOP_MODE_PRESET, (error: BusinessError) => {
  if (error) {
    console.error(`Failed to stop. Code: ${error.code}, message: ${error.message}`);
  } else {
    console.info('Succeed in stopping');
  }
})

你可能感兴趣的鸿蒙文章

harmony 鸿蒙Sensor Service Kit

harmony 鸿蒙Sensor

harmony 鸿蒙Vibrator

harmony 鸿蒙Vibrator_Attribute

harmony 鸿蒙Vibrator_FileDescription

harmony 鸿蒙Sensor Error Codes

harmony 鸿蒙Vibrator Error Codes

harmony 鸿蒙@ohos.sensor (Sensor) (System API)

harmony 鸿蒙js-apis-sensor

harmony 鸿蒙@system.sensor (Sensor)

  • 所属分类: 后端技术
  • 本文标签: 鸿蒙 软件
  • 版权声明: 本文链接 https://seaxiang.com/blog/4DZylp