2015-03-28 5 views
1

У меня есть код, установленный на кнопке, которая устанавливает диспетчер аварийных сигналов для отправки широковещательной передачи и активации Wi-Fi на устройстве. Я установить задержку в течение 1 мин, но код, но сигнал гаснет, как только я нажимаю кнопкуAlarm Manager отключается, когда я нажимаю кнопку

Вот код на кнопку:

public void start(View view){ 
     AlarmManager alarm = (AlarmManager) getSystemService(ALARM_SERVICE); 
     Intent intent1 = new Intent(this,MyReceiver.class); 
     PendingIntent TurnWiFi = PendingIntent.getBroadcast(getApplicationContext(), 0, intent1, 0); 
     long milli = 60000; 
     alarm.set(AlarmManager.RTC,milli,TurnWiFi); 
    } 

Код в Receiver:

public class MyReceiver extends BroadcastReceiver{ 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.i("BroadcastReceiver","------------>In on receive method<-------------"); 
     WifiManager wifi_man = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); 
     wifi_man.setWifiEnabled(true); 

    } 
+0

вы можете попробовать и использовать alarm.setExact() вместо alarm.set(), если это решит вашу проблему: http://developer.android.com/reference/android/app/AlarmManager.html#setExact (int, long, android.app.PendingIntent) –

+0

setExact() и setWindow() должны использоваться только на уровне API 19 (Kitkat) и выше, поскольку посылка сигнала тревоги по умолчанию неточна, но я запускаю этот код на желе bean device so set() должен работать нормально, как и планировалось – HVenom

ответ

0

в alarm.set (AlarmManager.RTC, milli, TurnWiFi); milli уже принят
использовать Календарь для меньшей сложности.

это должно решить вашу проблему:
alarm.set(AlarmManager.RTC,System.currentTimeMillis() + milli,TurnWiFi);

UPDATE:

Объяснение:

Если заявленное время запуска в прошлом, тревога немедленно

триггер для AlarmManager.RTC (часы реального времени) - это время суток, обозначенное миллисекундами. и 60000 миллисов буквально в прошлом.

согласно документам, System.currentTimeMillis() + 60000 уходит в следующих 60secs

System.currentTimeMillis()
Возвращает текущее время в миллисекундах с 1 января 1970 00:00: 00.0 UTC.

+0

, пожалуйста, объясните, почему мне нужно использовать System.currentTimeMillis(); почему я не могу установить миллисекунды непосредственно – HVenom

+0

@HVenom cause trigger - это время суток, миллис в прошлом, и ваш будильник немедленно отключается. – Amir

Смежные вопросы