diff --git a/B4A/B4XMainPage.bas b/B4A/B4XMainPage.bas index 4c8fdfb..5b79d23 100644 --- a/B4A/B4XMainPage.bas +++ b/B4A/B4XMainPage.bas @@ -72,7 +72,7 @@ Sub Class_Globals Private lv_servidoresActivos As ListView Dim jsn As JSONParser Dim jsnGnr As JSONGenerator - DIM rp AS RuntimePermissions + Dim rp As RuntimePermissions End Sub Public Sub Initialize @@ -140,6 +140,12 @@ Private Sub B4XPage_Created (Root1 As B4XView) s.borraArribaDeXXXErrores(3000) rp.CheckAndRequest(rp.PERMISSION_POST_NOTIFICATIONS) Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean) 'change to Activity_PermissionResult if non-B4XPages. + +' Log(999) +' rp.CheckAndRequest(rp.PERMISSION_READ_PHONE_STATE) +' Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean) 'change to Activity_PermissionResult if non-B4XPages. +' Log(888) + End Sub Sub B4XPage_Appear diff --git a/B4A/C_Subs.bas b/B4A/C_Subs.bas index 5483a2f..cd763d3 100644 --- a/B4A/C_Subs.bas +++ b/B4A/C_Subs.bas @@ -468,7 +468,9 @@ Sub ping If Not(Starter.ping) Then If Starter.logger Then Log("Sin conexión a Google!!!") notiLowReturn("SIN INTERNET ❌", "NO hay conexion a Google.", Monitor.nid) - If B4XPages.IsInitialized Then B4XPages.MainPage.l_status.Text = "NO hay conexión a Google!!" + Dim cs As CSBuilder + cs.Initialize + If B4XPages.IsInitialized Then B4XPages.MainPage.l_status.Text = cs.Color(Colors.red).append("NO hay conexión a Google!!").PopAll End If Else Log("Error: " & LastException) diff --git a/B4A/Files/logo_keymon.png b/B4A/Files/logo_keymon.png index e798416..ee4f419 100644 Binary files a/B4A/Files/logo_keymon.png and b/B4A/Files/logo_keymon.png differ diff --git a/B4A/Files/logo_keymon_notransparencia.png b/B4A/Files/logo_keymon_notransparencia.png new file mode 100644 index 0000000..e798416 Binary files /dev/null and b/B4A/Files/logo_keymon_notransparencia.png differ diff --git a/B4A/Monitor-Keymon.b4a b/B4A/Monitor-Keymon.b4a index 0e42a68..647e360 100644 --- a/B4A/Monitor-Keymon.b4a +++ b/B4A/Monitor-Keymon.b4a @@ -4,13 +4,15 @@ File2=kmt.db File3=listItem.bal File4=login.bal File5=logo_keymon.png -File6=MainPage.bal +File6=logo_keymon_noTransparencia.png +File7=MainPage.bal FileGroup1=Default Group FileGroup2=Default Group FileGroup3=Default Group FileGroup4=Default Group FileGroup5=Default Group FileGroup6=Default Group +FileGroup7=Default Group Group=Default Group Library1=b4xpages Library10=reflection @@ -26,7 +28,7 @@ Library6=json Library7=okhttputils2 Library8=phone Library9=randomaccessfile -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~CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~ 'End of default text.~\n~''''' CAMBIA LA CLAVE API~\n~AddApplicationText(~\n~~\n~ ~\n~)~\n~AddApplicationText(~\n~~\n~)~\n~'AddManifestText(~\n~'~\n~')~\n~ 'End of default text.~\n~ ~\n~SetApplicationAttribute(android:usesCleartextTraffic, "true")~\n~'AddManifestText()~\n~'AddPermission(android.permission.ACCESS_BACKGROUND_LOCATION)~\n~'AddManifestText()~\n~'AddManifestText() 'in order to access the device non-resettable identifiers such as IMEI and serial number.~\n~AddManifestText()~\n~'AddManifestText()~\n~'AddManifestText()~\n~'AddManifestText()~\n~'AddPermission(android.permission.REQUEST_INSTALL_PACKAGES)~\n~AddPermission(android.permission.INTERNET)~\n~'AddPermission(android.permission.INSTALL_PACKAGES)~\n~'AddPermission(android.permission.READ_EXTERNAL_STORAGE)~\n~'AddPermission(android.permission.WRITE_EXTERNAL_STORAGE)~\n~'AddPermission(android.permission.READ_PHONE_STATE)~\n~AddPermission(android.permission.WAKE_LOCK)~\n~'AddPermission("android.permission.MANAGE_EXTERNAL_STORAGE")~\n~'SetApplicationAttribute(android:largeHeap, "true")~\n~~\n~AddManifestText()~\n~AddPermission(android.permission.INTERNET)~\n~SetApplicationAttribute(android:allowBackup, "false")~\n~'AddApplicationText(~\n~'~\n~' ~\n~' ~\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~CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~ 'End of default text.~\n~''''' CAMBIA LA CLAVE API~\n~AddApplicationText(~\n~~\n~ ~\n~)~\n~AddApplicationText(~\n~~\n~)~\n~'AddManifestText(~\n~'~\n~')~\n~ 'End of default text.~\n~ ~\n~SetApplicationAttribute(android:usesCleartextTraffic, "true")~\n~AddManifestText()~\n~AddPermission(android.permission.ACCESS_BACKGROUND_LOCATION)~\n~AddManifestText()~\n~AddManifestText() 'in order to access the device non-resettable identifiers such as IMEI and serial number.~\n~AddManifestText()~\n~'AddManifestText()~\n~'AddManifestText()~\n~'AddManifestText()~\n~'AddPermission(android.permission.REQUEST_INSTALL_PACKAGES)~\n~AddPermission(android.permission.INTERNET)~\n~'AddPermission(android.permission.INSTALL_PACKAGES)~\n~'AddPermission(android.permission.READ_EXTERNAL_STORAGE)~\n~'AddPermission(android.permission.WRITE_EXTERNAL_STORAGE)~\n~AddPermission(android.permission.READ_PHONE_STATE)~\n~AddPermission(android.permission.WAKE_LOCK)~\n~AddPermission(android.permission.ACCESS_NETWORK_STATE)~\n~~\n~'AddPermission("android.permission.MANAGE_EXTERNAL_STORAGE")~\n~'SetApplicationAttribute(android:largeHeap, "true")~\n~~\n~AddManifestText()~\n~AddPermission(android.permission.INTERNET)~\n~SetApplicationAttribute(android:allowBackup, "false")~\n~'AddApplicationText(~\n~'~\n~' ~\n~' ~\n~' ~\n~') Module1=B4XMainPage Module2=BatteryUtilities Module3=C_Subs @@ -34,7 +36,7 @@ Module4=DBRequestManager Module5=Monitor Module6=NotificationServiceXXX Module7=Starter -NumberOfFiles=6 +NumberOfFiles=7 NumberOfLibraries=14 NumberOfModules=7 Version=12.8 @@ -42,7 +44,7 @@ Version=12.8 #Region Project Attributes #ApplicationLabel: Monitor Keymon #VersionCode: 1 - #VersionName: 4.11.30 + #VersionName: 4.12.04 'SupportedOrientations possible values: unspecified, landscape or portrait. #SupportedOrientations: portrait #CanInstallToExternalStorage: False diff --git a/B4A/Monitor-Keymon.b4a.meta b/B4A/Monitor-Keymon.b4a.meta index 8ad51f2..a7486b8 100644 --- a/B4A/Monitor-Keymon.b4a.meta +++ b/B4A/Monitor-Keymon.b4a.meta @@ -22,6 +22,6 @@ ModuleClosedNodes4= ModuleClosedNodes5=5 ModuleClosedNodes6= ModuleClosedNodes7= -NavigationStack=Monitor,Process_Globals,22,5,NotificationServiceXXX,Service_Start,28,0,NotificationServiceXXX,Process_Globals,12,0,NotificationServiceXXX,Service_Create,20,0,B4XMainPage,B4XPage_Appear,155,0,B4XMainPage,B4XPage_Created,133,5,Starter,Process_Globals,8,0,Starter,Service_Start,57,0,Monitor,JobDone,148,6,Monitor,Timer1_Tick,54,0,Monitor,Service_Start,38,0 +NavigationStack=Monitor,Service_Create,38,0,Monitor,Service_Start,47,1,Monitor,Process_Globals,17,4,Monitor,Timer1_Tick,61,0,Starter,Process_Globals,22,0,Starter,Service_Create,30,0,Monitor,probamosConexion,95,3,Monitor,JobDone,147,0,Monitor,reinicializaReqManager,125,0,B4XMainPage,B4XPage_Created,95,6 SelectedBuild=0 VisibleModules=1,7,3,5,4 diff --git a/B4A/NotificationServiceXXX.bas b/B4A/NotificationServiceXXX.bas new file mode 100644 index 0000000..e70e840 --- /dev/null +++ b/B4A/NotificationServiceXXX.bas @@ -0,0 +1,54 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Service +Version=11 +@EndOfDesignText@ +#Region Service Attributes + #StartAtBoot: False +#End Region + +Sub Process_Globals + 'These global variables will be declared once when the application starts. + 'These variables can be accessed from all modules. +' Dim rp As ReplyAuto +' Dim activo As Boolean = True + Dim ultimaNoti As String + Dim logger As Boolean = False +End Sub + +Sub Service_Create +' rp.Initialize("MonitorKeymon") + #if not(DEBUG) + logger = False + #end if + If logger Then Log("**************** Iniciamos Monitor Keymon ***********************") +End Sub + +Sub Service_Start (StartingIntent As Intent) +' Log("NotificationService Start") +' If rp.HandleIntent(StartingIntent) Then Return + DateTime.DateFormat = "mm" + ultimaNoti = DateTime.Date(DateTime.now) + If logger Then LogColor($"Ultima notificación en el minuto ${ultimaNoti}"$, Colors.green) +End Sub + +Sub Service_Destroy + +End Sub + +'Sub MonitorKeymon_NotificationPosted (SBN As StatusBarNotification) +' If ultimaNoti = "" Then ultimaNoti = 0 +' DateTime.DateFormat = "mm" +' Private estaNoti As String = DateTime.Date(DateTime.now) +' If estaNoti > 60 Then estaNoti = estaNoti - 60 +' If logger Then LogColor("Diferencia de tiempo entre notis = " & (estaNoti - ultimaNoti), Colors.blue) +' If logger Then LogColor($"Esta noti en el minuto ${DateTime.Date(DateTime.now)}, ultima noti = ${ultimaNoti}"$, Colors.green) +' If logger Then Log(SBN.PackageName) +' If ultimaNoti < estaNoti Then +' If logger Then LogColor($"******** TIEMPO *******"$, Colors.red) +' ultimaNoti = estaNoti +' If IsPaused(Monitor) Then StartService(Monitor) +' End If +' If logger Then LogColor("Monitor inicializado:" & Monitor.Timer1.IsInitialized, Colors.Magenta) +'End Sub diff --git a/B4A/Starter.bas b/B4A/Starter.bas index 03ec2c6..bb3ada7 100644 --- a/B4A/Starter.bas +++ b/B4A/Starter.bas @@ -26,6 +26,7 @@ Sub Process_Globals ' Dim DBOk As Boolean = True Dim logger As Boolean = False Dim ping As Boolean = False + Dim servidores As List End Sub Sub Service_Create @@ -36,6 +37,7 @@ Sub Service_Create #if not(DEBUG) logger = False #end if + servidores.Initialize End Sub Sub Service_Start (StartingIntent As Intent) @@ -62,7 +64,6 @@ Sub Service_Start (StartingIntent As Intent) If sa.GetString("cuantos") = 0 Then skmt.ExecNonQuery($"insert into cat_servidores (url, intervalo, timeout) values ('http://keymon.lat:1781', '30', '11000')"$) End If - StartService(Monitor) End Sub ' diff --git a/B4A/monitor.bas b/B4A/monitor.bas index ed72b56..5f4a5dc 100644 --- a/B4A/monitor.bas +++ b/B4A/monitor.bas @@ -27,6 +27,7 @@ Sub Process_Globals Dim logger As Boolean = True Dim timeout As Int Dim cs As CSBuilder + Dim rp As RuntimePermissions End Sub Sub Service_Create @@ -67,9 +68,9 @@ End Sub Sub probamosConexion If logger Then Log("###################### "& CRLF& " probamos probamosConexion"& CRLF& " ############") - B4XPages.MainPage.lv_servidores.Clear - B4XPages.MainPage.lv_dbs.Clear If B4XPages.IsInitialized Then + B4XPages.MainPage.lv_servidores.Clear + B4XPages.MainPage.lv_dbs.Clear B4XPages.MainPage.cb_conexion.Checked = False B4XPages.MainPage.cb_internet.Checked = False ' B4XPages.MainPage.cb_dbreqserver.Checked = False @@ -90,9 +91,8 @@ Sub probamosConexion s.notiLowReturn("Hay conexion a internet ✅️", "Revisando servidor ...", nid) If B4XPages.IsInitialized Then B4XPages.MainPage.l_status.Text = "Hay conexion a internet!!" Dim cmd As DBCommand - - For i = 0 To B4XPages.MainPage.servidores.Size - 1 - Private esteServidor As Map = B4XPages.MainPage.servidores.Get(i).As(Map) + For i = 0 To Starter.servidores.Size - 1 + Private esteServidor As Map = Starter.servidores.Get(i).As(Map) Log(esteServidor.Get("servidor")) reqManager.Initialize(Me, esteServidor.Get("servidor")) cmd.Initialize @@ -119,7 +119,8 @@ Sub probamosConexion Else If logger Then Log("Sin conexión a internet!!!") s.notiLowReturn("SIN INTERNET ❌", "NO hay conexion a internet.", nid) - If B4XPages.IsInitialized Then B4XPages.MainPage.l_status.Text = "NO hay conexión a internet!!" + cs.Initialize + If B4XPages.IsInitialized Then B4XPages.MainPage.l_status.Text = cs.Color(Colors.red).append("NO hay conexión a internet!!").PopAll End If End Sub @@ -147,6 +148,7 @@ Sub JobDone(Job As HttpJob) s.notiHigh("ERROR ❌", $"El servidor ${m.Get("url").As(String).Replace("http://", "")} NO responde!!"$, nid, Main) cs.Initialize B4XPages.MainPage.lv_servidores.AddSingleLine(cs.Color(Colors.red).append($"${m.Get("url").As(String).Replace("http://", "")} - ERROR"$).PopAll) + B4XPages.MainPage.lv_servidores.SetSelection(B4XPages.MainPage.lv_servidores.Size - 1) ' B4XPages.MainPage.lv_servidores.AddSingleLine($"${m.Get("url").As(String).Replace("http://", "")} - ERROR"$) End If @@ -188,6 +190,7 @@ Sub JobDone(Job As HttpJob) ' Sleep(200) cs.Initialize B4XPages.MainPage.lv_dbs.AddSingleLine(cs.Color(Colors.red).append($"${m.Get("url").As(String).Replace("http://", "")} - ERROR"$).PopAll) + B4XPages.MainPage.lv_servidores.SetSelection(B4XPages.MainPage.lv_servidores.Size - 1) ' B4XPages.MainPage.lv_dbs.AddSingleLine($"${m.Get("url").As(String).Replace("http://", "")} - ERROR"$) Starter.skmt.ExecNonQuery($"insert into error_log(error, fecha) values ('La BD NO esta respondiendo!!', '${s.fechaKMT(DateTime.Now)}')"$) Dim cd1 As ColorDrawable