android设置只震动,Android 高版本中无法在后台震动 Ignoring incoming vibration

在Android 10上,应用进入后台后无法震动,原因是系统限制。通过分析VibratorService源码,发现需要在震动时添加AudioAttributes,并设置适当的usage属性,如USAGE_ALARM或USAGE_NOTIFICATION,以允许震动。代码示例中展示了如何根据版本动态设置audioAttributes,从而解决震动问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有用户反馈在Android 10上,app到后台之后无法震动,调试后发现有一行红色的提示

VibratorService: Ignoring incoming vibration as process with uid = 10054 is background, usage = USAGE_UNKNOWN

调用震动的代码是这样:

Vibrator mVibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);

long[] patern = {0,1000,1000};

mVibrator.vibrate(patern, 1);

本来好好的呀,咋就突然不行了?

我们去找找这个类 VibratorService。先去 http://androidxref.com 看看,发现没有10.0的源码,那就先找找9.0的。我们发现了它:/frameworks/base/services/core/java/com/android/server/VibratorService.java

然而仔细搜索并没有"background"字样,说明确实10.0有修改,9.0并不同。androidxref确实年久失修啊,只更新到 2018-08-11 。

也可以去这里看代码:http://aospxref.com/android-10.0.0_r2/xref/frameworks/base/

public void vibrate(int uid, String opPkg, VibrationEffect effect, int usageHint, String reason,

IBinder token) {

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值