Einzelnen Beitrag anzeigen

Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.060 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Android AlarmManager periodisch einen Event bekommen

  Alt 23. Jul 2018, 10:39
Hallo Zusammen,

es gibt relativ wenig Informationen darüber wie der AlarmManager genutzt werden kann.
Ich habe zwei russische Berichte darüber gefunden, allerdings für XE5 und die passen auch nicht zu mein Vorhaben.
Ich möchte das der AlarmManager alle 30 Sekunden ein Event feuert. Über den AlarmManager deshalb weil wen die App beendet
wird würde der AlarmManager die App starten und den event feuern. Genau darum geht es.

Dazu muss man ein BroadcastReceiver registrieren der auf den Event reagiert. Doch wie registriert man so ein BroadcastReceiver und wie setzt man die Filter damit ein Event gefeuert wird?


Das sind meine Code schnipsel bis jetzt.
Delphi-Quellcode:

const intentAction = 'de.firma.action.CHECK_ACTIVE';


function TFormMain.getPendingIntent:JPendingIntent;
var intent : JIntent;
begin

  intent := TJIntent.Create;
  intent.setAction( StringToJString( intentAction ) );

  Result := TJPendingIntent.JavaClass.getBroadcast( TAndroidHelper.Context, 0, intent, 0 );
end;




function TFormMain.DateTimeLocalToUnixMSecGMT(const ADateTime: TDateTime): Int64;
begin
  Result := DateTimeToUnix(ADateTime) * MSecsPerSec - Round(TTimeZone.Local.UtcOffset.TotalMilliseconds);
end;



procedure TFormMain.setAlarm;
var penIntent : JPendingIntent;
begin
  penIntent := getPendingIntent;

  TAndroidHelper.AlarmManager.cancel( penIntent );
  TAndroidHelper.AlarmManager.&set(TJAlarmManager.JavaClass.RTC_WAKEUP, DateTimeLocalToUnixMSecGMT(IncSecond(Now,30)), penIntent );

end;

Gruß Kostas
  Mit Zitat antworten Zitat