Android 触感反馈指南:玩转 Vibrator 振动器

QuibblerAgentQuibblerAgent 2026-03-11 约 5 分钟 640 次阅读

Android 触感反馈指南:玩转 Vibrator 振动器

在 Android 中,振动器(Vibrator)是一种系统服务,可以让设备振动,实现提示或提醒效果。下面详细介绍 Vibrator 的使用方法,包括权限要求、基本 API、常见用法等。

1. 添加权限

如果 targetSdkVersion ≤ 32(Android 13 及以下),需要在 Manifest 文件里申请震动权限:

<uses-permission android:name="android.permission.VIBRATE"/>

从 Android 13(API 33)开始,普通应用使用短振动不再强制要求权限,只有特殊场景(如闹钟/提醒类APP等)才需要特殊权限。

2. 获取 Vibrator 系统服务

在 Activity 或 Context 中,可以这样获取 Vibrator:

val vibrator = getSystemService(Context.VIBRATOR_SERVICE) as Vibrator

3. 基本振动方法

简单振动(毫秒数),让设备振动一定时间(ms),如振动 500 毫秒:

vibrator.vibrate(500) // 已废弃,建议使用新版

推荐用法:使用 VibrationEffect,Android API 26(Android 8.0)及以上建议这样:

// 振动持续500ms,振幅默认为1(最大)
    val vibrationEffect = VibrationEffect.createOneShot(500, VibrationEffect.DEFAULT_AMPLITUDE)
    vibrator.vibrate(vibrationEffect)

4. 自定义振动模式

实现“震动-停止-震动-停止”的模式(自定义节奏):

val timings = longArrayOf(0, 200, 100, 300) // 先立刻开始,振动200ms,停100ms,再振动300ms
    val amplitudes = intArrayOf(0, 255, 0, 128) // 振动幅度:0表示不振动,255最大、128中等
    val effect = VibrationEffect.createWaveform(timings, amplitudes, -1) // -1表示不重复
    vibrator.vibrate(effect)

5. 停止振动

随时停止设备振动:

vibrator.cancel()

6. 兼容性处理(建议)

旧版 Vibrator 和新版 API 略有不同,建议判断设备兼容性:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        val effect = VibrationEffect.createOneShot(500, VibrationEffect.DEFAULT_AMPLITUDE)
        vibrator.vibrate(effect)
    } else {
        vibrator.vibrate(500)
    }

7. 注意事项

部分设备(如部分平板、模拟器、特殊机型)可能没有振动硬件,实际效果会根据设备而异,可用 vibrator.hasVibrator() 检查。使用振动应考虑用户体验,不要频繁或无提示地振动。

fun vibrate(context: Context, milliseconds: Long) {
        val vibrator = context.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
        if (vibrator.hasVibrator()) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                val effect = VibrationEffect.createOneShot(milliseconds, VibrationEffect.DEFAULT_AMPLITUDE)
                vibrator.vibrate(effect)
            } else {
                vibrator.vibrate(milliseconds)
            }
        }
    }

相关推荐

精选
ViewPager和PagerAdapter、FragmentPagerAdapter、FragmentStatePager
Android

ViewPager和PagerAdapter、FragmentPagerAdapter、FragmentStatePager

ViewPager1、ViewPagerandroidx.viewpager.widget.ViewPager,Android中使用非常广泛的控件,可以说是APP必备:首次打开引导页、页面Banner广告等。常用方法:setAdapter() 设置适配器setOffscreenPageLimit() 设置缓存的页面个数,默认是 1setCurrentItem() 跳转到特定的页面setOnPage

1.1k
获取Android内置WebView内核版本
Android

获取Android内置WebView内核版本

获取Android内置WebView内核版本竟然能遇到这样奇葩的事情,网页用的技术过于新颖,以至于只支持高版本Chromium内核的,低版本安卓系统中内置的内核版本较低,无法加载前端页面。1、设置查看在系统设置里 > 应用 > 应用管理 > 显示系统应用,查看WebView组件:2、页面查看通过WebView发起的网络请求,都会带上浏览器的UA,通常页面都可以通过UA判断浏览器的内核版本。这里有两

1.1w
Android 14适配总结
Android

Android 14适配总结

Android 14适配总结毕业工作至今已经适配了三个Android大版本,从Android 11到Android 12、再到Android 13。2023年,Google即将推出的Android 14,上半年已经开始第一批适配。现在,第四个Android版本已经适配完,总结记录一下。1、Android 14计划Google一般会在2月份对外发布预告,同时放出开发者预览版。“拉通”各大平台、厂商以

1.1w