mirror of
https://github.com/KeymonSoft/Monitor-Keymon.git
synced 2026-04-17 21:06:19 +00:00
- VERSION 4.12.11
- Se volvio a incluir la libreria de intercepcion de notificaciones (ReplyAuto) para ayudar a mantener activa la aplicacion. - Su gregaron bloques de try/catch para evitar que se generen errores cuando los servicios modifican la pantalla principal (mainpage) y la aplicacion esta en segundo plano.
This commit is contained in:
@@ -70,8 +70,8 @@ Sub Class_Globals
|
||||
Private p_dbs As Panel
|
||||
Private p_servidoresActivos As Panel
|
||||
Private lv_servidoresActivos As ListView
|
||||
Dim jsn As JSONParser
|
||||
Dim jsnGnr As JSONGenerator
|
||||
' Dim jsn As JSONParser
|
||||
' Dim jsnGnr As JSONGenerator
|
||||
Dim rp As RuntimePermissions
|
||||
End Sub
|
||||
|
||||
@@ -159,25 +159,25 @@ Sub B4XPage_Appear
|
||||
s.centraEtiqueta(l_ultimoPing, Root.Width)
|
||||
' s.centraPanel(p_intervalo, Root.Width)
|
||||
s.centraEtiqueta(Label1, Root.Width)
|
||||
' If Not(CheckNotificationAccess) Then
|
||||
' Msgbox2Async($"Se necesita acceso a las notificaciones, haga clic en "Aceptar" y en la siguiente pantalla permita el acceso a la aplicación "${Application.LabelName}"."$, "Permisos necesarios", "Aceptar", "Cancelar", "", Null, True)
|
||||
' Wait For Msgbox_Result (resultado As Int)
|
||||
' If resultado = DialogResponse.POSITIVE Then
|
||||
' b_notifAccess_Click
|
||||
' End If
|
||||
' Private cd1 As ColorDrawable
|
||||
' cd1.Initialize(Colors.red, 10dip)
|
||||
' b_notifAccess.Background = cd1
|
||||
' b_notifAccess.TextColor = Colors.White
|
||||
' b_notifAccess.Text = "Activar Permisos"
|
||||
' Else
|
||||
' Private cd1 As ColorDrawable
|
||||
' cd1.Initialize(Colors.RGB(109, 221, 101), 10dip)
|
||||
' b_notifAccess.Background = cd1
|
||||
' b_notifAccess.TextColor = Colors.White
|
||||
' b_notifAccess.Text = "Permisos Activos"
|
||||
' End If
|
||||
' CallSubDelayed(Monitor, "Timer1_Tick")
|
||||
If Not(CheckNotificationAccess) Then
|
||||
Msgbox2Async($"Se necesita acceso a las notificaciones, haga clic en "Aceptar" y en la siguiente pantalla permita el acceso a la aplicación "${Application.LabelName}"."$, "Permisos necesarios", "Aceptar", "Cancelar", "", Null, True)
|
||||
Wait For Msgbox_Result (resultado As Int)
|
||||
If resultado = DialogResponse.POSITIVE Then
|
||||
b_notifAccess_Click
|
||||
End If
|
||||
Private cd1 As ColorDrawable
|
||||
cd1.Initialize(Colors.red, 10dip)
|
||||
b_notifAccess.Background = cd1
|
||||
b_notifAccess.TextColor = Colors.White
|
||||
b_notifAccess.Text = "Activar Permisos"
|
||||
Else
|
||||
Private cd1 As ColorDrawable
|
||||
cd1.Initialize(Colors.RGB(109, 221, 101), 10dip)
|
||||
b_notifAccess.Background = cd1
|
||||
b_notifAccess.TextColor = Colors.White
|
||||
b_notifAccess.Text = "Permisos Activos"
|
||||
End If
|
||||
CallSubDelayed(Monitor, "Timer1_Tick")
|
||||
End Sub
|
||||
|
||||
Private Sub B4XPage_CloseRequest As ResumableSub
|
||||
@@ -193,11 +193,11 @@ End Sub
|
||||
|
||||
'Revisa si la aplicación tiene permiso para acceder a las notificaciones.
|
||||
Sub CheckNotificationAccess As Boolean
|
||||
' Dim nstr, pstr As String
|
||||
' Dim r As Reflector
|
||||
' pstr = r.GetStaticField("anywheresoftware.b4a.BA", "packageName")
|
||||
' nstr = ph.GetSettings("enabled_notification_listeners")
|
||||
' Return nstr.Contains(pstr)
|
||||
Dim nstr, pstr As String
|
||||
Dim r As Reflector
|
||||
pstr = r.GetStaticField("anywheresoftware.b4a.BA", "packageName")
|
||||
nstr = ph.GetSettings("enabled_notification_listeners")
|
||||
Return nstr.Contains(pstr)
|
||||
End Sub
|
||||
|
||||
Private Sub tb_monitorActivo_CheckedChange(Checked As Boolean)
|
||||
@@ -310,9 +310,9 @@ End Sub
|
||||
|
||||
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||
Sub b_notifAccess_Click
|
||||
' Dim In As Intent
|
||||
' In.Initialize("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS", "")
|
||||
' StartActivity(In)
|
||||
Dim In As Intent
|
||||
In.Initialize("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS", "")
|
||||
StartActivity(In)
|
||||
End Sub
|
||||
|
||||
Sub CreateListItem(Text As String, Width As Int, Height As Int) As Panel 'ignore
|
||||
|
||||
@@ -449,32 +449,36 @@ End Sub
|
||||
Sub ping
|
||||
Private ph As Phone
|
||||
Wait For (ph.ShellAsync("ping", Array As String("-c 1","-W 5", "8.8.8.8"))) Complete (Success As Boolean, ExitValue As Int, StdOut As String, StdErr As String)
|
||||
If Success Then
|
||||
Try
|
||||
If Success Then
|
||||
' Log("ExitValue:" & ExitValue)
|
||||
' Log("StdError:" & StdErr)
|
||||
Private res() As String = Regex.Split(",", StdOut)
|
||||
For i = 0 To res.Length - 1
|
||||
If res(i).Contains("1 received") Then
|
||||
If Starter.logger Then LogColor(">>> HAY CONEXION", Colors.Green)
|
||||
Starter.ping = True
|
||||
Else If res(i).Contains("0 received") Then
|
||||
If Starter.logger Then LogColor(">>> NO HAY CONEXION", Colors.Red)
|
||||
Starter.ping = False
|
||||
End If
|
||||
Private res() As String = Regex.Split(",", StdOut)
|
||||
For i = 0 To res.Length - 1
|
||||
If res(i).Contains("1 received") Then
|
||||
If Starter.logger Then LogColor(">>> HAY CONEXION", Colors.Green)
|
||||
Starter.ping = True
|
||||
Else If res(i).Contains("0 received") Then
|
||||
If Starter.logger Then LogColor(">>> NO HAY CONEXION", Colors.Red)
|
||||
Starter.ping = False
|
||||
End If
|
||||
' Log(res(i))
|
||||
Next
|
||||
Next
|
||||
' LogColor("StdOut: " & res, Colors.Blue)
|
||||
If B4XPages.IsInitialized Then B4XPages.MainPage.cb_internet.Checked = Starter.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)
|
||||
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
|
||||
If B4XPages.IsInitialized Then B4XPages.MainPage.cb_internet.Checked = Starter.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)
|
||||
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)
|
||||
End If
|
||||
Else
|
||||
Log("Error: " & LastException)
|
||||
End If
|
||||
Catch
|
||||
Log(LastException)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Sub traeServidorDesdeBD(id As Int) As Map
|
||||
|
||||
@@ -20,6 +20,7 @@ Library11=runtimepermissions
|
||||
Library12=sql
|
||||
Library13=xcustomlistview
|
||||
Library14=xui
|
||||
Library15=replyauto
|
||||
Library2=byteconverter
|
||||
Library3=core
|
||||
Library4=fusedlocationprovider
|
||||
@@ -28,23 +29,23 @@ 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~<uses-sdk android:minSdkVersion="5" android:targetSdkVersion="33"/>~\n~<supports-screens android:largeScreens="true" ~\n~ android:normalScreens="true"~\n~ android:smallScreens="true"~\n~ android:anyDensity="true"/>)~\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~<meta-data~\n~ android:name="com.google.android.geo.API_KEY"~\n~ android:value="AIzaSyBlBnx3O-DncOSv3oFIp-12wgujOYYcl-U"/>~\n~ <meta-data android:name="com.google.android.gms.version"~\n~ android:value="@integer/google_play_services_version" />~\n~)~\n~AddApplicationText(~\n~<uses-library~\n~ android:name="org.apache.http.legacy"~\n~ android:required="false" />~\n~)~\n~'AddManifestText(~\n~'<uses-permission~\n~' android:name="android.permission.WRITE_EXTERNAL_STORAGE"~\n~' android:maxSdkVersion="33" />~\n~')~\n~ 'End of default text.~\n~ ~\n~SetApplicationAttribute(android:usesCleartextTraffic, "true")~\n~AddManifestText(<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:maxSdkVersion="33" />)~\n~AddPermission(android.permission.ACCESS_BACKGROUND_LOCATION)~\n~AddManifestText(<uses-permission android:name="android.permission.READ_PHONE_STATE" android:maxSdkVersion="33" />)~\n~AddManifestText(<uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" android:maxSdkVersion="33" />) 'in order to access the device non-resettable identifiers such as IMEI and serial number.~\n~AddManifestText(<uses-feature android:name="android.hardware.telephony" android:required="false" />)~\n~'AddManifestText(<uses-feature android:name="android.hardware.camera" android:required="false" />)~\n~'AddManifestText(<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />)~\n~'AddManifestText(<uses-feature android:name="android.hardware.camera.flash" android:required="false" />)~\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(<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" android:maxSdkVersion="33" />)~\n~AddPermission(android.permission.INTERNET)~\n~SetApplicationAttribute(android:allowBackup, "false")~\n~'AddApplicationText(~\n~'<service android:name="b4a.jsaplication.com.br.ReplyAuto"~\n~' android:label="MonitorKeymon"~\n~' android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"~\n~' android:exported="true">~\n~' <intent-filter>~\n~' <action android:name="android.service.notification.NotificationListenerService" />~\n~' </intent-filter>~\n~'</service>)
|
||||
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~<uses-sdk android:minSdkVersion="5" android:targetSdkVersion="33"/>~\n~<supports-screens android:largeScreens="true" ~\n~ android:normalScreens="true"~\n~ android:smallScreens="true"~\n~ android:anyDensity="true"/>)~\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~<meta-data~\n~ android:name="com.google.android.geo.API_KEY"~\n~ android:value="AIzaSyBlBnx3O-DncOSv3oFIp-12wgujOYYcl-U"/>~\n~ <meta-data android:name="com.google.android.gms.version"~\n~ android:value="@integer/google_play_services_version" />~\n~)~\n~AddApplicationText(~\n~<uses-library~\n~ android:name="org.apache.http.legacy"~\n~ android:required="false" />~\n~)~\n~'AddManifestText(~\n~'<uses-permission~\n~' android:name="android.permission.WRITE_EXTERNAL_STORAGE"~\n~' android:maxSdkVersion="33" />~\n~')~\n~ 'End of default text.~\n~ ~\n~SetApplicationAttribute(android:usesCleartextTraffic, "true")~\n~AddManifestText(<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:maxSdkVersion="33" />)~\n~AddPermission(android.permission.ACCESS_BACKGROUND_LOCATION)~\n~AddManifestText(<uses-permission android:name="android.permission.READ_PHONE_STATE" android:maxSdkVersion="33" />)~\n~AddManifestText(<uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" android:maxSdkVersion="33" />) 'in order to access the device non-resettable identifiers such as IMEI and serial number.~\n~AddManifestText(<uses-feature android:name="android.hardware.telephony" android:required="false" />)~\n~'AddManifestText(<uses-feature android:name="android.hardware.camera" android:required="false" />)~\n~'AddManifestText(<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />)~\n~'AddManifestText(<uses-feature android:name="android.hardware.camera.flash" android:required="false" />)~\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(<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" android:maxSdkVersion="33" />)~\n~AddPermission(android.permission.INTERNET)~\n~SetApplicationAttribute(android:allowBackup, "false")~\n~AddApplicationText(~\n~<service android:name="b4a.jsaplication.com.br.ReplyAuto"~\n~ android:label="MonitorKeymon"~\n~ android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"~\n~ android:exported="true">~\n~ <intent-filter>~\n~ <action android:name="android.service.notification.NotificationListenerService" />~\n~ </intent-filter>~\n~</service>)
|
||||
Module1=B4XMainPage
|
||||
Module2=BatteryUtilities
|
||||
Module3=C_Subs
|
||||
Module4=DBRequestManager
|
||||
Module5=Monitor
|
||||
Module6=NotificationServiceXXX
|
||||
Module6=NotificationService
|
||||
Module7=Starter
|
||||
NumberOfFiles=7
|
||||
NumberOfLibraries=14
|
||||
NumberOfLibraries=15
|
||||
NumberOfModules=7
|
||||
Version=12.8
|
||||
@EndOfDesignText@
|
||||
#Region Project Attributes
|
||||
#ApplicationLabel: Monitor Keymon
|
||||
#VersionCode: 1
|
||||
#VersionName: 4.12.04
|
||||
#VersionName: 4.12.11
|
||||
'SupportedOrientations possible values: unspecified, landscape or portrait.
|
||||
#SupportedOrientations: portrait
|
||||
#CanInstallToExternalStorage: False
|
||||
|
||||
@@ -22,6 +22,6 @@ ModuleClosedNodes4=
|
||||
ModuleClosedNodes5=5
|
||||
ModuleClosedNodes6=
|
||||
ModuleClosedNodes7=
|
||||
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
|
||||
NavigationStack=C_Subs,ping,445,1,Main,Globals,26,0,B4XMainPage,Class_Globals,66,0,Monitor,Process_Globals,19,0,Monitor,JobDone,162,4,NotificationService,Service_Create,14,0,B4XMainPage,B4XPage_Created,79,0,NotificationService,Service_Start,18,0,NotificationService,MonitorKeymon_NotificationPosted,44,0,Starter,Service_Start,60,0,Monitor,Service_Start,43,0
|
||||
SelectedBuild=0
|
||||
VisibleModules=1,7,3,5,4
|
||||
VisibleModules=1,7,3,5,4,6
|
||||
|
||||
@@ -11,44 +11,44 @@ Version=11
|
||||
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 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 ***********************")
|
||||
rp.Initialize("MonitorKeymon")
|
||||
If Starter.logger Then Log("**************** Iniciamos Monitor Keymon ***********************")
|
||||
End Sub
|
||||
|
||||
Sub Service_Start (StartingIntent As Intent)
|
||||
' Log("NotificationService Start")
|
||||
' If rp.HandleIntent(StartingIntent) Then Return
|
||||
Log("Monitor - 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)
|
||||
If Starter.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
|
||||
Sub MonitorKeymon_NotificationPosted (SBN As StatusBarNotification)
|
||||
' Log("|" & ultimaNoti & "|")
|
||||
If ultimaNoti = "" Then ultimaNoti = 0
|
||||
DateTime.DateFormat = "mm"
|
||||
Private estaNoti As String = DateTime.Date(DateTime.now)
|
||||
' Log("|" & estaNoti & "|")
|
||||
If estaNoti > 60 Then estaNoti = estaNoti - 60
|
||||
' Log("|" & estaNoti & "|")
|
||||
If Starter.logger Then LogColor("Diferencia de tiempo entre notis = " & (estaNoti - ultimaNoti), Colors.blue)
|
||||
If Starter.logger Then LogColor($"Esta noti en el minuto ${DateTime.Date(DateTime.now)}, ultima noti = ${ultimaNoti}"$, Colors.green)
|
||||
If Starter.logger Then Log(SBN.PackageName)
|
||||
If (ultimaNoti + 2) < estaNoti Then '3 minutos
|
||||
If Starter.logger Then LogColor($"******** Revisamos el Monitor *******"$, Colors.red)
|
||||
ultimaNoti = estaNoti
|
||||
If Starter.logger Then Log($"Monitor activo: ${Not(IsPaused(Monitor))}"$)
|
||||
If IsPaused(Monitor) Then StartService(Monitor)
|
||||
End If
|
||||
If Starter.logger Then LogColor("Monitor inicializado: " & Monitor.Timer1.IsInitialized, Colors.Magenta)
|
||||
End Sub
|
||||
|
||||
@@ -24,7 +24,7 @@ Sub Process_Globals
|
||||
' Dim InternetOk As Boolean = True
|
||||
' Dim DBReqServerOk As Boolean = True
|
||||
' Dim DBOk As Boolean = True
|
||||
Dim logger As Boolean = False
|
||||
Dim logger As Boolean = True
|
||||
Dim ping As Boolean = False
|
||||
Dim servidores As List
|
||||
End Sub
|
||||
|
||||
205
B4A/monitor.bas
205
B4A/monitor.bas
@@ -68,61 +68,61 @@ End Sub
|
||||
|
||||
Sub probamosConexion
|
||||
If logger Then Log("###################### "& CRLF& " probamos probamosConexion"& CRLF& " ############")
|
||||
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
|
||||
Try
|
||||
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
|
||||
' B4XPages.MainPage.cb_db.Checked = False
|
||||
End If
|
||||
If IsConnectedToInternet Then
|
||||
s.ping
|
||||
InternetOk = True
|
||||
If B4XPages.IsInitialized Then
|
||||
B4XPages.MainPage.cb_conexion.Checked = True
|
||||
B4XPages.MainPage.cb_internet.Checked = Starter.ping
|
||||
Dim cd1 As ColorDrawable
|
||||
cd1.Initialize(Colors.RGB(16, 141, 0), 10dip)
|
||||
B4XPages.MainPage.b_ping.Background = cd1
|
||||
B4XPages.MainPage.b_ping.Text = "Internet Ok"
|
||||
End If
|
||||
Dim cmd As DBCommand
|
||||
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 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
|
||||
cmd.Name = "select_conexion"
|
||||
reqManager.ExecuteQuery(cmd, 0, "select_conexion_" & i, esteServidor.get("timeout"))
|
||||
Next
|
||||
Private sa As Cursor = Starter.skmt.ExecQuery("select * from cat_servidores")
|
||||
If sa.RowCount > 0 Then
|
||||
For i = 0 To sa.RowCount - 1
|
||||
sa.Position = i
|
||||
reqManager.Initialize(Me, sa.GetString("url"))
|
||||
If IsConnectedToInternet Then
|
||||
s.ping
|
||||
InternetOk = True
|
||||
If B4XPages.IsInitialized Then
|
||||
B4XPages.MainPage.cb_conexion.Checked = True
|
||||
B4XPages.MainPage.cb_internet.Checked = Starter.ping
|
||||
Dim cd1 As ColorDrawable
|
||||
cd1.Initialize(Colors.RGB(16, 141, 0), 10dip)
|
||||
B4XPages.MainPage.b_ping.Background = cd1
|
||||
B4XPages.MainPage.b_ping.Text = "Internet Ok"
|
||||
End If
|
||||
Dim cmd As DBCommand
|
||||
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 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
|
||||
cmd.Name = "select_conexion"
|
||||
reqManager.ExecuteQuery(cmd, 0, "select_conexion_" & sa.GetString("id"), sa.GetString("timeout"))
|
||||
reqManager.ExecuteQuery(cmd, 0, "select_conexion_" & i, esteServidor.get("timeout"))
|
||||
Next
|
||||
Private sa As Cursor = Starter.skmt.ExecQuery("select * from cat_servidores")
|
||||
If sa.RowCount > 0 Then
|
||||
For i = 0 To sa.RowCount - 1
|
||||
sa.Position = i
|
||||
reqManager.Initialize(Me, sa.GetString("url"))
|
||||
cmd.Initialize
|
||||
cmd.Name = "select_conexion"
|
||||
reqManager.ExecuteQuery(cmd, 0, "select_conexion_" & sa.GetString("id"), sa.GetString("timeout"))
|
||||
Next
|
||||
End If
|
||||
'Reiniciamos el timer para cuando llamamos el Sub desde "seleccion"
|
||||
Timer1.Enabled = False
|
||||
Timer1.Interval = Interval * 1000
|
||||
Timer1.Enabled = True
|
||||
Else
|
||||
If logger Then Log("Sin conexión a internet!!!")
|
||||
s.notiLowReturn("SIN INTERNET ❌", "NO hay conexion a internet.", nid)
|
||||
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
|
||||
|
||||
|
||||
|
||||
'Reiniciamos el timer para cuando llamamos el Sub desde "seleccion"
|
||||
Timer1.Enabled = False
|
||||
Timer1.Interval = Interval * 1000
|
||||
Timer1.Enabled = True
|
||||
Else
|
||||
If logger Then Log("Sin conexión a internet!!!")
|
||||
s.notiLowReturn("SIN INTERNET ❌", "NO hay conexion a internet.", nid)
|
||||
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
|
||||
|
||||
Catch
|
||||
Log(LastException)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Sub reinicializaReqManager 'ignore
|
||||
@@ -137,21 +137,24 @@ Sub JobDone(Job As HttpJob)
|
||||
If Job.JobName = "DBRequest" Then DBReqServerOk = False
|
||||
Dim cd1 As ColorDrawable
|
||||
cd1.Initialize(Colors.Red, 10dip)
|
||||
If B4XPages.IsInitialized Then B4XPages.MainPage.b_ping.Background = cd1
|
||||
If B4XPages.IsInitialized Then B4XPages.MainPage.b_ping.Text = "DBReqServer KO"
|
||||
Log("Guardamos error en BD")
|
||||
If Job.Tag.As(String).StartsWith("select_conexion_") Then
|
||||
Private idServidorX() As String = Regex.Split("_", Job.Tag)
|
||||
Try
|
||||
If B4XPages.IsInitialized Then B4XPages.MainPage.b_ping.Background = cd1
|
||||
If B4XPages.IsInitialized Then B4XPages.MainPage.b_ping.Text = "DBReqServer KO"
|
||||
Log("Guardamos error en BD")
|
||||
If Job.Tag.As(String).StartsWith("select_conexion_") Then
|
||||
Private idServidorX() As String = Regex.Split("_", Job.Tag)
|
||||
' Log("|" & idServidorX(2) & "|")
|
||||
Private idServidor As String = idServidorX(2)
|
||||
Private m As Map = s.traeServidorDesdeBD(idServidor)
|
||||
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)
|
||||
Private idServidor As String = idServidorX(2)
|
||||
Private m As Map = s.traeServidorDesdeBD(idServidor)
|
||||
s.notiHigh("ERROR ❌", $"El servidor ${m.Get("url").As(String).Replace("http://", "")} NO responde!!"$, nid, Main)
|
||||
cs.Initialize
|
||||
If B4XPages.IsInitialized Then B4XPages.MainPage.lv_servidores.AddSingleLine(cs.Color(Colors.red).append($"${m.Get("url").As(String).Replace("http://", "")} - ERROR"$).PopAll)
|
||||
If B4XPages.IsInitialized Then 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
|
||||
|
||||
End If
|
||||
Catch
|
||||
Log(LastException)
|
||||
End Try
|
||||
Starter.skmt.ExecNonQuery($"insert into error_log(error, fecha) values ('El servidor ${Starter.DBReqServer} NO responde!!', '${s.fechaKMT(DateTime.Now)}')"$)
|
||||
If Job.ErrorMessage.Contains("failed to connect") Or Job.ErrorMessage.Contains("Failed to connect") Then
|
||||
' ToastMessageShow("¡Hubo un error contactando al servidor, por favor revise su conexión!", True)
|
||||
@@ -162,56 +165,64 @@ Sub JobDone(Job As HttpJob)
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim resultado As DBResult = reqManager.HandleJob(Job)
|
||||
If resultado.Tag.As(String).StartsWith("select_conexion_") Then
|
||||
Log("select_conexion")
|
||||
If Starter.logger Then Log("select_conexion")
|
||||
Private idServidorX() As String = Regex.Split("_", resultado.Tag)
|
||||
Private idServidor As String = idServidorX(2)
|
||||
Private m As Map = s.traeServidorDesdeBD(idServidor)
|
||||
B4XPages.MainPage.lbl.TextColor = Colors.black
|
||||
B4XPages.MainPage.lv_servidores.AddSingleLine($"${m.Get("url").As(String).Replace("http://", "")} - OK"$)
|
||||
For Each records() As Object In resultado.Rows
|
||||
Private valor As String = records(resultado.Columns.Get("VALOR"))
|
||||
If valor = "OK" Then
|
||||
DBOk = True
|
||||
s.notiLowReturn($"El servidor esta respondiendo ✅"$, "Servidor OK ✅", nid)
|
||||
If B4XPages.IsInitialized Then
|
||||
B4XPages.MainPage.l_status.Text = "El servidor esta respondiendo!!"
|
||||
B4XPages.MainPage.lv_dbs.AddSingleLine($"${m.Get("url").As(String).Replace("http://", "")} - OK"$)
|
||||
Dim cd1 As ColorDrawable
|
||||
cd1.Initialize(Colors.RGB(16, 141, 0), 10dip)
|
||||
B4XPages.MainPage.b_ping.Background = cd1
|
||||
B4XPages.MainPage.b_ping.Text = "Servidor Ok"
|
||||
End If
|
||||
Else
|
||||
s.notiHigh("ERROR ❌", $"La base de datos ${m.Get("url").As(String).Replace("http://", "")} NO responde!!"$, nid, Main)
|
||||
If B4XPages.IsInitialized Then
|
||||
B4XPages.MainPage.l_status.Text = "La base de datos NO esta respondiendo!!"
|
||||
Log("Guardamos error en BD")
|
||||
Try
|
||||
If B4XPages.IsInitialized Then B4XPages.MainPage.lbl.TextColor = Colors.black
|
||||
If B4XPages.IsInitialized Then B4XPages.MainPage.lv_servidores.AddSingleLine($"${m.Get("url").As(String).Replace("http://", "")} - OK"$)
|
||||
For Each records() As Object In resultado.Rows
|
||||
Private valor As String = records(resultado.Columns.Get("VALOR"))
|
||||
If valor = "OK" Then
|
||||
DBOk = True
|
||||
s.notiLowReturn($"El servidor esta respondiendo ✅"$, "Servidor OK ✅", nid)
|
||||
If B4XPages.IsInitialized Then
|
||||
B4XPages.MainPage.l_status.Text = "El servidor esta respondiendo!!"
|
||||
B4XPages.MainPage.lv_dbs.AddSingleLine($"${m.Get("url").As(String).Replace("http://", "")} - OK"$)
|
||||
Dim cd1 As ColorDrawable
|
||||
cd1.Initialize(Colors.RGB(16, 141, 0), 10dip)
|
||||
B4XPages.MainPage.b_ping.Background = cd1
|
||||
B4XPages.MainPage.b_ping.Text = "Servidor Ok"
|
||||
End If
|
||||
Else
|
||||
s.notiHigh("ERROR ❌", $"La base de datos ${m.Get("url").As(String).Replace("http://", "")} NO responde!!"$, nid, Main)
|
||||
If B4XPages.IsInitialized Then
|
||||
B4XPages.MainPage.l_status.Text = "La base de datos NO esta respondiendo!!"
|
||||
Log("Guardamos error en BD")
|
||||
' B4XPages.MainPage.lbl.TextColor = Colors.red
|
||||
' 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)
|
||||
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
|
||||
cd1.Initialize(Colors.Red, 10dip)
|
||||
B4XPages.MainPage.b_ping.Background = cd1
|
||||
B4XPages.MainPage.b_ping.Text = "Servidor KO"
|
||||
Starter.skmt.ExecNonQuery($"insert into error_log(error, fecha) values ('La BD NO esta respondiendo!!', '${s.fechaKMT(DateTime.Now)}')"$)
|
||||
Dim cd1 As ColorDrawable
|
||||
cd1.Initialize(Colors.Red, 10dip)
|
||||
B4XPages.MainPage.b_ping.Background = cd1
|
||||
B4XPages.MainPage.b_ping.Text = "Servidor KO"
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
Next
|
||||
Next
|
||||
Catch
|
||||
Log(LastException)
|
||||
End Try
|
||||
End If
|
||||
' s.logJobDoneResultados(resultado)
|
||||
If resultado.Rows.Size = 0 Then DBOk = False
|
||||
' Log(resultado.Rows.Size)
|
||||
End If
|
||||
If B4XPages.IsInitialized Then
|
||||
B4XPages.MainPage.cb_conexion.Checked = InternetOk
|
||||
B4XPages.MainPage.cb_internet.Checked = Starter.ping
|
||||
If DBReqServerOk Then B4XPages.MainPage.cb_internet.Checked = True
|
||||
Try
|
||||
If B4XPages.IsInitialized Then
|
||||
B4XPages.MainPage.cb_conexion.Checked = InternetOk
|
||||
B4XPages.MainPage.cb_internet.Checked = Starter.ping
|
||||
If DBReqServerOk Then B4XPages.MainPage.cb_internet.Checked = True
|
||||
' B4XPages.MainPage.cb_dbreqserver.Checked = DBReqServerOk
|
||||
' B4XPages.MainPage.cb_db.Checked = DBOk
|
||||
End If
|
||||
End If
|
||||
Catch
|
||||
Log(LastException)
|
||||
End Try
|
||||
Job.Release
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Reference in New Issue
Block a user