Вибрация, вызванная сигналом тревоги, когда устройство спит, не останавливается
Мне довольно интересно, относится ли это конкретно к моему устройству (Nexus 4, Android 4.3, стоковое ПЗУ), но у меня есть сигнал тревоги, зарегистрированный один раз через AlarmManager. При срабатывании устройство настроено на вибрацию в течение двух секунд. Если сигнал тревоги срабатывает при включенном устройстве, то он правильно вибрирует в течение двух секунд. Однако, если сигнал тревоги срабатывает, когда устройство выключено (и отсоединено от сети), вибрация начинается, но не прекращается, пока не нажата кнопка питания (чтобы включить устройство). Вот код для регистрации тревоги:
public static void registerAlarm(Context context, int uniqueId, long triggerAlarmAt)
{
Intent intent = new Intent(context, AlarmReceiver.class);
intent.setAction("com.myapp.ALARM_EVENT");
PendingIntent pendingIntent = PendingIntent.getBroadcast(context.getApplicationContext(), uniqueId, intent, 0);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, triggerAlarmAt, pendingIntent);
}
И код получателя:
public class AlarmReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent arg1)
{
Toast.makeText(context, "Test of alarm", Toast.LENGTH_LONG).show();
Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(2000);
}
}
Есть идеи, почему это происходит или как это предотвратить?
1 ответ
Наконец-то понял это. Мой безобидный "Тост", который срабатывает до того, как вибрация заставляет вибратор зависать, пока тост не будет готов. Тост не показывался, пока экран не был включен, и это каким-то образом блокировало завершение вибрации. Удаление тоста решило мою проблему, и вибрация прекратилась через две секунды, как и ожидалось, даже с выключенным экраном.