2016-03-22 4 views
0

Ich möchte einen Wecker stellen. Ich habe es getan, aber es funktioniert nur, wenn das Gerät nicht neu gestartet wurde. Wenn es war, bekomme ich nur keinen Alarm. Was muss ich tun, um meinen Alarm zu empfangen, egal, ob das Gerät neu gestartet wurde oder nicht? Das ist, wie ich die Alarmzeit eingestellt:Alarm empfangen, obwohl das Gerät neu gestartet wurde

AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); 
am.set(AlarmManager.RTC_WAKEUP,calendar1.getTimeInMillis(),pi1); 
+0

Sie benötigen einen 'BacgroundService' zu ​​schaffen, auf das zu tun und„Autoload“Ihr Service Neustart. – Aspicas

+0

@aspicas Können Sie es bitte weiter erklären? Du willst, dass ich einen Dienst starte, der einen Alarm setzt, habe ich recht? –

+0

Ja, die erste Option, die Sie benötigen, um einen 'bacgroundService' mit dem Empfänger auf dem Manifest zu erstellen, der beim Einschalten Ihres Geräts geöffnet wird, später auf backgrounService müssen Sie Ihren Code mit ÀlarmManager's setzen – Aspicas

Antwort

0

Dies ist, was ich in einer ähnlichen Situation versucht:

Machen Sie Ihre Rundfunkempfänger den Neustart des Systems erkennen. Sobald Ihr System neu gestartet wird, erkennt Ihr Broadcast-Empfänger es und Sie können Ihre Aufgabe ausführen. Wie in meinem Projekt habe ich eine Abfrage auf meine SQLite-Datenbank ausgeführt und alle nicht ausgeführten Alarme abgerufen und dann entsprechend meinen Anforderungen ausgeführt und die Datenbank mit der gleichen aktualisiert.

Sie können etwas ähnliches versuchen.

-Code Alarme abrufen:

Fügen Sie Ihre Broadcast-Receiver mit den folgenden Attributen:

<receiver android:name=".MyBroadcastReceiver"> 
     <intent-filter>  
      <action android:name="android.intent.action.BOOT_COMPLETED"/> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </receiver> 

Diese BroadcastReceiver wird Ihr Android-Gerät den Neustart erkennen und die OnReceive() -Methode des BroadcastReceiver auszuführen. Rufen Sie in der Methode onReceive() alle Alarme nach Ihren Kriterien ab und bearbeiten Sie sie anschließend weiter.

weiter zu erfahren, wie Aufzeichnungen oder Tupeln aus der SQLite-Datenbank abzurufen gehen über den folgenden Link:

http://developer.android.com/training/basics/data-storage/databases.html#ReadDbRow

+0

Nun, im Moment kann ich nur einen Alarm einstellen (kann nicht mit ganzen auf einmal arbeiten) Was können Sie für mich vorschlagen? –

+0

Wenn Sie es nur für einen Alarm möchten, können Sie die gleiche Technik (die ich oben beschrieben) mit gemeinsamen Einstellungen verwenden. –

+0

Wenn Sie für mehrere Alarme möchten, sobald ein Alarm vom Benutzer festgelegt wurde, speichern Sie den Anforderungscode von PendingIntent und die Uhrzeit- und Datumsdetails des Alarms in der SQLite-Datenbank und verarbeiten Sie alle Informationen von dort. –

Verwandte Themen