mirror of
https://github.com/cheveguerra/Pusher_2.0.git
synced 2026-04-17 19:37:05 +00:00
169 lines
4.8 KiB
QBasic
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
|