diff --git a/FLP_2.0.b4a b/FLP_2.0.b4a
index 3c63bbb..e9e0bb8 100644
--- a/FLP_2.0.b4a
+++ b/FLP_2.0.b4a
@@ -21,7 +21,7 @@ Library6=firebasenotifications
Library7=fusedlocationprovider
Library8=gps
Library9=json
-ManifestCode='This code will be applied to the manifest file during compilation.~\n~'You do not need to modify it in most cases.~\n~'See this link for for more information: https://www.b4x.com/forum/showthread.php?p=78136~\n~AddManifestText(~\n~~\n~)~\n~SetApplicationAttribute(android:icon, "@drawable/icon")~\n~SetApplicationAttribute(android:label, "$LABEL$")~\n~CreateResourceFromFile(Macro, Themes.LightTheme)~\n~'End of default text.~\n~AddPermission(android.permission.ACCESS_FINE_LOCATION)~\n~AddPermission(android.permission.WRITE_EXTERNAL_STORAGE)~\n~CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~CreateResourceFromFile(Macro, FirebaseAnalytics.Firebase)~\n~CreateResourceFromFile(Macro, FirebaseAnalytics.FirebaseAnalytics)~\n~CreateResourceFromFile(Macro, FirebaseNotifications.FirebaseNotifications)~\n~SetServiceAttribute(Tracker, android:foregroundServiceType, "location")~\n~SetApplicationAttribute(android:usesCleartextTraffic, "true")~\n~AddApplicationText(~\n~ ~\n~ ~\n~ ~\n~ ~\n~)~\n~~\n~CreateResource(xml, device_admin.xml,~\n~~\n~ ~\n~ ~\n~ ~\n~ ~\n~ ~\n~~\n~)~\n~AddPermission(android.permission.SEND_SMS)~\n~AddPermission(android.permission.RECEIVE_SMS)~\n~AddPermission(android.permission.READ_PHONE_STATE)~\n~AddPermission(android.permission.READ_CALL_LOG)~\n~AddApplicationText(~\n~~\n~ ~\n~ )~\n~ ~\n~AddPermission(android.permission.RECEIVE_BOOT_COMPLETED)~\n~AddReceiverText(R_Test, ~\n~~\n~)
+ManifestCode='This code will be applied to the manifest file during compilation.~\n~'You do not need to modify it in most cases.~\n~'See this link for for more information: https://www.b4x.com/forum/showthread.php?p=78136~\n~AddManifestText(~\n~~\n~)~\n~SetApplicationAttribute(android:icon, "@drawable/icon")~\n~SetApplicationAttribute(android:label, "$LABEL$")~\n~CreateResourceFromFile(Macro, Themes.LightTheme)~\n~'End of default text.~\n~AddPermission(android.permission.ACCESS_FINE_LOCATION)~\n~AddPermission(android.permission.WRITE_EXTERNAL_STORAGE)~\n~CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~CreateResourceFromFile(Macro, FirebaseAnalytics.Firebase)~\n~CreateResourceFromFile(Macro, FirebaseAnalytics.FirebaseAnalytics)~\n~CreateResourceFromFile(Macro, FirebaseNotifications.FirebaseNotifications)~\n~SetServiceAttribute(Tracker, android:foregroundServiceType, "location")~\n~SetApplicationAttribute(android:usesCleartextTraffic, "true")~\n~AddApplicationText(~\n~ ~\n~ ~\n~ ~\n~ ~\n~)~\n~~\n~CreateResource(xml, device_admin.xml,~\n~~\n~ ~\n~ ~\n~ ~\n~ ~\n~ ~\n~~\n~)~\n~AddPermission(android.permission.SEND_SMS)~\n~AddPermission(android.permission.RECEIVE_SMS)~\n~AddPermission(android.permission.READ_PHONE_STATE)~\n~AddPermission(android.permission.READ_CALL_LOG)~\n~AddApplicationText(~\n~~\n~ ~\n~ )~\n~ ~\n~AddPermission(android.permission.RECEIVE_BOOT_COMPLETED)~\n~AddReceiverText(R_Test, ~\n~~\n~)
Module1=DBRequestManager
Module2=FirebaseMessaging
Module3=Mods
@@ -38,7 +38,7 @@ Version=12.5
#Region Project Attributes
#ApplicationLabel: FLP 2.0
#VersionCode: 1
- #VersionName: 3.10.01
+ #VersionName: 3.11.11
'SupportedOrientations possible values: unspecified, landscape or portrait.
#SupportedOrientations: unspecified
#CanInstallToExternalStorage: False
@@ -83,10 +83,12 @@ Sub Globals
Private l_id As Label
' Private b_flpConnect As Button
Private b_exit As Button
+ Private l_version As Label
End Sub
Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("Layout")
+ l_version.Text = Application.VersionName
' ruta = File.DirInternal
Subs.getPhnId
et_id.Text = Starter.devModel.trim
diff --git a/FLP_2.0.b4a.meta b/FLP_2.0.b4a.meta
index a4a5af7..a3f0082 100644
--- a/FLP_2.0.b4a.meta
+++ b/FLP_2.0.b4a.meta
@@ -18,13 +18,13 @@ ModuleBreakpoints7=
ModuleBreakpoints8=
ModuleClosedNodes0=12,13
ModuleClosedNodes1=
-ModuleClosedNodes2=5,6,7,9,10
+ModuleClosedNodes2=6,9,10
ModuleClosedNodes3=1
ModuleClosedNodes4=
ModuleClosedNodes5=
ModuleClosedNodes6=
-ModuleClosedNodes7=2,3,4,5,6,7,9,10,11,13,14,15,16,17,19,20,22
-ModuleClosedNodes8=8,10,11,12
-NavigationStack=Tracker,flp_ConnectionSuccess,78,3,Tracker,flp_ConnectionFailed,83,1,NotificationService,NotiMon_NotificationPosted,72,0,Tracker,flp_ConnectionSuspended,173,0,Starter,Timer1_Tick,47,2,Subs,revisaYmandaUUC,279,6,Starter,Service_Start,30,0,Subs,revisaBD,130,0,Subs,traeUltimaUbicacionGuardada,243,5,Subs,bitacora,222,0
+ModuleClosedNodes7=2,5,6,7,9,11,13,14,16,19,20
+ModuleClosedNodes8=8,11,12
+NavigationStack=Tracker,StartFLP,107,0,Main,b_pong_Click,92,0,Starter,Service_Start,31,0,Starter,Application_Error,56,0,Starter,Timer1_Tick,49,0,Starter,Service_TaskRemoved,53,0,Starter,Service_Create,37,0,Starter,Process_Globals,26,0,Starter,restartTracker,84,0,Starter,PE_PhoneStateChanged,90,6
SelectedBuild=0
VisibleModules=6,2,8,3,7,4,5
diff --git a/Files/layout.bal b/Files/layout.bal
index d273394..c059ea1 100644
Binary files a/Files/layout.bal and b/Files/layout.bal differ
diff --git a/Starter.bas b/Starter.bas
index 58fd626..6f0952c 100644
--- a/Starter.bas
+++ b/Starter.bas
@@ -23,6 +23,15 @@ Sub Process_Globals
Dim devModel As String
Dim lastLocUpdate As String = 0
Dim logger As Boolean = True
+
+ Dim PE As PhoneEvents
+ Dim PhId As PhoneId
+
+ Dim callStartTime, callEndTime As Long
+ Dim isIncoming As Boolean
+ Dim lastState As String = "IDLE"
+ Dim savedNumber As String
+
End Sub
Sub Service_Create
@@ -30,6 +39,9 @@ Sub Service_Create
'This is a good place to load resources that are not specific to a single activity.
Subs.revisaBD
CallSubDelayed(FirebaseMessaging, "SubscribeToTopics") 'Para FirebaseMessaging
+
+ lastState = "IDLE"
+ PE.InitializeWithPhoneState("PE",PhId)
End Sub
Sub Service_Start (StartingIntent As Intent)
@@ -60,6 +72,7 @@ End Sub
'Return true to allow the OS default exceptions handler to handle the uncaught exception.
Sub Application_Error (Error As Exception, StackTrace As String) As Boolean
+ Subs.bitacora($"ERROR -> ${Error}"$)
Return True
End Sub
@@ -69,9 +82,56 @@ Sub Service_Destroy
End Sub
Sub restartTracker
- Log("Llamamos RESTART-TRACKER")
+ If logger Then Log("Llamamos RESTART-TRACKER")
Subs.bitacora("Llamamos RESTART-TRACKER")
StopService(Tracker)
Sleep(1000)
StartService(Tracker)
+End Sub
+
+Sub PE_PhoneStateChanged (State As String, IncomingNumber As String, Intent As Intent)
+ 'Incoming call- goes from IDLE To RINGING when it rings, To OFFHOOK when it's answered, to IDLE when its hung up
+ 'Outgoing call- goes from IDLE To OFFHOOK when it dials out, To IDLE when hung up
+ Log($">>>>> Phone State Changed -> ${State} -> "$ & IncomingNumber)
+ If IncomingNumber = "" Then
+ Return
+ End If
+ Log($">>>>> Phone State Changed 2 -> ${State} -> "$ & IncomingNumber)
+ Select State
+ Case "RINGING"
+ 'calling in progress
+ isIncoming = True
+ callStartTime = DateTime.Now
+ savedNumber = IncomingNumber
+ Subs.bitacora($"RINGING - ${IncomingNumber}"$)
+ Exit
+ Case "OFFHOOK"
+ 'Transition of ringing->offhook are pickups of incoming calls. Nothing donw on them
+ If lastState <> "RINGING" Then
+ 'outgoing call start
+ isIncoming = False
+ callStartTime = DateTime.Now
+ Subs.bitacora($"OFFHOOK - ${savedNumber}"$)
+ End If
+ Exit
+ Case "IDLE"
+ 'Went to idle- this is the end of a call. What type depends on previous state(s)
+ If lastState = "RINGING" Then
+ 'missed call
+ callEndTime = 0
+ Subs.bitacora($"IDLE - Missed call (${IncomingNumber}): ${callEndTime}"$)
+ else if isIncoming Then
+ 'incoming call is finished
+ callEndTime = DateTime.Now
+ Subs.bitacora($"IDLE - Incoming call is finished (${IncomingNumber}): ${callEndTime}"$)
+ Else
+ 'outgoing call is finished
+ callEndTime = DateTime.Now
+ Subs.bitacora($"IDLE - Outgoing call is finished (${IncomingNumber}): ${callEndTime}"$)
+ End If
+ Exit
+ End Select
+ lastState = State
+
+ 'Log("PhoneStateChanged, State = " & State & ", IncomingNumber = " & IncomingNumber & "; PhoneFlag = " & PhoneFlag)
End Sub
\ No newline at end of file
diff --git a/Subs.bas b/Subs.bas
index 2413798..4c8562c 100644
--- a/Subs.bas
+++ b/Subs.bas
@@ -41,20 +41,20 @@ End Sub
Sub compress(str As String) As String ' Compresion
Dim compressed() As Byte = GZip.compress(str)
- Log($"CompressedBytesLength: ${compressed.Length}"$)
+ If Starter.logger Then Log($"CompressedBytesLength: ${compressed.Length}"$)
Dim base64 As String = su.EncodeBase64(compressed)
- Log($"CompressedBytes converted to base64 Length: ${base64.Length}"$)
- Log($"CompressedBytes converted to base64: ${base64}"$)
+ If Starter.logger Then Log($"CompressedBytes converted to base64 Length: ${base64.Length}"$)
+ If Starter.logger Then Log($"CompressedBytes converted to base64: ${base64}"$)
Return base64
End Sub
Sub decompress(base64 As String) As String ' Descompresion 'ignore
Dim decompressedbytes() As Byte = su.DecodeBase64(base64)
- Log($"decompressedbytesLength: ${decompressedbytes.Length}"$)
+ If Starter.logger Then Log($"decompressedbytesLength: ${decompressedbytes.Length}"$)
Dim bc As ByteConverter
Dim uncompressed As String = bc.StringFromBytes(decompressedbytes,"UTF8")
- Log($"uncompressedLength: ${uncompressed.Length}"$)
- Log($"Decompressed String = ${uncompressed}"$)
+ If Starter.logger Then Log($"uncompressedLength: ${uncompressed.Length}"$)
+ If Starter.logger Then Log($"Decompressed String = ${uncompressed}"$)
Return uncompressed
End Sub
@@ -167,12 +167,12 @@ Sub fechaKMT2Ticks(fKMT As String) As Long 'ignore
DateTime.DateFormat=OrigFormat 'return to original date format
Return ticks
Else
- Log("Formato de fecha incorrecto, debe de ser 'YYMMDDHHMMSS', no '"&fKMT&"' largo="&fKMT.Length)
+ If Starter.logger Then Log("Formato de fecha incorrecto, debe de ser 'YYMMDDHHMMSS', no '"&fKMT&"' largo="&fKMT.Length)
Return 0
End If
Catch
- Log(LastException)
- LogColor($"Fecha dada: ${fKMT}, Parte Fecha: ${parteFecha}, Parte Hora: ${parteHora}"$, Colors.Red)
+ Log("FLP-fechaKMT2Ticks Error -> " & LastException)
+ If Starter.logger Then LogColor($"Fecha dada: ${fKMT}, Parte Fecha: ${parteFecha}, Parte Hora: ${parteHora}"$, Colors.Red)
Return 0
End Try
End Sub
@@ -194,7 +194,7 @@ Sub mandaLocAServer(loc As Location, id As String)
Starter.cmd.Name = "guardaDatos"
Starter.cmd.Parameters = Array As Object(fechaKMT(DateTime.Now), id, fechaKMT(DateTime.Now), $"${loc.Latitude},${loc.Longitude},${loc.Accuracy},${loc.AccuracyValid},${loc.Speed},${loc.SpeedValid}"$, "Coords")
' If Starter.logger Then
- If Starter.logger Then Log($"Mandamos loc a server: ${fechaKMT(DateTime.Now)}|${id}|${fechaKMT(DateTime.Now)}|${loc.Latitude},${loc.Longitude}|Coords"$)
+ If Starter.logger Then Log($">>>> Mandamos loc a server: ${fechaKMT(DateTime.Now)}|${id}|${fechaKMT(DateTime.Now)}|${loc.Latitude},${loc.Longitude}|Coords"$)
' End If
Starter.reqManager.ExecuteCommand(Starter.cmd,"guardaDatos")
End Sub
@@ -285,7 +285,7 @@ Sub revisaYmandaUUC
StartService(Tracker)
else If minsTranscurridos >= 30 Then
If Tracker.flp.IsInitialized Then LogColor($"FLP.Connected: ${Tracker.flp.IsConnected}"$, Colors.Red)
- If Tracker.flp.IsInitialized and Not(Tracker.flp.IsConnecting) Then 'Si NO esta en proceso de conectarse ...
+ If Tracker.flp.IsInitialized And Not(Tracker.flp.IsConnecting) Then 'Si NO esta en proceso de conectarse ...
LogColor("RESTART-APP", Colors.red)
bitacora("Mas de 30 mins - RESTART-APP")
' bitacora(Tracker.flp.SuspendedCause) 'ignore
diff --git a/Tracker.bas b/Tracker.bas
index 5807282..e738d94 100644
--- a/Tracker.bas
+++ b/Tracker.bas
@@ -76,7 +76,7 @@ Sub flpReConnect
ExitApplication
End If
Catch
- Log(LastException)
+ Log("FLP-Tracker Error -> " & LastException)
End Try
End Sub
@@ -152,6 +152,10 @@ End Sub
Sub flp_LocationChanged (Location1 As Location)
LogColor($"Location Changed - Acc: ${Location1.Accuracy}"$, Colors.blue)
+ If Not(IsPaused(Main)) Then
+ Main.laUbicacion = Location1
+ If Starter.logger Then Log("Main.laubicacion actializada")
+ End If
Dim el_texto As String = ""
Starter.UUC = Location1
flp.RequestLocationUpdates(CreateLocationRequest)