Меня скорее интересует, относится ли это к моему устройству (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);
}
}
Любые идеи о том, почему это происходит или как это предотвратить?