添加震动

This commit is contained in:
2025-12-03 20:16:07 +08:00
parent 0d5e64e31a
commit 22a1f420ea
4 changed files with 98 additions and 3 deletions

View File

@@ -0,0 +1,69 @@
package com.xscm.modulemain.utils
import android.Manifest
import android.content.Context
import android.content.pm.PackageManager
import android.os.Vibrator
import android.os.VibrationEffect
import android.os.Build
import android.os.VibratorManager
import androidx.core.content.ContextCompat
import com.blankj.utilcode.util.LogUtils
class VibrationUtils {
/**
* 简单震动
* @param durationMillis 震动时长(毫秒)
*/
fun vibrate(context: Context, durationMillis: Long) {
val vibrator = getVibrator(context)
// 检查权限
if (ContextCompat.checkSelfPermission(context, Manifest.permission.VIBRATE)
!= PackageManager.PERMISSION_GRANTED) {
LogUtils.e("Vibration", "缺少震动权限")
return
}
// 检查设备支持
if (!vibrator.hasVibrator()) {
LogUtils.e("Vibration", "设备不支持震动")
return
}
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// API 26+ 推荐方式
val effect = VibrationEffect.createOneShot(
durationMillis,
VibrationEffect.DEFAULT_AMPLITUDE
)
vibrator.vibrate(effect)
} else {
// 旧版本方式
@Suppress("DEPRECATION")
vibrator.vibrate(durationMillis)
}
LogUtils.d("Vibration", "震动成功: ${durationMillis}ms")
} catch (e: Exception) {
LogUtils.e("Vibration", "震动失败", e)
}
}
/**
* 获取 Vibrator 实例
*/
private fun getVibrator(context: Context): Vibrator {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
// API 31+ 推荐方式
val vibratorManager = context.getSystemService(Context.VIBRATOR_MANAGER_SERVICE)
as VibratorManager
vibratorManager.defaultVibrator
} else {
// 旧版本
@Suppress("DEPRECATION")
context.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
}
}
}