2013-08-20 6 views
1

Мне довольно интересно узнать, относится ли это к моему устройству (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

Наконец-то выдумал это. Мой безобидный «тост», который срабатывает до вибрации, заставлял вибратор висеть до тех пор, пока не был достигнут тост. Тост не показывался, пока экран не был включен, и это каким-то образом заблокировало завершение вибрации. Удаление Тоста решило мою проблему, и вибрация прекратилась через две секунды, как ожидалось, даже при выключенном экране.

+0

Пожалуйста, отметьте ваш вопрос как решение –