2016-04-15 3 views
-4

Мне очень нужна помощь, ребята, я пытаюсь сделать тост в определенное время с диспетчером аварийных сигналов от android. Я сделал некоторые исследования и я сделал этот код, но я не знаю, что это не нормально ... Я попробовал всеКак настроить будильник на студии Android?

public void start() { 
     AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
     Date dat = new Date(); 
     Calendar cal_alarm = Calendar.getInstance(); 
     Calendar cal_now = Calendar.getInstance(); 
     cal_now.setTime(dat); 
     cal_alarm.setTime(dat); 
     cal_alarm.set(Calendar.HOUR_OF_DAY,12); 
     cal_alarm.set(Calendar.MINUTE,13); 
     cal_alarm.set(Calendar.SECOND,0); 
     if(cal_alarm.before(cal_now)){ 
      cal_alarm.add(Calendar.DATE,1); 
     } 
     manager.set(AlarmManager.RTC_WAKEUP,cal_alarm.getTimeInMillis(),pendingIntent); 
    } 

Если я использую cal_alarm - cal_now в manager.set он выстреливает через 5 секунд ,

+0

Google для этого. В Android-разработчике есть полный загружаемый пример. –

+0

проверьте это http://stackoverflow.com/a/8801990/4414887 и http://stackoverflow.com/a/12124955/4414887 – anAmaka

+1

Возможный дубликат [Alarm Manager Example] (http://stackoverflow.com/questions/ 4459058/alarm-manager-example) –

ответ

2

Вам нужно добавить приемник, чтобы получить результат

В вашем AndroidManifest.xml добавить

<receiver android:name=".AlarmReceiver" /> 

Создать этот BroadcastReceiver AlarmReceiver.java

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.widget.Toast; 

public class AlarmReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     Toast.makeText(context, "ALARM", Toast.LENGTH_LONG).show(); 
    } 
} 

и наконец, исправить ваш метод start

public void start() { 
    AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
    Date dat = new Date(); 
    Calendar cal_alarm = Calendar.getInstance(); 
    Calendar cal_now = Calendar.getInstance(); 
    cal_now.setTime(dat); 
    cal_alarm.setTime(dat); 
    cal_alarm.set(Calendar.HOUR_OF_DAY,14); 
    cal_alarm.set(Calendar.MINUTE,18); 
    cal_alarm.set(Calendar.SECOND,0); 
    if(cal_alarm.before(cal_now)){ 
     cal_alarm.add(Calendar.DATE,1); 
    } 

    Intent myIntent = new Intent(context, AlarmReceiver.class); 
    pendingIntent = PendingIntent.getBroadcast(context, 0, myIntent, 0); 

    manager.set(AlarmManager.RTC_WAKEUP,cal_alarm.getTimeInMillis(), pendingIntent); 
} 
+0

У меня была декларация в манифесте, и у меня тоже был alarmreceiver.java. Но все равно ничего. –

+0

В манифесте вам не нужно добавлять расширение .java. Используйте CTRL + SPACE, чтобы помочь вам выбрать свой тег BroadcastReceiver внутри тега – Gorio

+0

Я загрузил полный проект диспетчера аварийных сообщений, и он все еще не работает –

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