From efb4404ceaf5c91f827291194e69ff542528f7ed Mon Sep 17 00:00:00 2001 From: Jose Alberto Guerra Ugalde Date: Mon, 16 Dec 2024 21:25:00 -0600 Subject: [PATCH] - VERSION 4.12.14 - Se actualizo la libreria ReplyAuto para que no mande mensajes de "notification_removed" --- B4A/B4XMainPage.bas | 3 +- B4A/C_Subs.bas | 55 ++++++++++++++++++++++++++++++++++-- B4A/Files/smiley.png | Bin 0 -> 9300 bytes B4A/Monitor-Keymon.b4a | 23 +++++++-------- B4A/Monitor-Keymon.b4a.meta | 6 ++-- B4A/NotificationService.bas | 5 ++-- B4A/Starter.bas | 1 + B4A/monitor.bas | 13 +++++---- 8 files changed, 80 insertions(+), 26 deletions(-) create mode 100644 B4A/Files/smiley.png diff --git a/B4A/B4XMainPage.bas b/B4A/B4XMainPage.bas index 02abf71..3b58279 100644 --- a/B4A/B4XMainPage.bas +++ b/B4A/B4XMainPage.bas @@ -82,6 +82,7 @@ End Sub 'This event will be called once, before the page becomes visible. Private Sub B4XPage_Created (Root1 As B4XView) Root = Root1 +' Log(567) Root.LoadLayout("login") B4XPages.SetTitle(Me, "Monitor Keymon") B4XPages.AddPage("Login", login) @@ -145,7 +146,7 @@ Private Sub B4XPage_Created (Root1 As B4XView) ' 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) - + S.CheckAndRequestNotificationPermission End Sub Sub B4XPage_Appear diff --git a/B4A/C_Subs.bas b/B4A/C_Subs.bas index b3fc960..7b0b790 100644 --- a/B4A/C_Subs.bas +++ b/B4A/C_Subs.bas @@ -18,10 +18,13 @@ Sub Class_Globals ' Dim rutaHrsAtras As Int = 48 ' Dim rutaInicioHoy As String = "" Private subsLogs As Boolean = False + Dim logoKeymon As Bitmap End Sub 'You can add more parameters here. Public Sub Initialize As Object +' smiley = LoadBitmapResize(File.DirAssets, "smiley.png", 24dip, 24dip, False) + logoKeymon = LoadBitmapResize(File.DirAssets, "logo_keymon.png", 24dip, 24dip, False) Return Me End Sub @@ -418,7 +421,7 @@ Sub CreateNotification (Body As String) As Notification End Sub 'Genera una notificacion con importancia alta -Sub notiHigh(title As String, body As String, id As String, activity As Object) 'ignore +Sub notiHigh0(title As String, body As String, id As String, activity As Object) 'ignore activity = Main Private notif As Notification notif.Initialize2(notif.IMPORTANCE_HIGH) @@ -432,8 +435,22 @@ Sub notiHigh(title As String, body As String, id As String, activity As Object) notif.Notify(id) End Sub +'Genera una notificacion con importancia alta +Sub notiHigh(title As String, body As String, id As String, activity As Object) 'ignore + activity = Main + Private notification As NB6 + notification.Initialize("Errores", "Errores", "HIGH").AutoCancel(True).SmallIcon(logoKeymon) + If Starter.logger Then Log("notiHigh: "&title) + notification.Build(title, body, "", Main).Notify(id) +' notif.AutoCancel = True +' If logger Then Log("notiHigh: "&title) +' notif.SetInfo(title, body, activity) +' Log("notiHigh SetInfo") +' notif.Notify(id) +End Sub + 'Regresa el objeto de una notificacion con importancia baja -Sub notiLowReturn(title As String, Body As String, id As Int) As Notification 'ignore +Sub notiLowReturn0(title As String, Body As String, id As Int) As Notification 'ignore Private notification As Notification notification.Initialize2(notification.IMPORTANCE_LOW) ' Log("notiLowReturn: "&title) @@ -446,6 +463,22 @@ Sub notiLowReturn(title As String, Body As String, id As Int) As Notification 'i Return notification End Sub +'Regresa el objeto de una notificacion con importancia minima +Sub notiLowReturn(title As String, Body As String, id As Int) As NB6 'ignore + Private notification As NB6 +' notification.Initialize2(notification.IMPORTANCE_MIN) + notification.Initialize("Normal", "Normal", "LOW").SmallIcon(logoKeymon) + If Starter.logger Then Log("notiLowReturn: "&title) +' notification.Icon = "icon" +' notification.Sound = False +' notification.Vibrate = False + notification.Build(title, Body, "", Main).Notify(id) +' notification.SetInfo(title, Body, Main) +' notification.n(id) +' Log("notiLowReturn SetInfo") + Return notification +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) @@ -500,4 +533,20 @@ Sub borraArribaDeXXXErrores(limite As Int) 'ignore Starter.skmt.ExecNonQuery($"DELETE FROM error_log WHERE fecha NOT in (SELECT fecha FROM error_log ORDER BY fecha desc LIMIT ${limite})"$) Starter.skmt.ExecNonQuery("vacuum;") ' if starter.logger then Log("Borramos mas de 100 de errorLog") -End Sub \ No newline at end of file +End Sub + +Sub CheckAndRequestNotificationPermission As ResumableSub + Dim p As Phone + If p.SdkVersion < 33 Then Return True + Dim ctxt As JavaObject + ctxt.InitializeContext + Dim targetSdkVersion As Int = ctxt.RunMethodJO("getApplicationInfo", Null).GetField("targetSdkVersion") + If targetSdkVersion < 33 Then Return True + Dim NotificationsManager As JavaObject = ctxt.RunMethod("getSystemService", Array("notification")) + Dim NotificationsEnabled As Boolean = NotificationsManager.RunMethod("areNotificationsEnabled", Null) + If NotificationsEnabled Then Return True + Dim rp As RuntimePermissions + rp.CheckAndRequest(rp.PERMISSION_POST_NOTIFICATIONS) + Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean) 'change to Activity_PermissionResult if non-B4XPages. + Return Result +End Sub diff --git a/B4A/Files/smiley.png b/B4A/Files/smiley.png new file mode 100644 index 0000000000000000000000000000000000000000..a563681d85d96a0b309fa1bf544f58dfb49d1a0d GIT binary patch literal 9300 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\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~) +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~)~\n~~\n~'Las siguientes lineas son para permitor el uso del SERVICIO en android 14+ (Se puso como servicio de medios porque no hay uno de monitoreo)~\n~'AddPermission(android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK)~\n~'SetServiceAttribute(Monitor, android:foregroundServiceType, "mediaPlayback") Module1=B4XMainPage Module2=BatteryUtilities Module3=C_Subs @@ -38,14 +39,14 @@ Module5=Monitor Module6=NotificationService Module7=Starter NumberOfFiles=7 -NumberOfLibraries=15 +NumberOfLibraries=16 NumberOfModules=7 Version=12.8 @EndOfDesignText@ #Region Project Attributes #ApplicationLabel: Monitor Keymon #VersionCode: 1 - #VersionName: 4.12.11 + #VersionName: 4.12.14 'SupportedOrientations possible values: unspecified, landscape or portrait. #SupportedOrientations: portrait #CanInstallToExternalStorage: False @@ -55,7 +56,7 @@ Version=12.8 #MultiDex: True #End Region -#Region Activity Attributes +#Region Activity Attributes #FullScreen: False #IncludeTitle: True #End Region @@ -65,8 +66,8 @@ Sub Process_Globals End Sub Sub Globals - Type CameraInfoAndId (CameraInfo As Object, Id As Int) - Type CameraSize (Width As Int, Height As Int) +' Type CameraInfoAndId (CameraInfo As Object, Id As Int) +' Type CameraSize (Width As Int, Height As Int) End Sub Sub Activity_Create(FirstTime As Boolean) 'ignore diff --git a/B4A/Monitor-Keymon.b4a.meta b/B4A/Monitor-Keymon.b4a.meta index 353563a..1cdf655 100644 --- a/B4A/Monitor-Keymon.b4a.meta +++ b/B4A/Monitor-Keymon.b4a.meta @@ -15,13 +15,13 @@ ModuleBreakpoints5= ModuleBreakpoints6= ModuleBreakpoints7= ModuleClosedNodes0= -ModuleClosedNodes1=8,11,19,21,22,24 +ModuleClosedNodes1=2 ModuleClosedNodes2= -ModuleClosedNodes3= +ModuleClosedNodes3=32,34 ModuleClosedNodes4= ModuleClosedNodes5=5 ModuleClosedNodes6= ModuleClosedNodes7= -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 +NavigationStack=NotificationService,Process_Globals,11,0,Starter,Service_Start,37,1,Monitor,Service_Create,36,1,NotificationService,Service_Create,13,1,NotificationService,MonitorKeymon_NotificationPosted,31,0,NotificationService,Service_Start,19,1,C_Subs,notiLowReturn,464,1,C_Subs,notiHigh,432,0,Monitor,Service_Start,40,0,B4XMainPage,B4XPage_Created,78,0 SelectedBuild=0 VisibleModules=1,7,3,5,4,6 diff --git a/B4A/NotificationService.bas b/B4A/NotificationService.bas index 3e8dde5..32f78bc 100644 --- a/B4A/NotificationService.bas +++ b/B4A/NotificationService.bas @@ -5,7 +5,7 @@ Type=Service Version=11 @EndOfDesignText@ #Region Service Attributes - #StartAtBoot: False + #StartAtBoot: True #End Region Sub Process_Globals @@ -17,12 +17,13 @@ Sub Process_Globals End Sub Sub Service_Create +' Log(963) rp.Initialize("MonitorKeymon") If Starter.logger Then Log("**************** Iniciamos Monitor Keymon ***********************") End Sub Sub Service_Start (StartingIntent As Intent) - Log("Monitor - NotificationService Start") + if starter.logger then Log("Monitor - NotificationService Start") If rp.HandleIntent(StartingIntent) Then Return DateTime.DateFormat = "mm" ultimaNoti = DateTime.Date(DateTime.now) diff --git a/B4A/Starter.bas b/B4A/Starter.bas index c931e4e..bc556f1 100644 --- a/B4A/Starter.bas +++ b/B4A/Starter.bas @@ -41,6 +41,7 @@ Sub Service_Create End Sub Sub Service_Start (StartingIntent As Intent) +' Log(123) Service.StopAutomaticForeground 'Starter service can start in the foreground state in some edge cases. s.Initialize skmt = s.inicializaBD(File.DirInternal, "kmt.db") diff --git a/B4A/monitor.bas b/B4A/monitor.bas index 43b186a..949b568 100644 --- a/B4A/monitor.bas +++ b/B4A/monitor.bas @@ -19,7 +19,7 @@ Sub Process_Globals Private lock As PhoneWakeState Dim Interval As Int Dim s As C_Subs - Dim nid As Int = 51043 + Dim nid As Int = 51045 ' Dim monitorActivo As Boolean = True Dim InternetOk As Boolean = True Dim DBReqServerOk As Boolean = True @@ -40,11 +40,12 @@ Sub Service_Create logger = False #end if lock.PartialLock +' Log(345) ' probamosConexion End Sub Sub Service_Start (StartingIntent As Intent) - Log("Monitor Start") + If Starter.logger Then Log("Monitor Start") Service.StopAutomaticForeground 'Call this when the background task completes (if there is one) Service.StartForeground(nid, s.CreateNotification("...")) StartServiceAt(Me, DateTime.Now + 10 * DateTime.TicksPerMinute, True) @@ -68,7 +69,7 @@ End Sub Sub probamosConexion If logger Then Log("###################### "& CRLF& " probamos probamosConexion"& CRLF& " ############") - Try +' Try If B4XPages.IsInitialized Then B4XPages.MainPage.lv_servidores.Clear B4XPages.MainPage.lv_dbs.Clear @@ -120,9 +121,9 @@ Sub probamosConexion 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 +' Catch +' Log(LastException) +' End Try End Sub Sub reinicializaReqManager 'ignore