有用户反馈在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) {