添加震动
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user