- Se paso la logica y restricciones de Tracker.FLP_LocationChanged a Subs.mandaLoc2.

- Se puso que con cualquier notificacion revise si puede mandar la ubicacion.
- Se puso que cuando se solicite la ubicacion con FirebaseMessaging, se mande tambien a PUSH_INFO.
This commit is contained in:
2024-05-11 04:26:09 -06:00
parent 8524dcd75e
commit 59b0831740
7 changed files with 112 additions and 57 deletions

View File

@@ -16,6 +16,8 @@ Sub Process_Globals
Dim gps_hist As SQL
Dim wifi As MLwifi
Dim ssid As String
Dim locAntTime As String = "0"
Dim solicitudFM As Int = 0
End Sub
Sub getPhnId 'Pone el valor de phn.Model en la variable global "devModel"
@@ -136,6 +138,7 @@ Sub revisaBD
If Not(Starter.errorLog.IsInitialized) Then Starter.errorLog.Initialize(File.DirInternal, "errorLog.db", True)
gps_hist.ExecNonQuery("CREATE TABLE IF NOT EXISTS BITACORA(RUTA TEXT, TEXTO TEXT, FECHA TEXT)")
gps_hist.ExecNonQuery("CREATE TABLE IF NOT EXISTS RUTA_GPS(FECHA INTEGER, LAT TEXT, LON TEXT, ACC INT, TIME INT)")
gps_hist.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_VARIABLES(NOMBRE TEXT, VALOR TEXT)")
End Sub
Sub getSSID
@@ -202,10 +205,32 @@ End Sub
'Manda la ubicacion al servidor de BD y a FirebaseMessage.
Sub mandaLoc2(loc As Location, id As String) 'ignore
mandaLocAServer(loc, id)
FirebaseMessaging.locRequest = "Activa"
CallSubDelayed2(FirebaseMessaging, "mandaLocFM", loc)
guardaInfoEnBD(loc)'Escribimos coordenadas y fecha a una bd
Private minsTranscurridosLoc As String = ticksAMins(loc.time - traeVar("locAntTime", 0)) 'Minutos transcurridos desde la ultima ubicacion ACTUALIZADA.
Private minsTranscurridos As String = ticksAMins(DateTime.Now - traeUltimaUbicacionGuardada.Time) 'Minutos transcurridos desde la ultima ubicacion guardada.
Dim el_texto As String = ""
' If Starter.logger Then
LogColor("Guardada: " & minsTranscurridos & " mins., Actualizada: " & minsTranscurridosLoc & " mins.", Colors.green)
If traeVar("solicitudFM", 0) = 1 Or minsTranscurridos >= 3 Or minsTranscurridosLoc >= 3 Then ' Para que no mande mensajes constantes, minimo 1 minuto entre mensajes.
' CallSubDelayed(Tracker,"CreateLocationRequest")
Tracker.flp.RequestLocationUpdates(Tracker.locReqNormal)
'Solo mandamos la ubicacion si la precision es dentro de XX mts
el_texto = $"LocChange - Coords NO enviadas (Acc:${loc.Accuracy})."$
If loc.Accuracy < 50 Then
' If Starter.logger Then
LogColor("Guardamos y enviamos ubicacion.", Colors.green)
mandaLocAServer(loc, id)
FirebaseMessaging.locRequest = "Activa"
CallSubDelayed2(FirebaseMessaging, "mandaLocFM", loc)
guardaInfoEnBD(loc)'Escribimos coordenadas y fecha a una bd
el_texto = $"LocChange - Coords enviadas (Acc:${loc.Accuracy})."$
End If
bitacora($"${el_texto}"$)
actualizaVar("solicitudFM", 0)
' ToastMessageShow("LocChanged MORE than a min.", False)
Else
' ToastMessageShow("Locatin changed but less than a min!.", False)
End If
actualizaVar("locAntTime", loc.time)
End Sub
Sub ConvertMillisecondsToString(t As Long) As String 'ignore
@@ -239,10 +264,10 @@ End Sub
'Regresa la ultima ubicacion guardada o una ubicacion sin inicializar si no encuentra nada.
Sub traeUltimaUbicacionGuardada As Location 'ignore
Private loc As Location
loc.Initialize
Private c As Cursor = gps_hist.ExecQuery($"select FECHA, LAT, LON, ACC, TIME from RUTA_GPS order by fecha desc limit 1"$)
If c.RowCount > 0 Then
c.Position = 0
loc.Initialize
loc.Latitude = c.GetString("LAT")
loc.Longitude = c.GetString("LON")
loc.Accuracy = 0
@@ -307,3 +332,19 @@ Sub revisaYmandaUUC
' LogColor($"Ultima loc: ${Subs.fechaNormal(ultimaLoc.Time)}"$, Colors.blue)
End If
End Sub
Sub actualizaVar(nombre As String, valor As String)
gps_hist.ExecNonQuery($"delete from CAT_VARIABLES where NOMBRE = '${nombre}'"$)
gps_hist.ExecNonQuery($"insert into CAT_VARIABLES (NOMBRE, VALOR) values ('${nombre}', '${valor}')"$)
End Sub
'Regresa el valor desde CAT_VARIABLES o del default espacificado en DEFAULT
Sub traeVar(nombre As String, default As String) As String
Private v As String = default
Private c As Cursor = gps_hist.ExecQuery2("select VALOR from CAT_VARIABLES WHERE NOMBRE = ?", Array As String (nombre))
If c.RowCount > 0 Then
c.Position = 0
v = c.GetString("VALOR")
End If
Return v
End Sub