You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中多振动模式依次执行失效问题求助

解决Android振动仅最后一种模式生效的问题

核心原因

Android的Vibrator组件在连续调用vibrate()方法时,新的请求会直接中断并替换当前正在执行的振动任务——这就是你设置多种模式后,只有最后一种生效的根本原因。

可行解决方案

方案1:合并振动模式为单个数组

把所有振动和停顿的时长按顺序组合成一个数组,一次性传给vibrate(),系统会自动按序列执行完整的振动流程。

示例代码(Kotlin):

// 组合后的振动序列:立即振动500ms → 停顿200ms → 振动300ms → 停顿100ms → 振动800ms
val combinedVibration = longArrayOf(0, 500, 200, 300, 100, 800)
val vibrator = getSystemService(Context.VIBRATOR_SERVICE) as Vibrator

// 检查权限(Android 6.0+需动态申请)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    if (checkSelfPermission(Manifest.permission.VIBRATE) == PackageManager.PERMISSION_GRANTED) {
        vibrator.vibrate(VibrationEffect.createWaveform(combinedVibration, -1)) // -1表示不循环
    }
} else {
    @Suppress("DEPRECATION")
    vibrator.vibrate(combinedVibration, -1)
}

数组规则:偶数位是停顿时长,奇数位是振动时长,第一个元素设为0表示立即启动振动。

方案2:用协程/Handler依次执行

如果需要在振动间隙执行其他逻辑,或者必须分开控制每个模式,可以通过延迟等待前一次振动完成后再启动下一个。

示例代码(Kotlin协程):

val vibrator = getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
// 定义单独的振动模式列表
val vibrationList = listOf(
    longArrayOf(0, 500),  // 模式1:振动500ms
    longArrayOf(0, 300),  // 模式2:振动300ms
    longArrayOf(0, 800)   // 模式3:振动800ms
)

// 在生命周期安全的协程中执行
lifecycleScope.launch {
    vibrationList.forEach { pattern ->
        // 检查权限并执行振动
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            if (checkSelfPermission(Manifest.permission.VIBRATE) == PackageManager.PERMISSION_GRANTED) {
                vibrator.vibrate(VibrationEffect.createWaveform(pattern, -1))
            }
        } else {
            @Suppress("DEPRECATION")
            vibrator.vibrate(pattern, -1)
        }
        // 等待当前振动的总时长(数组所有元素之和)
        delay(pattern.sum())
    }
}

必做前置检查

  1. 确保在AndroidManifest.xml中声明振动权限:
<uses-permission android:name="android.permission.VIBRATE" />
  1. Android 12+(API 31)建议使用VibrationEffect替代旧的vibrate()重载方法,避免兼容性问题。
  2. 若使用循环振动,记得在不需要时调用vibrator.cancel()终止振动。

内容的提问来源于stack exchange,提问作者عبدالله عبدالغفار

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 11:24:17