German Service läuft im Hintergrund nicht weiter Smartwatch

Wolli013

Active Member
Licensed User
Longtime User
Weis einer wieso bei einer Smartwatch der Service im Hintergrund nicht weiter läuft?
Wenn sich die App wegdimmt oder man sie schliest wird der Service nich weiter geführt.
Weis einer was man machen kann das es auch im Hintergrund weiter läuft.

Ich brauche es für eine Termin überwachung.

Hier der Code:
Beim Smartphone läuft es Top auch beim schliesen der APP

B4X:
Dim NotiWecker As Notification
    NotiWecker.Initialize   
   
If MitTon = "1" Then
MpM.Initialize( )
MpM.Load(File.DirAssets, "notification-top.wav") 'Grundsätzlich in Kleinbuchstaben   
MpM.Play   
End If

    NotiWecker.Vibrate = True 'Vibrieren an
    NotiWecker.Light = False
    NotiWecker.OnGoingEvent = True
    NotiWecker.Icon = "weckeron"
    NotiWecker.SetInfo(Titel, "Termin um " & Erinnerung & " Uhr", TermineStop) 'TermineStop = Welche Sub
    NotiWecker.Notify(1)
 

Wolli013

Active Member
Licensed User
Longtime User
Hier nochmal der komplette Code.
Wie gesagt ist die App an, geht es ansonsten nicht.

B4X:
#Region Module Attributes
#StartAtBoot: false
'#StartAtBoot: True
'#StartCommandReturnValue: android.app.Service.START_STICKY
#End Region

Sub Process_Globals
Dim Cursor2 As Cursor   'Zeiger benennen   
Dim SQL2 As SQL
Dim timer1 As Timer
Dim Erinnerung, Titel, Selector, ID, TerminStart, MitTon As String
Dim TerminInfo1 As String
Dim MpM As MediaPlayer
End Sub

Sub Service_Create
End Sub

Sub Service_Start     
timer1.Initialize("timer1",10000) ' 1000 = 1 Sekunde
timer1.Enabled=True

   MpM.Initialize
   MpM.Load(File.DirAssets, "notification-top.wav") 'Grundsätzlich in Kleinbuchstaben   
   'MpM.Looping = True
   'MpM.SetVolume(1, 1)
End Sub

Sub Service_Destroy
'StopService("")  'Stop this service
'CancelScheduledService("")  'Cancel this service
'NotiWecker.Cancel(1) 'Lösche das Wecker Icon
'MpM.Stop
End Sub

Sub timer1_tick
'Termine Einlesen ##########################################################################
DateTime.DateFormat = "dd.MM.yyyy" 'Datumsformat
DateTime.TimeFormat = "HH:mm"   'Zeitformat
MitTon = ""
Selector = ""
TerminStart = ""

SQL2.Initialize(File.DirInternal, "termin.db", True)'Datenbank Verzeichnissangabe
Cursor2 = SQL2.ExecQuery("Select * FROM termin WHERE DatumVon = '" & DateTime.Date(DateTime.Now) & "'" & " ORDER BY TerminStart, ErinnerungVorherZeit ASC")
If Cursor2.RowCount > 0 Then 'Sind Datensätze vorhanden?
   
Cursor2.Position = 0'Zeiger auf den ersten sortierten Eintrag
TerminStart = Cursor2.GetString("TerminStart")

Log("Datum " & DateTime.Date(DateTime.Now))
 Log("TerminStart " & TerminStart)
  Log("Datum " & DateTime.Date(DateTime.Now))
  Log("Aktuelle Zeit " & DateTime.Time(DateTime.now))
  Log ("Alarmzeit " & Cursor2.GetString("ErinnerungVorherZeit"))
If TerminStart = "0" Then 'Ist der Termin noch nicht gestartet
'Alarmzeit überprüfung
Dim SZeit, AZeit As Long
SZeit = DateTime.Now' + (50 * DateTime.TicksPerSecond) ' + 1 Minute wegen dem Timer Interwall von 1 Minute
AZeit = DateTime.TimeParse(Cursor2.GetString("ErinnerungVorherZeit"))

 Log("Überprüfe jetzt die Alarmzeiten")
  Log("Aktuelle Pars Zeit " & SZeit)
  Log(" Alarm Parse Zeit " & AZeit)

If SZeit >= AZeit Then 'Alarm Anschalten wenn die Zeit erreicht wurde
'Variabel Zuordnung
Erinnerung = Cursor2.GetString("ZeitVon")
 Titel = Cursor2.GetString("Titel")
  ID = Cursor2.GetString("ID")
  Selector = Cursor2.GetString("Erinnerung")
             
'Termin Sperren um doppelten Aufruf zu verhindern
     Dim Mp, mp1 As Map  
     Mp.Initialize
     Mp.Put("ID", ID)
     mp1.Initialize   
    mp1.Put("TerminStart", "1")
    DBUtils.UpdateRecord2(SQL2, "termin", mp1, Mp)   
     
'Infos übergeben
 TerminInfo1 = "Termin, von - bis:" & CRLF & CRLF
   TerminInfo1 = TerminInfo1 & Cursor2.GetString("DatumVon") & " - " & Cursor2.GetString("ZeitVon") & " Uhr" & CRLF
   TerminInfo1 = TerminInfo1 & Cursor2.GetString("DatumBis") & " - " & Cursor2.GetString("ZeitBis") & " Uhr" & CRLF
TerminInfo1 = TerminInfo1 & "---------------------------------------------" & CRLF   
   TerminInfo1 = TerminInfo1 & "Titel / Kurzinfo: " & CRLF & CRLF
   TerminInfo1 = TerminInfo1 & Cursor2.GetString("Titel") & CRLF
TerminInfo1 = TerminInfo1 & "---------------------------------------------" & CRLF
 TerminInfo1 = TerminInfo1 & "Adressdaten:" & CRLF & CRLF
   TerminInfo1 = TerminInfo1 & Cursor2.GetString("Name") & CRLF
   TerminInfo1 = TerminInfo1 & Cursor2.GetString("Strasse") & CRLF
   TerminInfo1 = TerminInfo1 & Cursor2.GetString("Plz") & " "
   TerminInfo1 = TerminInfo1 & Cursor2.GetString("Ort") & CRLF   
TerminInfo1 = TerminInfo1 & "---------------------------------------------" & CRLF
 TerminInfo1 = TerminInfo1 & "Telefon / Handy:" & CRLF
   TerminInfo1 = TerminInfo1 & Cursor2.GetString("Telefon")  & CRLF
TerminInfo1 = TerminInfo1 & "---------------------------------------------" & CRLF
 TerminInfo1 = TerminInfo1 & "Notizen:" & CRLF & CRLF & Cursor2.GetString("Notiz")
'Bei 1 aufrufen sonst Stumm bleiben
If Selector = "1" Then
   MitTon = "1"
   Else
   MitTon = ""
End If

Dim NotiWecker As Notification
   NotiWecker.Initialize   
   
If MitTon = "1" Then
MpM.Play   
End If

  NotiWecker.Vibrate = True 'Vibrieren an
   NotiWecker.Light = False
   NotiWecker.OnGoingEvent = True
   NotiWecker.Icon = "weckeron"
   NotiWecker.SetInfo(Titel, "Termin um " & Erinnerung & " Uhr", TermineStop) 'TermineStop = Welche Sub
   NotiWecker.Notify(1)
   'StartServiceAt(AutoAlarm, Auswahlzeit,True)

End If     
End If
SQL2.Close

Else
'ToastMessageShow("Heute kein Termin mehr!", False)
SQL2.Close     
End If
End Sub
 
Last edited:

An Schi

Well-Known Member
Licensed User
Hab es immer nur überflogen, weils mich nicht richtig intresiert hat. Wenn mich meine Erinnerung aber nicht trügt, gab es im englischen Forum auch ein paar Threads in denen dieses Problem nicht gelöst wurde. Schau/suche am besten mal dort...
(allowwhileidle dürfte dich dazu führen)
 
Top