B4A=true Group=Default Group ModulesStructureVersion=1 Type=Class Version=9.85 @EndOfDesignText@ #Region Shared Files '#CustomBuildAction: folders ready, %WINDIR%\System32\Robocopy.exe,"..\..\Shared Files" "..\Files" 'Ctrl + click to sync files: ide://run?file=%WINDIR%\System32\Robocopy.exe&args=..\..\Shared+Files&args=..\Files&FilesSync=True '########################################################################################################### '###################### PULL ############################################################# 'Ctrl + click ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=git&Args=pull '########################################################################################################### '###################### PUSH ############################################################# 'Ctrl + click ide://run?file=%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe&Args=github&Args=.\..\..\ 'GITHUB DESKTOP ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=github&Args=..\..\ '########################################################################################################### '###################### PUSH TORTOISE GIT ######################################################### 'Ctrl + click ide://run?file=%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe&Args=TortoiseGitProc&Args=/command:commit&Args=/path:"./../../"&Args=/closeonend:2 '########################################################################################################### #End Region 'Ctrl + click to export as zip: ide://run?File=%B4X%\Zipper.jar&Args=Project.zip Sub Class_Globals Private Root As B4XView Private xui As XUI Dim wifi As MLwifi Dim wifiS As MLScan Public manager As AdminManager ' Dim ruta As String Dim fechaRuta As String Dim laUbicacion As Location Private b_pong As Button Private et_id As EditText Private b_guardarId As Button Private l_coords As Label Dim l_lastUpdate As Label Private l_id As Label ' Private b_flpConnect As Button Private b_exit As Button Private l_version As Label End Sub Public Sub Initialize ' B4XPages.GetManager.LogEvents = True End Sub 'This event will be called once, before the page becomes visible. Private Sub B4XPage_Created (Root1 As B4XView) Root = Root1 Root.LoadLayout("layout") l_version.Text = Application.VersionName ' ruta = File.DirInternal Subs.getPhnId et_id.Text = Starter.devModel.trim getSSID b_pong.Left = Round(Root.Width/2)-(b_pong.Width/2) ' b_flpConnect.Left = Round(Activity.Width/2)-(b_flpConnect.Width/2) b_exit.Left = Round(Root.Width/2)-(b_exit.Width/2) l_id.Left = (Root.Width / 2) - (l_id.Width / 2) l_lastUpdate.Left = (Root.Width / 2) - (l_lastUpdate.Width / 2) b_guardarId.Left = (Root.Width / 2) - (b_guardarId.Width / 2) et_id.Left = (Root.Width / 2) - (et_id.Width / 2) chkPermisosUbicacion 'Permisos de ubicacion para Tracker chkPermisosAlmacenamientoExterno chkPermisosLeerLlamadas 'Permisos de telefono para registrar llamadas chkPermisosEstadoTelefono End Sub Sub B4XPage_Appear Subs.getPhnId et_id.Text = Starter.devModel.Trim getSSID getAdminRights l_lastUpdate.Text = Subs.fechaKMT(Starter.lastLocUpdate) ' ruta = File.DirInternal 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 Dim In As Intent In.Initialize("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS", "") StartActivity(In) End If End If ponCoords End Sub 'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. Sub b_pong_Click CallSubDelayed(Tracker, "StartFLP") If Starter.UUC.IsInitialized Then Subs.mandaLocAServer(Starter.devModel.Trim) ' Dim params As Map = CreateMap("topic": FireBaseMessaging.Sprvsr,"title":"Prueba Trckr", "body":"Prueba Trckr", "d":Starter.devModel, "t":"pong") ' CallSubDelayed2(FirebaseMessaging, "SendMessage",params) If Starter.logger Then Log("Start wifi scan") wifiS.startscan("WiFi", True) Wait For WiFi_ScanDone (Results() As String, Count As Int) End Sub Sub b_pong_LongClick ' copiaDB CallSubDelayed(Tracker, "StartFLP") If Starter.UUC.IsInitialized Then Subs.mandaLocAServer(Starter.devModel.Trim) ' Dim params As Map = CreateMap("topic": FireBaseMessaging.Sprvsr,"title":"Prueba Trckr", "body":l_coords.Text, "d":Starter.devModel, "t":"au") ' CallSubDelayed2(FirebaseMessaging, "SendMessage",params) If Starter.logger Then Log("Start wifi scan") wifiS.startscan("WiFi", True) Wait For WiFi_ScanDone (Results() As String, Count As Int) End Sub 'Obtenemos permisos de almacenamiento. Sub chkPermisosAlmacenamientoExterno Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE) Wait For Activity_PermissionResult (Permission As String, Result As Boolean) If Result Then ' If Starter.logger Then Log("Permisos de almacenamiento externo OK") Else ' ToastMessageShow("SIN permisos de almacenamiento externo", True) End If End Sub 'Obtenemos permisos de ubicacion. Sub chkPermisosUbicacion ' If Starter.logger Then Log("Revisamos permisos de ubicación.") Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_ACCESS_FINE_LOCATION) Wait For Activity_PermissionResult (Permission As String, Result As Boolean) If Result Then StartService(Tracker) If Starter.logger Then Log("Start Tracker") Else ' ToastMessageShow("SIN permisos de ubicacion", True) End If ' Starter.rp.CheckAndRequest(Starter.rp. ) ' Wait For Activity_PermissionResult (Permission As String, Result As Boolean) ' If Result Then ' StartService(Tracker) ' If Starter.logger Then Log("Start Tracker") ' Else '' ToastMessageShow("SIN permisos de ubicacion", True) ' End If End Sub 'Obtenemos permisos de llamadas. Sub chkPermisosLeerLlamadas Starter.rp.CheckAndRequest("android.permission.READ_CALL_LOG") wait for Activity_PermissionResult(permission As String, result As Boolean) Log("READ_CALL_LOG: " & result) End Sub 'Obtenemos permisos de estado de telefono. Sub chkPermisosEstadoTelefono Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_READ_PHONE_STATE) wait for Activity_PermissionResult(permission As String, result As Boolean) If Starter.logger Then Log("READ_PHONE_STATE: " & result) End Sub Sub getSSID If wifi.isWifiConnected Then Subs.ssid = wifi.WifiSSID End If End Sub Sub getAdminRights If manager.Enabled = False Then manager.Enable("Please enable in order to get access to the secured server.") End If End Sub 'Sub wifiScanned_ScanDone ' Log("//////////////////////////////wifi_conected_result") ' ToastMessageShow("Wifi_ConnectionResult",True) ' If wifi.isWifiConnected Then ' ssid = wifi.WifiSSID ' End If 'End Sub Sub copiaDB 'ignore ' Log("ruta="&ruta) ' Log("File.DirInternal="&File.DirInternal) ' Log("File.DirRootExternal="&File.DirRootExternal) ' Log("File.DirDefaultExternal="&File.DirDefaultExternal) ' Log(Starter.rp.GetSafeDirDefaultExternal("")) ' Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE) ' Wait For Activity_PermissionResult (Permission As String, Result As Boolean) ' If Result Then ' If Starter.logger Then Log("Tenemos permisos de escritura.") ' File.Copy(File.DirInternal , "gps_hist.db", File.DirDefaultExternal, "gps_hist.db") ' If Starter.logger Then Log($"DB escrita a ${File.DirDefaultExternal}"$) ' ToastMessageShow($"DB escrita a ${File.DirDefaultExternal}"$, True) ' End If End Sub Private Sub b_guardarId_Click If et_id.Text.Length > 2 Then 'Si tenemos valor para ID File.WriteString(File.DirInternal, "phnId.txt", et_id.Text.trim) 'Sobreescribimos archivo IdPersonal.txt con ID Starter.devModel = et_id.Text.Trim If Starter.logger Then Log("Tenemos ID: "& et_id.Text.Trim & " "&File.DirInternal&"/phnId.txt sobreescrito") Else If et_id.Text.Length < 3 Then ' Si no tenemos valor, lo leemos de IdPersonal.txt Dim s As String = File.ReadString(File.DirInternal, "phnId.txt") Starter.devModel = s If Starter.logger Then Log("Leemos id de "&File.DirInternal&"/phnId.txt") et_id.Text = Starter.devModel.Trim If Starter.logger Then Log(Starter.devModel.Trim) End If If laUbicacion.IsInitialized Then Subs.mandaLocAServer(Starter.devModel.Trim) End Sub Sub ponCoords l_coords.left = (Root.Width/2) - (l_coords.Width/2) l_coords.Text = $"${Starter.UUC.Latitude},${Starter.UUC.Longitude}"$ End Sub 'Revisa si la aplicación tiene permiso para acceder a las notificaciones. Sub CheckNotificationAccess As Boolean Dim ph As Phone 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 Sub actualizaLabelUU l_lastUpdate.Text = Subs.fechaKMT(Starter.lastLocUpdate) End Sub 'Private Sub b_flpConnect_Click ' Log("Conectamos a FLP") ' CallSubDelayed(Tracker, "flpReConnect") 'End Sub Private Sub b_exit_Click ' CallSubDelayed(Tracker, "flpReConnect") Starter.restartTracker End Sub Sub b_exit_LongClick ExitApplication End Sub