2016-04-15 10 views
-4

Ich brauche wirklich Hilfe Jungs, ich versuche, einen Toast zu einer bestimmten Zeit mit dem Alarm-Manager von Android erscheinen zu lassen. Ich einige der Forschung gemacht und ich diesen Code gemacht, aber ich weiß nicht, was nicht in Ordnung ist ... Ich habe alles versuchtWie setzt man den Alarm auf Android Studio?

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); 
    } 

Wenn ich cal_alarm verwenden - cal_now in manager.set es feuert nach 5 Sekunden .

+0

Google dafür. Es gibt ein komplettes herunterladbares Beispiel für Android-Entwickler. –

+0

überprüfen Sie diese http://stackoverflow.com/a/8801990/4414887 und http://stackoverflow.com/a/12124955/4414887 – anAmaka

+1

Mögliche Duplikate von [Alarm Manager Beispiel] (http://stackoverflow.com/questions/ 4459058/alarm-manager-beispiel) –

Antwort

2

Sie benötigen einen Empfänger hinzufügen, um das Ergebnis

In Ihrem AndroidManifest.xml hinzufügen, um dieses

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

Erstellen dieses 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(); 
    } 
} 

zu erhalten und Schließlich, fixieren Sie Ihre Methode 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

ich hatte die erklärung in manifest und ich hatte auch den alarmreceiver.java. Aber immer noch nichts. –

+0

In Manifest müssen Sie nicht die Erweiterung .java hinzufügen. Verwenden Sie STRG + LEERTASTE, um Ihnen zu helfen, Ihr BroadcastReceiver innerhalb des Etiketts – Gorio

+0

zu wählen Ich lud ein komplettes Projekt des Alarmmanagers herunter und es funktioniert immer noch nicht –