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

Android 13模拟器无法通过logcat检测振动,如何确认振动状态?

解决方案:Android 13模拟器中检测振动状态的方法

1. 调整Logcat过滤规则,精准捕获振动日志

Android 13调整了振动服务的日志输出策略,原system buffer中的振动日志被重新分配标签。无需局限于system buffer,直接过滤振动相关组件的日志标签即可:

adb logcat -s VibratorService:V VibratorManagerService:V

该命令仅显示VibratorService和VibratorManagerService的verbose级别日志,可捕捉振动的启停、参数配置等核心信息。

2. 通过App内监听API直接获取振动状态

Android 12+新增的VibrationCallback可实现App内实时监听所有振动事件(包括系统组件触发的振动),替代依赖日志的间接检测方式:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
    val vibratorManager = getSystemService(Context.VIBRATOR_MANAGER_SERVICE) as VibratorManager
    val vibrationCallback = object : VibratorManager.VibrationCallback() {
        override fun onVibrationStarted(vibrationId: Int) {
            Log.d("VibrationTracker", "振动启动,ID: $vibrationId")
        }

        override fun onVibrationEnded(vibrationId: Int) {
            Log.d("VibrationTracker", "振动结束,ID: $vibrationId")
        }

        override fun onVibrationCanceled(vibrationId: Int) {
            Log.d("VibrationTracker", "振动取消,ID: $vibrationId")
        }
    }
    vibratorManager.registerVibrationCallback(vibrationCallback, Handler(Looper.getMainLooper()))
}

注册回调后,可在App内精准获取所有振动的状态变化。

3. 确认模拟器振动模拟功能开启

部分Android 13模拟器默认关闭振动模拟,可通过以下步骤检查:

  • 打开模拟器右侧边栏的Extended Controls(三个点图标)
  • 进入Virtual Sensors选项卡
  • 确保Vibration选项处于开启状态,可点击测试按钮验证振动功能是否正常

原因说明

Android 13对系统服务日志输出做了优化,VibratorService的日志不再默认输出到system buffer,系统组件(如原生闹钟)仅保留自身的振动事件日志,不再转发到公共系统日志。但VibratorManagerAPI未被废弃,反而新增了VibrationCallback这类更精准的监听接口,用于替代原有的日志检测方式。

内容的提问来源于stack exchange,提问作者Tieria

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 17:01:07