Files
FLP_3.0/B4A/B4XMainPage.bas
Jose Alberto Guerra Ugalde f512b64a2e . Commit inicial.
2024-11-07 02:41:58 -06:00

242 lines
9.0 KiB
QBasic

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=..\..\
'###########################################################################################################
'###################### 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