Я пытаюсь создать пользовательскую вибрацию входящего вызова
public class CallsReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
AudioManager am = (AudioManager) context.getSystemService(context.AUDIO_SERVICE);
long[] VIBRATE_PATTERN = {500,500,500,500,500,500,500,500};
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// API 26 and above
mVibrator.vibrate(VibrationEffect.createWaveform(VIBRATE_PATTERN,-1));
} else {
// Below API 26
mVibrator.vibrate(VIBRATE_PATTERN, -1);
}
}
}
}
Я уже пытался запустить вибрацию в новом потоке и запустить ее из службы, но безуспешно. Я провел исследование и понял, что на новых android уровнях API код в широковещательном приемнике выполняется с низким приоритетом, поэтому я попытался запустить задание расписания -> службу с более высоким приоритетом, и я получил тот же результат.
есть немного времени, когда начинается короткая вибрация, но она прекращается после этого