Files
Pusher_2.0/TrackerXXX.bas
2023-09-18 06:43:57 -06:00

169 lines
4.8 KiB
QBasic

B4A=true
Group=Default Group
ModulesStructureVersion=1
Type=Service
Version=10.5
@EndOfDesignText@
#Region Service Attributes
#StartAtBoot: True
#End Region
'******************************************************************************
'No olvidar agregar esta linea al editor de manifiesto:
' SetServiceAttribute(Tracker, android:foregroundServiceType, "location")
' AddPermission(android.permission.ACCESS_FINE_LOCATION)
'
'En Starter agregar estas lineas en Process_Globals
' Public rp As RuntimePermissions
' Public FLP As FusedLocationProvider
' Private flpStarted As Boolean
'
'En Main agregar estas lineas a Activity_Resume
' Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_ACCESS_FINE_LOCATION)
' Wait For Activity_PermissionResult (Permission As String, Result As Boolean)
' If Result Then
' StartService(Tracker)
' Log("Start Tracker")
' Else
' ToastMessageShow("No permission", True)
' End If
'
'Se necesita la libreria FusedLocationProvider, GPS, Phone y RunTimePermissions
'
'Y en Main agregar estas dos lineas:
'#AdditionalJar: com.android.support:support-v4
'#AdditionalJar: com.google.android.gms:play-services-location
Sub Process_Globals
'Private GPS As GPS
Private Tracking As Boolean
' Private LastUpdateTime As Long
Private lock As PhoneWakeState
'Para FusedLocationProvider (2 lineas)
Public FLP As FusedLocationProvider
Private flpStarted As Boolean
End Sub
Sub Service_Create
' Service.AutomaticForegroundMode = Service.AUTOMATIC_FOREGROUND_NEVER 'we are handling it ourselves
'Para FusedLocationProvider (2 lineas)
' FLP.Initialize("flp")
' FLP.Connect
' lock.PartialLock
' StartFLP
End Sub
Sub flp_ConnectionSuccess
Log("Connected to location provider")
End Sub
Sub flp_ConnectionFailed(ConnectionResult1 As Int)
Log("Failed to connect to location provider")
End Sub
Sub Service_Start (StartingIntent As Intent)
'Para FusedLocationProvider (1 linea)
' Service.StopAutomaticForeground
' Service.StartForeground(nid, CreateNotification("..."))
' StartServiceAt(Me, DateTime.Now + 30 * DateTime.TicksPerMinute, True)
' Track
End Sub
Public Sub StartFLP
Log("StartFLP - flpStarted="&flpStarted)
Do While FLP.IsConnected = False
Sleep(500)
Log("sleeping")
Loop
If flpStarted = False Then
Log("RequestLocationUpdates")
FLP.RequestLocationUpdates(CreateLocationRequest) 'Buscamos ubicacion
Log("Buscamos ubicacion")
flpStarted = True
Else
FLP.RequestLocationUpdates(CreateLocationRequest2times) 'Buscamos ubicacion 2 peticiones
Log("Buscamos ubicacion 2 peticiones")
End If
End Sub
Private Sub CreateLocationRequest As LocationRequest
'Log("CreateLocationRequest")
Dim lr As LocationRequest
lr.Initialize
lr.SetInterval(10000)
lr.SetFastestInterval(lr.GetInterval / 2)
lr.SetSmallestDisplacement(50) 'Solo registra cambio de ubicacion si es mayor a 50 mts
lr.SetPriority(lr.Priority.PRIORITY_HIGH_ACCURACY)
Return lr
End Sub
Private Sub CreateLocationRequest2times As LocationRequest
'Log("CreateLocationRequest")
Dim lr As LocationRequest
lr.Initialize
lr.SetInterval(5000)
lr.SetFastestInterval(lr.GetInterval / 2)
lr.setNumUpdates(2)
lr.SetSmallestDisplacement(5) 'Solo registra cambio de ubicacion si es mayor a 50 mts
lr.SetPriority(lr.Priority.PRIORITY_HIGH_ACCURACY)
Return lr
End Sub
Public Sub StopFLP
'Log("StopFLP")
If flpStarted Then
FLP.RemoveLocationUpdates
flpStarted = False
End If
End Sub
Public Sub Track
'Log("Track")
If Tracking Then Return
If Starter.rp.Check(Starter.rp.PERMISSION_ACCESS_FINE_LOCATION) = False Then
Log("No permission")
Return
End If
'Para FusedLocationProvider (1 linea)
StartFLP
Tracking = True
End Sub
Sub flp_LocationChanged (Location1 As Location)
' If DateTime.Now > LastUpdateTime + 10 * DateTime.TicksPerSecond Then
' Dim n As Notification = CreateNotification($"$2.5{Location1.Latitude} / $2.5{Location1.Longitude}"$)
' n.Notify(nid)
' LastUpdateTime = DateTime.Now
' End If
Log("loc changed")
' Dim coords As String = Location1.Latitude&","&Location1.Longitude&","&Location1.Time
' Dim mm As Map = CreateMap("Body": coords, "d": Main.devModel)
' CallSub2(Main,"ubicacionRecibida",mm)
'Cambiamos el formato de la hora
' Dim OrigFormat As String=DateTime.DateFormat 'save orig date format
' DateTime.DateFormat="MMM-dd HH:mm:ss"
' Dim lastUpdate As String=DateTime.Date(DateTime.Now)
' DateTime.DateFormat=OrigFormat 'return to orig date format
'Escribimos coordenadas y fecha a un archivo de texto
' Dim ubic As String = Location1.Latitude&","&Location1.Longitude&"|"&lastUpdate
' Dim out As OutputStream = File.OpenOutput(File.DirRootExternal, "gps.txt", True)
' Dim s As String = ubic & CRLF
' Dim t() As Byte = s.GetBytes("UTF-8")
' out.WriteBytes(t, 0, t.Length)
' out.Close
Log("Loc changed : "&Location1.Latitude&","&Location1.Longitude&"|"&Location1.Accuracy)
End Sub
Sub Service_Destroy
If Tracking Then
StopFLP
End If
Tracking = False
lock.ReleasePartialLock
End Sub