Broadcast Receiver ACTION_TIME_TICK

L

Luser_k

Neues Mitglied
2
Hi,

wie verstehe ich die Broadcast Receiver mit ACTION_TIME_TICK?

Kann mir jemand da Licht reinbringen?

Wird vom System wirklich nach jeder Minute ein Broadcast Intent abgeschickt, den man abfangen kann?

Ich habe ein App, bei der man eine Erinnerung einstellt, also 3 Tage vor Datum X.

Dann könnte ich ja die Differenz in Minuten vom eingestellten Datum bis zur Erinnerung zählen. Also die Zahl nach jedem ACTION_TIME_TICK dekrementieren.

Anschließend wenn die Differenz == 0, dann rufe die gewünschte Erinnerungsactivity auf.

Oder?

Bitte um Hilfe in Android-Hilfe :)

Gruß

Luser_k
 
Das halte ich für kein gute Idee. Erstens wird dei Broadcast receiver den Gerät aufwecken
und batterie leersaugen. Außerdem wäre es davon auszugehen. das
dein Gerät innnerhaöb von 3 Tagen neu gebutet wird - somit sind die alarms weg.

Mein Vorschlag:

1. Bestelle den Alarm mit:
Code:
   alarmService.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, <time in millis seit 1.1.1970> ,pendingIntent);

2. Bastle einen on-Boot Handler damit du es nach dem neustart wieder aktivieren kannst.

Mein Beispiel, aber für alle 15 Minuten periodisch:
Code:
public class Activator extends BroadcastReceiver {

    public static final String INTENT = "de.pribluda.android.lines.ALARM";

    /**
     * it does not matter, which alarm we are receiving  - either from boot, or from
     * elapsed timeout
     *
     * @param context
     * @param intent
     */

    @Override
    public void onReceive(Context context, Intent intent) {
        System.err.println(" **************************** activating service - broadcast received");

        Intent alarmIntent = new Intent(INTENT);

        AlarmManager alarmService = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);

        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, alarmIntent, PendingIntent.FLAG_NO_CREATE);
        //  no intent there, schedule it     
        if (pendingIntent == null) {
            pendingIntent = PendingIntent.getBroadcast(context, 0, alarmIntent, 0);
            // schedule new alarm in 15 minutes
            alarmService.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, System.currentTimeMillis() + AlarmManager.INTERVAL_FIFTEEN_MINUTES , AlarmManager.INTERVAL_FIFTEEN_MINUTES, pendingIntent);
        }


    }
}

Und natürlich die Prmissions und Filter in dem Manifest nicht zu vergessen:
Code:
  <receiver android:name="de.pribluda.games.android.util.Activator"
                  android:enabled="true"
                  android:exported="true"
                >
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
                <action android:name="de.pribluda.android.lines.ALARM"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </receiver>
  <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
 

Ähnliche Themen

J
Antworten
2
Aufrufe
1.047
JonasSchmietzer
J
znieh99
Antworten
9
Aufrufe
1.146
znieh99
znieh99
N
  • N3cron
Antworten
10
Aufrufe
996
N3cron
N
Zurück
Oben Unten