index.uts 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import Vibrator from "android.os.Vibrator";
  2. import VibratorManager from "android.os.VibratorManager";
  3. import VibrationEffect from "android.os.VibrationEffect";
  4. import Context from "android.content.Context";
  5. import Build from "android.os.Build";
  6. /**
  7. * 震动
  8. * @param {number} duration 震动时间单位ms
  9. */
  10. export function vibrate(duration: number) {
  11. try {
  12. const context = UTSAndroid.getAppContext() as Context;
  13. let vb: Vibrator | null = null;
  14. // Android 12 (API 31) 及以上使用 VibratorManager
  15. if (Build.VERSION.SDK_INT >= 31) {
  16. const vibratorManager = context.getSystemService(
  17. Context.VIBRATOR_MANAGER_SERVICE
  18. ) as VibratorManager;
  19. vb = vibratorManager.getDefaultVibrator();
  20. }
  21. if (vb != null && vb.hasVibrator()) {
  22. // Android 8.0 (API 26) 及以上使用 VibrationEffect
  23. if (Build.VERSION.SDK_INT >= 26) {
  24. const effect = VibrationEffect.createOneShot(
  25. duration.toLong(),
  26. VibrationEffect.DEFAULT_AMPLITUDE
  27. );
  28. vb.vibrate(effect);
  29. }
  30. }
  31. } catch (e) {
  32. console.error("震动失败:", e);
  33. }
  34. }