The GPS once started stay On all the time, consuming battery, I only need start every 30 min. write the DB and stop it until next start.
Here is me code
Here is me code
B4X:
#Region Module Attributes
#StartAtBoot: true
#StartCommandReturnValue: android.app.Service.START_STICKY
#End Region
'Service module
Sub Process_Globals
Dim Notification1 As Notification
Dim GPS1 As GPS
Dim SQL As SQL
Dim Lat As String
Dim Lon As String
Dim phoneInfo As PhoneId
Dim deviceID, SQL2 As String
Dim now As Long
Dim edtdate, edttime, edtdatetime As String
End Sub
Sub Service_Create
GPS1.Initialize("GPS")
If GPS1.GPSEnabled = False Then
ToastMessageShow("Encienda el GPS por favor", True)
StartActivity(GPS1.LocationSettingsIntent) 'Will open the relevant settings screen.
End If
SQL.Initialize(File.DirRootExternal, "geo_data.db", False)
Notification1.Initialize
Notification1.Icon = "icon"
Notification1.Vibrate = False
Notification1.AutoCancel = True
Notification1.Sound = False
Notification1.SetInfo("SAMI-GEO", "Conectado", Main)
Service.StartForeground(1, Notification1)
End Sub
Sub Service_Start
StartServiceAt("", DateTime.now + 30 * DateTime.TicksPerMinute, True)
If GPS1.GPSEnabled = False Then
Toggle.TurnGPSOn
If Toggle.GPS = False Then
ToastMessageShow("Encienda el GPS por favor", True)
StartActivity(GPS1.LocationSettingsIntent)
End If
Else
GPS1.Start(0, 0)
End If
createRecord
End Sub
Sub Service_Destroy
GPS1.Stop
Log("Debug: End Of Service (Service_Destroy)")
End Sub
Sub GPS_LocationChanged (Location1 As Location)
Lat = Location1.Latitude
Lon = Location1.Longitude
End Sub
Sub GPS_UserEnabled (Enabled As Boolean)
ToastMessageShow("GPS device enabled = " & Enabled, True)
End Sub
Sub createRecord
If GPS1.GPSEnabled = False Then
ToastMessageShow("Encienda el GPS por favor", True)
StartActivity(GPS1.LocationSettingsIntent)
End If
If Lat <> "" Then
DateTime.DateFormat = "yyyy/MM/dd"
now = DateTime.now
edtdate = DateTime.Date(now)
edttime= DateTime.Time(now)
deviceID = phoneInfo.GetDeviceId
Notification1.SetInfo("SAMI_GEO", Lat & " " & Lon, Main)
Notification1.Notify(1)
SQL.ExecNonQuery("INSERT INTO geo_data (fecha, hora, latitud, longitud, phonedID, transmitido) VALUES ('" & edtdate & "','" & edttime & "','" & Lat & "','" & Lon & "','" & deviceID & "','N')")
End If
End Sub