From 67a7928e6879c20416025b8114219b0ed7666ecb Mon Sep 17 00:00:00 2001 From: cvaldes1201 Date: Tue, 26 Sep 2023 18:02:41 -0600 Subject: [PATCH] 26-09-23 cambios en fallos --- B4A/C_UpdateAvailable.bas | 74 ++++++ B4A/C_principal.bas | 15 +- B4A/CameraExClass2.bas | 399 +++++++++++++++++++++++++++++ B4A/DBRequestManager.bas | 272 ++++++++++++++++++++ B4A/Files/alert2.png | Bin 0 -> 632 bytes B4A/Files/candado.png | Bin 0 -> 17760 bytes B4A/Files/cuenta.bal | Bin 0 -> 3290 bytes B4A/Files/datos-varios.png | Bin 0 -> 2112 bytes B4A/Files/datos.bal | Bin 0 -> 18199 bytes B4A/Files/engranes.png | Bin 0 -> 2735 bytes B4A/Files/financiero.bal | Bin 0 -> 12838 bytes B4A/Files/fondo-vino.jpg | Bin 0 -> 17168 bytes B4A/Files/fondo.png | Bin 0 -> 86882 bytes B4A/Files/fondoblanco.png | Bin 0 -> 20816 bytes B4A/Files/gestionadas.bal | Bin 0 -> 4973 bytes B4A/Files/icon_22-[convertido].png | Bin 0 -> 1131 bytes B4A/Files/imglogo_cl_ar.png | Bin 0 -> 11473 bytes B4A/Files/kmt.db | Bin 0 -> 16384 bytes B4A/Files/lupa.png | Bin 0 -> 1872 bytes B4A/Files/principal.bal | Bin 0 -> 9773 bytes B4A/Files/scroll.bal | Bin 9695 -> 9674 bytes B4A/Files/t_a.jpg | Bin 0 -> 3980 bytes B4A/Files/usuario.png | Bin 0 -> 17227 bytes B4A/NUEVO_TORRADO.b4a.meta | 2 +- B4A/Starter.bas | 2 +- B4A/Tracker.bas | 218 ++++++++++++++++ B4A/appUpdater.bas | 282 ++++++++++++++++++++ B4A/c_datos.bas | 32 ++- B4XMainPage.bas | 2 +- 29 files changed, 1278 insertions(+), 20 deletions(-) create mode 100644 B4A/C_UpdateAvailable.bas create mode 100644 B4A/CameraExClass2.bas create mode 100644 B4A/DBRequestManager.bas create mode 100644 B4A/Files/alert2.png create mode 100644 B4A/Files/candado.png create mode 100644 B4A/Files/cuenta.bal create mode 100644 B4A/Files/datos-varios.png create mode 100644 B4A/Files/datos.bal create mode 100644 B4A/Files/engranes.png create mode 100644 B4A/Files/financiero.bal create mode 100644 B4A/Files/fondo-vino.jpg create mode 100644 B4A/Files/fondo.png create mode 100644 B4A/Files/fondoblanco.png create mode 100644 B4A/Files/gestionadas.bal create mode 100644 B4A/Files/icon_22-[convertido].png create mode 100644 B4A/Files/imglogo_cl_ar.png create mode 100644 B4A/Files/kmt.db create mode 100644 B4A/Files/lupa.png create mode 100644 B4A/Files/principal.bal create mode 100644 B4A/Files/t_a.jpg create mode 100644 B4A/Files/usuario.png create mode 100644 B4A/Tracker.bas create mode 100644 B4A/appUpdater.bas diff --git a/B4A/C_UpdateAvailable.bas b/B4A/C_UpdateAvailable.bas new file mode 100644 index 0000000..122de2b --- /dev/null +++ b/B4A/C_UpdateAvailable.bas @@ -0,0 +1,74 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=12.2 +@EndOfDesignText@ +Sub Class_Globals + Private Root As B4XView 'ignore + Private xui As XUI 'ignore +End Sub + +'You can add more parameters here. +Public Sub Initialize As Object + Return Me +End Sub + +'This event will be called once, before the page becomes visible. +Private Sub B4XPage_Created (Root1 As B4XView) + Root = Root1 + 'load the layout to Root + Root.Color = Colors.Transparent +End Sub + +Sub B4XPage_Appear + Try + Do While Not(CanRequestPackageInstalls) + MsgboxAsync($"Por favor permita que ${Application.PackageName} instale actualizaciones"$, "Instalar actualización") + Wait For Msgbox_Result(Result As Int) + Dim in As Intent + in.Initialize("android.settings.", "package:" & Application.PackageName) + StartActivity(in) + Loop + Catch + Log("updateAvailable() Error - " & LastException.Message) + End Try + If appUpdater.newApp.update Then + ofreceActualizacion + Else + sinActualizacion + End If +End Sub + +'//////////////////////////////////////////////////////////////////////////////////////////// +'//// Esta es una actividad usada por el servicio appUpdater para mostrar notificaciones +'//// cuando hay alguna actualizacion de apk. +'//////////////////////////////////////////////////////////////////////////////////////////// + + +public Sub CanRequestPackageInstalls As Boolean + ' // https://www.b4x.com/android/forum/threads/version-safe-apk-installation.87667/#content + Dim ctxt As JavaObject + ctxt.InitializeContext + Dim PackageManager As JavaObject = ctxt.RunMethod("getPackageManager", Null) + Return PackageManager.RunMethod("canRequestPackageInstalls", Null) +End Sub + +Sub ofreceActualizacion + If Msgbox2(appUpdater.newApp.newMsg,"Actualización disponible","Si","","No",Null) = DialogResponse.Positive Then 'ignore +' StartService(DownloadService) + CallSubDelayed(appUpdater, "download_newApk") +' ToastMessageShow("Descargando actualización", True) + End If + B4XPages.MainPage.ocultaProgreso + StartActivity(Main) +' Activity.Finish + B4XPages.ShowPage("Mainpage") +End Sub + +Sub sinActualizacion + Msgbox(appUpdater.newApp.okMsg, "Aplicación al corriente") 'ignore +' StartActivity(Main) + B4XPages.MainPage.ocultaProgreso + B4XPages.ShowPage("Mainpage") +End Sub \ No newline at end of file diff --git a/B4A/C_principal.bas b/B4A/C_principal.bas index c4b1fe0..c9dc90d 100644 --- a/B4A/C_principal.bas +++ b/B4A/C_principal.bas @@ -56,6 +56,7 @@ Private Sub B4XPage_Created (Root1 As B4XView) Starter.skmt.ExecNonQuery("delete from TIPO_VIVIENDA") Starter.skmt.ExecNonQuery("delete from NIVEL_SOCIO") Starter.skmt.ExecNonQuery("delete from CARACTERISTICAS") + Starter.skmt.ExecNonQuery("delete from CAT_RESULTADO_DA") Starter.skmt.ExecNonQuery2("INSERT INTO TIPO_VIVIENDA(TIPO, NUMERO) VALUES(?,?)", Array As Object ("Selecciona una opción","0")) Starter.skmt.ExecNonQuery2("INSERT INTO TIPO_VIVIENDA(TIPO, NUMERO) VALUES(?,?)", Array As Object ("DEPTO","1")) @@ -74,7 +75,7 @@ Private Sub B4XPage_Created (Root1 As B4XView) Starter.skmt.ExecNonQuery2("INSERT INTO CARACTERISTICAS(TIPO, NUMERO) VALUES(?,?)", Array As Object ("PROPIA","1")) Starter.skmt.ExecNonQuery2("INSERT INTO CARACTERISTICAS(TIPO, NUMERO) VALUES(?,?)", Array As Object ("RENTADA","2")) Starter.skmt.ExecNonQuery2("INSERT INTO CARACTERISTICAS(TIPO, NUMERO) VALUES(?,?)", Array As Object ("OTRO","3")) - Starter.skmt.ExecNonQuery2("INSERT INTO CAT_RESULTADO_DA(CAT_CO_ACCION, CO_RESULTADO, CO_RDESCRIPCION, NUMERO, NUME) VALUES (?,?,?,?,?)", Array As Object("DE", "SO", "SELECCIONA UNA OPCION",0,1)) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_RESULTADO_DA(CAT_CO_ACCION, CO_RESULTADO, CO_RDESCRIPCION, NUMERO, NUME) VALUES (?,?,?,?,?)", Array As Object("DE", "SO", "Selecciona una opción",0,1)) Starter.skmt.ExecNonQuery2("INSERT INTO CAT_RESULTADO_DA(CAT_CO_ACCION, CO_RESULTADO, CO_RDESCRIPCION, NUMERO, NUME) VALUES (?,?,?,?,?)", Array As Object("DE", "DE", "DESHABITADA / ABANDONADA",1,2)) End Sub @@ -236,7 +237,7 @@ Sub CreateListItem(cred As String, nom As String, call As String, status As Stri Dim p As B4XView = xui.CreatePanel("") ' p.SetLayoutAnimated(0, 0, 0, 1, 115) p.LoadLayout("cuenta") - p.Height= 112dip + p.Height= 140dip ' p.Width = clv_orden.GetBase.Width l_credito.Text = cred l_estatus.Text = status @@ -550,21 +551,23 @@ Private Sub et_busqueda_TextChanged (Old As String, New As String) Dim BUSCA As String BUSCA = "%" & et_busqueda.Text & "%" If et_busqueda.Text.Length = 0 Then - c = Starter.skmt.ExecQuery("SELECT CREDITO, NOMBRE, CALLE, N_EXT, N_INT, ALCALDIA, ESTATUS FROM HIST_DATOS_GENERALES WHERE ESTATUS2 <> 2 order by 1") + + c = Starter.skmt.ExecQuery("SELECT CREDITO, NOMBRE, CALLE, COLONIA, CIUDAD, ESTADO, CP, ESTATUS FROM HIST_DATOS_GENERALES WHERE ESTATUS2 <> 2 order by 1") clv_cuentas.Clear For i = 0 To c.RowCount - 1 c.Position = i - clv_cuentas.Add(CreateListItem(c.GetString("CREDITO"), c.GetString("NOMBRE"), ("CALLE: " & c.GetString("CALLE") &" NO. EXT: "& c.GetString("N_EXT") & CRLF & "No. INT: "& c.GetString("N_INT") &" COL.: "&c.GetString("ALCALDIA")), c.GetString("ESTATUS")),i) + clv_cuentas.Add(CreateListItem(c.GetString("CREDITO"), c.GetString("NOMBRE"), ("CALLE: " & c.GetString("CALLE") &" COL: "& c.GetString("COLONIA") & CRLF & "CIUDAD: "& c.GetString("CIUDAD") &" ESTADO: "&c.GetString("ESTADO") & "C.P.: " & c.GetString("CP")), c.GetString("ESTATUS")),i) Next c.Close + Else If et_busqueda.Text.Length > 0 Then - c = Starter.skmt.ExecQuery2("SELECT CREDITO, NOMBRE, CALLE, N_EXT, N_INT, ALCALDIA, ESTATUS FROM HIST_DATOS_GENERALES WHERE NOMBRE LIKE ? OR CREDITO LIKE ? ",Array As String(BUSCA, BUSCA)) + c = Starter.skmt.ExecQuery2("SELECT CREDITO, NOMBRE, CALLE, COLONIA, CIUDAD, ESTADO, CP, ESTATUS FROM HIST_DATOS_GENERALES WHERE NOMBRE LIKE ? OR CREDITO LIKE ? ",Array As String(BUSCA, BUSCA)) clv_cuentas.Clear For i = 0 To c.RowCount - 1 c.Position = i - clv_cuentas.Add(CreateListItem(c.GetString("CREDITO"), c.GetString("NOMBRE"), ("CALLE: " & c.GetString("CALLE") &" NO. EXT: "& c.GetString("N_EXT") & CRLF & "No. INT: "& c.GetString("N_INT") &" COL.: "&c.GetString("ALCALDIA")), c.GetString("ESTATUS")),i) + clv_cuentas.Add(CreateListItem(c.GetString("CREDITO"), c.GetString("NOMBRE"), ("CALLE: " & c.GetString("CALLE") &" COL: "& c.GetString("COLONIA") & CRLF & "CIUDAD: "& c.GetString("CIUDAD") &" ESTADO: "&c.GetString("ESTADO") & "C.P.: " & c.GetString("CP")), c.GetString("ESTATUS")),i) Next c.Close End If diff --git a/B4A/CameraExClass2.bas b/B4A/CameraExClass2.bas new file mode 100644 index 0000000..bc84bf4 --- /dev/null +++ b/B4A/CameraExClass2.bas @@ -0,0 +1,399 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=6 +@EndOfDesignText@ +'Class module +'version 1.30 +'See this page for the list of constants: +'http://developer.android.com/intl/fr/reference/android/hardware/Camera.Parameters.html +'Note that you should use the constant values instead of the names. +Sub Class_Globals + Private nativeCam As Object + Private cam As Camera + Private r As Reflector + Private target As Object + Private event As String + Public Front As Boolean + Private parameters As Object +End Sub + +Public Sub Initialize (Panel1 As Panel, FrontCamera As Boolean, TargetModule As Object, EventName As String) + target = TargetModule + event = EventName + Front = FrontCamera + Dim id As Int + id = FindCamera(Front).id + If id = -1 Then + Front = Not(Front) 'try different camera + id = FindCamera(Front).id + If id = -1 Then + ToastMessageShow("No camera found.", True) + Return + End If + End If + cam.Initialize2(Panel1, "camera", id) +End Sub + +Private Sub FindCamera (frontCamera As Boolean) As CameraInfoAndId + Dim ci As CameraInfoAndId + Dim cameraInfo As Object + Dim cameraValue As Int + Log("findCamera") + If frontCamera Then cameraValue = 1 Else cameraValue = 0 + cameraInfo = r.CreateObject("android.hardware.Camera$CameraInfo") + Dim numberOfCameras As Int = r.RunStaticMethod("android.hardware.Camera", "getNumberOfCameras", Null, Null) + Log(r.target) + Log(numberOfCameras) + For i = 0 To numberOfCameras - 1 + r.RunStaticMethod("android.hardware.Camera", "getCameraInfo", Array As Object(i, cameraInfo), _ + Array As String("java.lang.int", "android.hardware.Camera$CameraInfo")) + r.target = cameraInfo + Log("facing: " & r.GetField("facing") & ", " & cameraValue) + If r.GetField("facing") = cameraValue Then + ci.cameraInfo = r.target + ci.Id = i + Return ci + End If + Next + ci.id = -1 + Return ci +End Sub + +Private Sub SetDisplayOrientation + r.target = r.GetActivity + r.target = r.RunMethod("getWindowManager") + r.target = r.RunMethod("getDefaultDisplay") + r.target = r.RunMethod("getRotation") + Dim previewResult, result, degrees As Int = r.target * 90 + Dim ci As CameraInfoAndId = FindCamera(Front) + r.target = ci.CameraInfo + Dim orientation As Int = r.GetField("orientation") + If Front Then + previewResult = (orientation + degrees) Mod 360 + result = previewResult + previewResult = (360 - previewResult) Mod 360 + Else + previewResult = (orientation - degrees + 360) Mod 360 + result = previewResult + Log(previewResult) + End If + r.target = nativeCam + r.RunMethod2("setDisplayOrientation", previewResult, "java.lang.int") + r.target = parameters + r.RunMethod2("setRotation", result, "java.lang.int") + CommitParameters +End Sub + +Private Sub Camera_Ready (Success As Boolean) + If Success Then + r.target = cam + nativeCam = r.GetField("camera") + r.target = nativeCam + parameters = r.RunMethod("getParameters") + SetDisplayOrientation + Else + Log("success = false, " & LastException) + End If + CallSub2(target, event & "_ready", Success) +End Sub +'Uncomment this sub if you need to handle the Preview event +'Sub Camera_Preview (Data() As Byte) +' If SubExists(target, event & "_preview") Then +' CallSub2(target, event & "_preview", Data) +' End If +'End Sub + +Public Sub TakePicture + cam.TakePicture +End Sub + +Private Sub Camera_PictureTaken (Data() As Byte) + CallSub2(target, event & "_PictureTaken", Data) +End Sub + +Public Sub StartPreview + cam.StartPreview +End Sub + +Public Sub StopPreview + cam.StopPreview +End Sub + +Public Sub Release + cam.Release +End Sub + +'Saves the data received from PictureTaken event +Public Sub SavePictureToFile(Data() As Byte, Dir As String, FileName As String) + Dim out As OutputStream = File.OpenOutput(Dir, FileName, False) + out.WriteBytes(Data, 0, Data.Length) + out.Close +End Sub + +Public Sub SetParameter(Key As String, Value As String) + r.target = parameters + r.RunMethod3("set", Key, "java.lang.String", Value, "java.lang.String") +End Sub + +Public Sub GetParameter(Key As String) As String + r.target = parameters + Return r.RunMethod2("get", Key, "java.lang.String") +End Sub + +Public Sub CommitParameters + 'Try + r.target = nativeCam + r.RunMethod4("setParameters", Array As Object(parameters), Array As String("android.hardware.Camera$Parameters")) + 'Catch +' ToastMessageShow("Error setting parameters.", True) +' Log(LastException) +' End Try +End Sub + +Public Sub GetColorEffect As String + Return GetParameter("effect") +End Sub + +Public Sub SetColorEffect(Effect As String) + SetParameter("effect", Effect) +End Sub + +Public Sub GetSupportedPreviewSizes As CameraSize() + r.target = parameters + Dim list1 As List = r.RunMethod("getSupportedPreviewSizes") + Dim cs(list1.Size) As CameraSize + For i = 0 To list1.Size - 1 + r.target = list1.get(i) + cs(i).Width = r.GetField("width") + cs(i).Height = r.GetField("height") + Next + Return cs +End Sub + +Public Sub SetPreviewSize(Width As Int, Height As Int) + r.target = parameters + r.RunMethod3("setPreviewSize", Width, "java.lang.int", Height, "java.lang.int") +End Sub +Public Sub GetSupportedPicturesSizes As CameraSize() + r.target = parameters + Dim list1 As List = r.RunMethod("getSupportedPictureSizes") + Dim cs(list1.Size) As CameraSize + For i = 0 To list1.Size - 1 + r.target = list1.get(i) + cs(i).Width = r.GetField("width") + cs(i).Height = r.GetField("height") + Next + Return cs +End Sub + +Public Sub SetPictureSize(Width As Int, Height As Int) + r.target = parameters + r.RunMethod3("setPictureSize", Width, "java.lang.int", Height, "java.lang.int") +End Sub + +Public Sub SetJpegQuality(Quality As Int) + r.target = parameters + r.RunMethod2("setJpegQuality", Quality, "java.lang.int") +End Sub + +Public Sub SetFlashMode(Mode As String) + r.target = parameters + r.RunMethod2("setFlashMode", Mode, "java.lang.String") +End Sub + +Public Sub GetFlashMode As String + r.target = parameters + Return r.RunMethod("getFlashMode") +End Sub + +Public Sub GetSupportedFlashModes As List + r.target = parameters + Return r.RunMethod("getSupportedFlashModes") +End Sub + +Public Sub GetSupportedColorEffects As List + r.target = parameters + Return r.RunMethod("getSupportedColorEffects") +End Sub + +'Returns a list with the supported preview fps. Each item in the list is an array of two ints (minimum value and maximum value). +Public Sub GetSupportedPreviewFpsRange As List + r.target = parameters + Return r.RunMethod("getSupportedPreviewFpsRange") +End Sub +'Returns the current preview fps range. +'Range is a two elements array. The minimum value and maximum value will be stored in this array. +Public Sub GetPreviewFpsRange(Range() As Int) + r.target = parameters + r.RunMethod4("getPreviewFpsRange", Array As Object(Range), Array As String("[I")) +End Sub + +Public Sub SetPreviewFpsRange(MinValue As Int, MaxValue As Int) + r.target = parameters + r.RunMethod4("setPreviewFpsRange", Array As Object(MinValue, MaxValue), _ + Array As String("java.lang.int", "java.lang.int")) +End Sub + +Public Sub GetPreviewSize As CameraSize + r.target = parameters + r.target = r.RunMethod("getPreviewSize") + Dim cs As CameraSize + cs.Width = r.GetField("width") + cs.Height = r.GetField("height") + Return cs +End Sub + +Public Sub GetPictureSize As CameraSize + r.target = parameters + r.target = r.RunMethod("getPictureSize") + Dim cs As CameraSize + cs.Width = r.GetField("width") + cs.Height = r.GetField("height") + Return cs +End Sub + +'Converts a preview image formatted in YUV format to JPEG. +'Note that you should not save every preview image as it will slow down the whole process. +Public Sub PreviewImageToJpeg(data() As Byte, quality As Int) As Byte() + Dim size, previewFormat As Object + r.target = parameters + size = r.RunMethod("getPreviewSize") + previewFormat = r.RunMethod("getPreviewFormat") + r.target = size + Dim width = r.GetField("width"), height = r.GetField("height") As Int + Dim yuvImage As Object = r.CreateObject2("android.graphics.YuvImage", _ + Array As Object(data, previewFormat, width, height, Null), _ + Array As String("[B", "java.lang.int", "java.lang.int", "java.lang.int", "[I")) + r.target = yuvImage + Dim rect1 As Rect + rect1.Initialize(0, 0, r.RunMethod("getWidth"), r.RunMethod("getHeight")) + Dim out As OutputStream + out.InitializeToBytesArray(100) + r.RunMethod4("compressToJpeg", Array As Object(rect1, quality, out), _ + Array As String("android.graphics.Rect", "java.lang.int", "java.io.OutputStream")) + Return out.ToBytesArray +End Sub + +Public Sub GetSupportedFocusModes As List + r.target = parameters + Return r.RunMethod("getSupportedFocusModes") +End Sub + +Public Sub SetContinuousAutoFocus + Dim modes As List = GetSupportedFocusModes + If modes.IndexOf("continuous-picture") > -1 Then + SetFocusMode("continuous-picture") + Else If modes.IndexOf("continuous-video") > -1 Then + SetFocusMode("continuous-video") + Else + Log("Continuous focus mode is not available") + End If +End Sub + +Public Sub SetFocusMode(Mode As String) + r.target = parameters + r.RunMethod2("setFocusMode", Mode, "java.lang.String") +End Sub + +Public Sub GetFocusDistances As Float() + Dim F(3) As Float + r.target = parameters + r.RunMethod4("getFocusDistances", Array As Object(F), Array As String("[F")) + Return F +End Sub + +Public Sub GetSupportedPictureFormats As List + r.target = parameters + Return r.RunMethod("getSupportedPictureFormats") +End Sub +'This method should only be called if you need to immediately release the camera. +'For example if you need to start another application that depends on the camera. +Public Sub CloseNow + cam.Release + r.target = cam + r.RunMethod2("releaseCameras", True, "java.lang.boolean") +End Sub +'Calls AutoFocus and then takes the picture if focus was successfull. +Public Sub FocusAndTakePicture + cam.AutoFocus +End Sub + + +Private Sub Camera_FocusDone (Success As Boolean) + If Success Then + TakePicture + Else + Log("AutoFocus error.") + End If +End Sub + +Public Sub IsZoomSupported As Boolean + r.target = parameters + Return r.RunMethod("isZoomSupported") +End Sub + +Public Sub GetMaxZoom As Int + r.target = parameters + Return r.RunMethod("getMaxZoom") +End Sub + +Public Sub getZoom() As Int + r.target = parameters + Return r.RunMethod("getZoom") +End Sub + +Public Sub setZoom(ZoomValue As Int) + r.target = parameters + r.RunMethod2("setZoom", ZoomValue, "java.lang.int") +End Sub + +Public Sub getExposureCompensation As Int + r.target = parameters + Return r.RunMethod("getExposureCompensation") +End Sub + +Public Sub setExposureCompensation(v As Int) + r.target = parameters + r.RunMethod2("setExposureCompensation", v, "java.lang.int") +End Sub + +Public Sub getMinExposureCompensation As Int + r.target = parameters + Return r.RunMethod("getMinExposureCompensation") +End Sub + +Public Sub getMaxExposureCompensation As Int + r.target = parameters + Return r.RunMethod("getMaxExposureCompensation") +End Sub + +Public Sub SetFaceDetectionListener + Dim jo As JavaObject = nativeCam + Dim e As Object = jo.CreateEvent("android.hardware.Camera.FaceDetectionListener", "FaceDetection", Null) + jo.RunMethod("setFaceDetectionListener", Array(e)) +End Sub + +Private Sub FaceDetection_Event (MethodName As String, Args() As Object) As Object + Dim faces() As Object = Args(0) + For Each f As Object In faces + Dim jo As JavaObject = f + Dim faceRect As Rect = jo.GetField("rect") + Log(faceRect) + Next + Return Null +End Sub + + + +Public Sub StartFaceDetection + Dim jo As JavaObject = nativeCam + jo.RunMethod("startFaceDetection", Null) +End Sub + +Public Sub StopFaceDetection + Dim jo As JavaObject = nativeCam + jo.RunMethod("stopFaceDetection", Null) +End Sub + diff --git a/B4A/DBRequestManager.bas b/B4A/DBRequestManager.bas new file mode 100644 index 0000000..31298ba --- /dev/null +++ b/B4A/DBRequestManager.bas @@ -0,0 +1,272 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=6.8 +@EndOfDesignText@ +''Class module + +'' Requiere accesRandom File y requiere compressStrings, byte converter y okhhtputuils2 +Sub Class_Globals + Private mTarget As Object + Type DBResult (Tag As Object, Columns As Map, Rows As List) + Type DBCommand (Name As String, Parameters() As Object) + Private link As String + Private bc As ByteConverter + Private T_NULL = 0, T_STRING = 1, T_SHORT = 2, T_INT = 3, T_LONG = 4, T_FLOAT = 5 _ + ,T_DOUBLE = 6, T_BOOLEAN = 7, T_BLOB = 8 As Byte + Private VERSION As Float = 0.9 + Private tempArray(1) As Object + Dim jobTagAnterior As String = "" 'Mod por CHV - 211109 +End Sub + +'Target - The module that handles JobDone (usually Me). +'ConnectorLink - URL of the Java server. +Public Sub Initialize (Target As Object, ConnectorLink As String) + mTarget = Target + link = ConnectorLink +End Sub + +'Sends a query request. +'Command - Query name and parameters. +'Limit - Maximum rows to return or 0 for no limit. +'Tag - An object that will be returned in the result. +Public Sub ExecuteQuery(Command As DBCommand, Limit As Int, Tag As Object) + Dim j As HttpJob + Dim ms As OutputStream + Dim out2 As OutputStream = StartJob(j,ms, Tag) + + WriteObject(Command.Name, out2) + WriteInt(Limit, out2) + WriteList(Command.Parameters, out2) + out2.Close + j.PostBytes(link & "?method=query", ms.ToBytesArray) +End Sub + +'Executes a batch of (non-select) commands. +'ListOfCommands - List of the commands that will be executes. +'Tag - An object that will be returned in the result. +Public Sub ExecuteBatch(ListOfCommands As List, Tag As Object) + Dim j As HttpJob + Dim ms As OutputStream + Dim out2 As OutputStream = StartJob(j,ms, Tag) + WriteInt(ListOfCommands.Size, out2) + For Each Command As DBCommand In ListOfCommands + WriteObject(Command.Name, out2) + WriteList(Command.Parameters, out2) + Next + out2.Close + j.PostBytes(link & "?method=batch", ms.ToBytesArray) +End Sub + +'Similar to ExecuteBatch. Sends a single command. +Public Sub ExecuteCommand(Command As DBCommand, Tag As Object) + ExecuteBatch(Array As DBCommand(Command), Tag) +End Sub + +Private Sub StartJob(j As HttpJob, MemoryStream As OutputStream, Tag As Object) As OutputStream + j.Initialize("DBRequest", mTarget) + j.Tag = Tag + MemoryStream.InitializeToBytesArray(0) + Dim compress As CompressedStreams + Dim out As OutputStream = compress.WrapOutputStream(MemoryStream, "gzip") + WriteObject(VERSION, out) + Return out +End Sub + +Private Sub WriteList(Parameters As List, out As OutputStream) + Dim data() As Byte + If Parameters = Null Or Parameters.IsInitialized = False Then + Dim Parameters As List + Parameters.Initialize + End If + data = bc.IntsToBytes(Array As Int(Parameters.Size)) + out.WriteBytes(data, 0, data.Length) + For Each o As Object In Parameters + WriteObject(o, out) + Next +End Sub + +Private Sub WriteObject(o As Object, out As OutputStream) + Dim data() As Byte + tempArray(0) = o + If tempArray(0) = Null Then + out.WriteBytes(Array As Byte(T_NULL), 0, 1) + Else If tempArray(0) Is Short Then + out.WriteBytes(Array As Byte(T_SHORT), 0, 1) + data = bc.ShortsToBytes(Array As Short(o)) + Else If tempArray(0) Is Int Then + out.WriteBytes(Array As Byte(T_INT), 0, 1) + data = bc.IntsToBytes(Array As Int(o)) + Else If tempArray(0) Is Float Then + out.WriteBytes(Array As Byte(T_FLOAT), 0, 1) + data = bc.FloatsToBytes(Array As Float(o)) + Else If tempArray(0) Is Double Then + out.WriteBytes(Array As Byte(T_DOUBLE), 0, 1) + data = bc.DoublesToBytes(Array As Double(o)) + Else If tempArray(0) Is Long Then + out.WriteBytes(Array As Byte(T_LONG), 0, 1) + data = bc.LongsToBytes(Array As Long(o)) + Else If tempArray(0) Is Boolean Then + out.WriteBytes(Array As Byte(T_BOOLEAN), 0, 1) + Dim b As Boolean = 0 + Dim data(1) As Byte + If b Then data(0) = 1 Else data(0) = 0 + Else If GetType(tempArray(0)) = "[B" Then + data = o + out.WriteBytes(Array As Byte(T_BLOB), 0, 1) + WriteInt(data.Length, out) + Else 'If o Is String Then (treat all other values as string) + out.WriteBytes(Array As Byte(T_STRING), 0, 1) + data = bc.StringToBytes(o, "UTF8") + WriteInt(data.Length, out) + End If + If data.Length > 0 Then out.WriteBytes(data, 0, data.Length) +End Sub + +Private Sub ReadObject(In As InputStream) As Object + Dim data(1) As Byte + In.ReadBytes(data, 0, 1) + Select data(0) + Case T_NULL + Return Null + Case T_SHORT + Dim data(2) As Byte + Return bc.ShortsFromBytes(ReadBytesFully(In, data, data.Length))(0) + Case T_INT + Dim data(4) As Byte + Return bc.IntsFromBytes(ReadBytesFully(In, data, data.Length))(0) + Case T_LONG + Dim data(8) As Byte + Return bc.LongsFromBytes(ReadBytesFully(In, data, data.Length))(0) + Case T_FLOAT + Dim data(4) As Byte + Return bc.FloatsFromBytes(ReadBytesFully(In, data, data.Length))(0) + Case T_DOUBLE + Dim data(8) As Byte + Return bc.DoublesFromBytes(ReadBytesFully(In, data, data.Length))(0) + Case T_BOOLEAN + Dim b As Byte = ReadByte(In) + Return b = 1 + Case T_BLOB + Dim len As Int = ReadInt(In) + Dim data(len) As Byte + Return ReadBytesFully(In, data, data.Length) + Case Else + Dim len As Int = ReadInt(In) + Dim data(len) As Byte + ReadBytesFully(In, data, data.Length) + Return BytesToString(data, 0, data.Length, "UTF8") + End Select +End Sub + +Private Sub ReadBytesFully(In As InputStream, Data() As Byte, Len As Int) As Byte() + Dim count = 0, read As Int + Do While count < Len And read > -1 + read = In.ReadBytes(Data, count, Len - count) + count = count + read + Loop + Return Data +End Sub + +Private Sub WriteInt(i As Int, out As OutputStream) + Dim data() As Byte + data = bc.IntsToBytes(Array As Int(i)) + out.WriteBytes(data, 0, data.Length) +End Sub + +Private Sub ReadInt(In As InputStream) As Int + Dim data(4) As Byte + Return bc.IntsFromBytes(ReadBytesFully(In, data, data.Length))(0) +End Sub + +Private Sub ReadByte(In As InputStream) As Byte + Dim data(1) As Byte + In.ReadBytes(data, 0, 1) + Return data(0) +End Sub + +'Handles the Job result and returns a DBResult. +Public Sub HandleJob(Job As HttpJob) As DBResult + Dim start As Long = DateTime.Now 'ignore + Dim In As InputStream = Job.GetInputStream + Dim cs As CompressedStreams + In = cs.WrapInputStream(In, "gzip") + Dim serverVersion As Float = ReadObject(In) 'ignore + Dim method As String = ReadObject(In) + Dim table As DBResult + table.Initialize + table.Columns.Initialize + table.rows.Initialize + table.Tag = Job.Tag + If jobTagAnterior <> Job.Tag Then LogColor("HandleJob: '"&Job.Tag&"'", Colors.Blue) 'Mod por CHV - 211109 + jobTagAnterior = Job.Tag 'Mod por CHV - 211109 + If method = "query" Then + Dim numberOfColumns As Int = ReadInt(In) + For i = 0 To numberOfColumns - 1 + table.Columns.Put(ReadObject(In), i) + Next + Do While ReadByte(In) = 1 + Dim rowObjects(numberOfColumns) As Object + table.rows.Add(rowObjects) + For col = 0 To numberOfColumns - 1 + Dim o As Object = ReadObject(In) + rowObjects(col) = o + Next + Loop + Else If method = "batch" Then + table.Columns.Put("AffectedRows", 0) + Dim rows As Int = ReadInt(In) + For i = 0 To rows - 1 + table.rows.Add(Array As Object(ReadInt(In))) + Next + End If + In.Close +' Log("HandleJob: " & (DateTime.Now - start))'Comentado por CHV - 211112 + Return table +End Sub +'Reads a file and returns the file as a bytes array. +Public Sub FileToBytes(Dir As String, FileName As String) As Byte() + Dim out As OutputStream + out.InitializeToBytesArray(0) + Dim In As InputStream = File.OpenInput(Dir, FileName) + File.Copy2(In, out) + out.Close + Return out.ToBytesArray +End Sub +'Converts an image to a bytes array (for BLOB fields). +Public Sub ImageToBytes(Image As Bitmap) As Byte() + Dim out As OutputStream + out.InitializeToBytesArray(0) + Image.WriteToStream(out, 100, "JPEG") + out.Close + Return out.ToBytesArray +End Sub +'Converts a bytes array to an image (for BLOB fields). +Public Sub BytesToImage(bytes() As Byte) As Bitmap + Dim In As InputStream + In.InitializeFromBytesArray(bytes, 0, bytes.Length) + Dim bmp As Bitmap + bmp.Initialize2(In) + Return bmp +End Sub +'Prints the table to the logs. +Public Sub PrintTable(Table As DBResult) + Log("Tag: " & Table.Tag & ", Columns: " & Table.Columns.Size & ", Rows: " & Table.Rows.Size) + Dim sb As StringBuilder + sb.Initialize + For Each col In Table.Columns.Keys + sb.Append(col).Append(TAB) + Next + Log(sb.ToString) + For Each row() As Object In Table.Rows + Dim sb As StringBuilder + sb.Initialize + For Each record As Object In row + sb.Append(record).Append(TAB) + Next + ToastMessageShow(sb.ToString, True) + Next +End Sub + + \ No newline at end of file diff --git a/B4A/Files/alert2.png b/B4A/Files/alert2.png new file mode 100644 index 0000000000000000000000000000000000000000..44d3b7e651884f30ca0811371860a2c872077175 GIT binary patch literal 632 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 AE&u=k literal 0 HcmV?d00001 diff --git a/B4A/Files/cuenta.bal b/B4A/Files/cuenta.bal new file mode 100644 index 0000000000000000000000000000000000000000..aec6c654a5e9f37dbcfb933a7d3404703132bb61 GIT binary patch literal 3290 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 literal 0 HcmV?d00001 diff --git a/B4A/Files/datos.bal b/B4A/Files/datos.bal new file mode 100644 index 0000000000000000000000000000000000000000..932244c7634db8097202f26070d2b9610a97c7b6 GIT binary patch literal 18199 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 UfO#2&+KrNgVHMFN$P0!32eO2QvH$=8 literal 0 HcmV?d00001 diff --git a/B4A/Files/engranes.png b/B4A/Files/engranes.png new file mode 100644 index 0000000000000000000000000000000000000000..868a8793df757a14fc5428d378b2f7bc1a555ba6 GIT binary patch literal 2735 zcmZuzc~nx{8rKRfZobmMY`Eo+CJ5KE%&VCtiUUUt4hIG5Uely5g)VeBZW@#B+>tT1j_1+(Eul4QyO>3{c)^Gp5?>kBLao0ny zL~Chj>3Mp%f?8VIh(?YsoUid1(?YT}$BJk&GnyW@FFGzDlB4Au6c)%a_6!Nw&jC3B zK?xD}IgXkn9jX^Z{{CYz4owGZJoBPKANqH#H#as=w6xG0Jzbrl_@1%8U9qpXEM7p} z^F8meyHBLWWc&+*Ye(lXzf~?szIl-DO;%5&)t!hh3odOhZF*Aq{kD2CI06XBaVnYZ zcthmJs!OLPQ zN=lOUOtd}F2_&ia^BoA7HDxWrWh-rjkipKzmPRJ8L?kh0&o-VLo+zGD>VE`sMvJ7k}VW7E+9i!%7${dB.=fr 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

jP2)N)6KHhWFOj2=TbpMk&wn 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 UC3rlMe*^d^E2zQ0$h~^^f0@=l<^TWy literal 0 HcmV?d00001 diff --git a/B4A/Files/fondoblanco.png b/B4A/Files/fondoblanco.png new file mode 100644 index 0000000000000000000000000000000000000000..2e7ce3cc1da74c137c37f6086216c8d24d1fad30 GIT binary patch literal 20816 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 literal 0 HcmV?d00001 diff --git a/B4A/Files/imglogo_cl_ar.png b/B4A/Files/imglogo_cl_ar.png new file mode 100644 index 0000000000000000000000000000000000000000..f0187681b157506c1f9a2b2ed05c90c231dcaf4c GIT binary patch literal 11473 zcmV;?EH2ZDP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!~g&e!~vBn4jTXfEM`eWK~#8N?Og|e zRMolucIwV9TY!aKdM^q{3sEen(HL9ud?ry$Vl?MFw1eBum-WJ$p`}FsH=g#cT+_?+O7Fd1r;qT7ed)htcJAXO%+&ejO0$F5n2;oZn z%_56KhAauQIONEZFpEQu&$mygOG~}HoE%HC=v4SzkuY9gkNECAh&KcgudPA6ni2{E zkqEEU1<%+c;Of~Ukvfacg3mMw;|&dn?bwOf<}HYA-Gy^yprZt+D-&KP-IEisnO|37~i`Wp?BUx__a3>dHqfE-Dtf7U0Ts)(SL-lj%M4C z@Ue&C{qjlH`7AmOIu8lijL53h2>t0V2vhsTc9v5kl0>c+k}r7~kqF|#j z&m(_x3<(3%Z-8g=kyg4aIt@Av3Bz;VN8OCu5L>y*(qJvod`g#0OOm-ty2Jg&N$^aZ z$j{y28qg0p1%<|h=eS*Pb?XiUaub=e=qxz2BxKdGiV72SG(7wWP)XD4^CeC;gJg55 zA#-|`!ZT^25%-wU@C+Z0oV)rn#NsKenIHx}MwCc{1U2;}(v*7+Wu@>= zJ__E`z5@5?Q8c$DB;S6tW)`0b91;?S7k-HPJMOlYUZ@e9C7{kR!0>(fWca@EpVqzK z9@%@ppEn$I5{5rqjJhkXMwF3ovkT5@63w$~=ur57^nLiL{ajtU8jYC6=MM*!gwZWq zQS)CHBT7>YuQzej1~w;$5v+&WFYmgm;qKQraiSHVCXI)5FPRZEp=Fu_y3>-yLBT;K zp|)0q-+l-6zj+d|6`z=`SLvoW2d=(-;5+Xex$0{q4 zPB|Gl`T6G9{t&OJL1e|Jh%8%<*t+$IN*Hx(XN}Q>in`6>buJ1X{cm``oV{(=*>Ffm zD8#F(5niB;34ccD?RViBJsNq}Uk%UraprEvKEWo(cJD!C!G{RF`yRrx=ODh5+OL68 zwn&!>XxIl`9s^KdqQCl{ zIF&``L;IU!4tkJ2Ud{Ad3~4m_?tuf~`^w1(oOcd9Lx!|?(K$5t1JwTNAw=fQx0Ya< z^ZAm{)-P6==QWOIUZ z-$(V8*I5MI*S0JLKFsg#(+mEy&qChRZ^GTXck_2+vgnj(R}#i{?ZVz0ZbtB>mz&pg z3C*RgSb5VfMD7VwXfnH6ge6IX^A@1y&U+AEw1~&{Q3i?T9yAbvZ=8+5e|{A%l5ao8 zI*U$~XUDDk-T@oxmR#R(5=D{FbWu;)<2CRza5+$z4pKL@OHbLLu3~>3NROEz>xi}-2=sVG;$vIUZX~R@{$|wt=C>va z&VT|E5p#bgT1{~xF!OuIk3-j)x5GE~h{VBkXd^@2E3cvM`4`Qe#i(2Yy@!Tc**t9* z2%!7p4%BH+`KJS*wz1DVg9adX%5m@>KGG~PHHT>V zF4X?@?+AbLDZjNB4GtVR9=EY7-lL90?lDKf-JMpcm1q|dhG<52T`&!ijhjv5(!l7} z_l1dO+g5n_3bWoPQXB}phmE8byB2}tj!nN)!lp-e?MB1=g{XP*_Xy6OYsjJ}>(a=q zOQhy3dGsL!_VwH`&3$CY4%Gkab=3a(F9?0KjK?%F66ZS-Y@?nQ%%hu;|Lv*pjTr7Y zp(E?oW6w1=py8eO(y#FlK{pS)^vk<^_dCdA-@3XMC(g7S?puh&=hlG(SNr@+lozS# z+{Q{Y3OhEZxES52!2)NVZth-0x9>!(sydM-Cq2DgG%yTa3NHOIFYsiu)|Z6H99p&l zmG?h@>PLTr(27skBP1WSZAQ8JA3H1mtEa;|WH7%tfNcxWeDD3mgQ$M|NrX3Uvep!N zO-6%vxUlc)>JVD|F@g&|gu7c;c=X7sO)Ey}-`2nJHX@rgn>@~C9X!z(MYn801Fc4s zu8&X8|8(h+Xl={DlG+A6q|~rrVPe43|HUE^C3V$lflzjZG1840Iu@6x?!naVx4-htW|UP5Hg9z(J?6+>$N%zw=zva=jj zk3C@~QvMZpc6LG<2Ue6NMN5 z5IMbi8Eco8FDVQp{9if&h2J|LuEIi-KZ*MH=VSNnccX6ZJVfdD#i#)t%b+i*^U+`k zQN1{`8NW`Xu72tnR6p}PBK1MgpgWg$Fof;V^@P^0L)Gv8h_E*O+Mug&%zG$>ZH{p; ztN;ECYF_;30c~1oGYRYG%tcr`W%xN&VkD6sM)wUL#&1oKdGQV!h@v0=5P_3UWQRML zWSYht61Lln8{sY~;gKeU)^EVBn{GkFl8-a<8R0*YFQx~jdX~aB?g#`<`wH^Eeil4^ zdNV~P!kf3C^0&W7q^8!=&^&g?g#%ju!93Kw@+xBW4Lp(#$2^Bx*mqHCL`~>$@^)(r z&?XYfKMB&0iqb!eu^DNS6Nm4J(bRrj6RA@`KO)3N*1Y#`YAb58jJ!aXZ=MZ5o%2+L zx9`CA%dbS;$0VTFlb(lV>M!VzBO`$52dgVA`K0w{>RIRY~7k@tOlDtSVA20bpmNvxe9e3%x|$aY#Rv~V1%}A zx6B^LKPeHJVutSpUp<4df-PDm)VSLBKR}Stv@~IQ-Wc422BB!`Io5j!6AJ^TQQ&N~;mhaUz{&z^8GGHxy+5AWECy)XO&kua}; z-_y!9!m?Febh=?b@3V-a@UAMkqF){}rBjDoTFxBLqf|KA<-5Ty0_jM{xXe$BagwU){&?p!L~LzqOi#^4qFke+yf#xxpevDw(Jm zi|B*(`{jLb1pTdH>6MqktJlo!yDwXX zI0L7u*Ivi=+wU>j-rfc+MRongS?K@R!{%I&B-|nrI;|5j@bdI1!O&NpH+P^q3>>HM zjvd%^*;Q!x=wq{zkOq#Cw{IWxec#dj-cL}&q^#4kq{EW z+pmwKDHdvG&qf0Yn30cd^^Y8ZT={}YGVy|H=PyL{yR#WF(|=4&&+k5_?|lmi*thQi z6HxOnL_gD%%kODrQ{oJw^1d*^GV2^%4}+xk7H_XI1SX7wyR0W-3aD&tP{bM4yLwWf zc4wrc$aRok>n<*KtgGFmXAcCZ>GF=9Y{ojHEo@_CZxy2YIS;$ia6s!x$bk!2?lu0P z8Nj5dBRDgBg9oSI-AFjo z>2=d}@R9JX0&PHy8*EAv%!+9~kpMM=$| zVbf-8ec)lNz4AJ&q5o3La_mqSX^_*}lBmOI^@A{`tfkS!X0(H%zDk8j=aANz?iLJs zdqE^K?Xb6n-(?NWEysN*h$LEXYg93bm>jI6MD>#LE?v^JSt>-rAjR$vs_`yH!(RGc zjo|TGM&Kd6SB77k>WITXWC-#`9d12+=YV=T@av}EhAj_1jLP?B^ZN!yqM3`n(j4|{ zNEQ7%7%&5At2*h%wNF;f)4jW+OJ+x_muTu%t;W*td=Issu1Z@} zRy0&{#;F*7?_G{0+3~;6V);cs%GmOyrHcMnUWUO8G?Lm)WLh@uMI`+Kv4wjxj&8$aiCh8L1fn1Dw@-cM(%9j(V)YdrG-gXx@+G2HPis?0NNd6RD^6r69Mb`>Cg3>{EX-X{F&; zUU4ld-hS77Plfu+M_1^``Lp4nU!KIymtHoLQo&@Kx1ut;#;Q&mhG|*s?G<#7zVHhZ zF!I4!$UpqB#L?!_Y7$m|ycA2OUVw(po6{S@jww6$8yI%$bod;8QFG&?PhjO$O+-sV z7dC(-96J5_CK9sK=ACpJsuwLuBcX?8d*m024eN?cVh!PJ-I}bB;lAR zA4kclDI}!pu$m-XKeIU!=3+2O*#E~(Bn&gSS$X3OZ2bdC(OzJm>6)FihDcaK-*@~| ze>UmrNWxDp;Fn@Lcb2PsNa% zuZNET>i)2glJ*Vx0-<1oF&AMDa#Hj?uGRWxmNvpP$B~rujly$M?RJD}Y7y4rXiD0c z-;dn>{SqnCq3FAQ+jgdFYL`_X+hzCf_?1Po&FSSg<}*2LdDuiPOGN2(x0{fF_I_+^ z14V6Y1V77ctG_bR@|eU9FDLDwtAB=WXP%BI`z}I~v`IKl_PQH|jdgYJhT4 zF%_*QA*X^_CW%m+sG}^gKFen_qvZf?I1Q)eu|&t@OW1~-=ae=*z1f9m>Tp0}kaQ0^ zHIK@$mo1n9b!bnrUVAQm(=n%Zb%dC;T={lvYY@w8Xk8p4ovh zk2fQ2sJ;Ppo1E{pdJ7BSr5j-HWRcBjc$x;)E^H$+q-mi9w0>yLJ6uQmi&b9|`l!j8 z-tU%}z=mR_N{7s6(YPZpBf#q&tvk%b?3#_fz-7Af&DV-XsE40m0rB=1m@{>>}2E= zbTJdcD%%n#_t$8`M$M2ZPWscS{T(Ux$tg?Vl+Iiy$(7k+3(`zIj-P@d4Cq|Ng@!av z<+Mt)C6DC~yXvPX)th#kvs4afH3{8a^36Js1~56uk`SHaU|pTr)anEu!*9*O-=Cv$1{7gCnhC`7=%B zCndz=_QhX))0LStwrlSQ2~ngClh8+_b((2&xLFEX&_iJT&OQr+FTL3K)*7#7%d(5E zHzDd*Bg`)!(bumpM&ETC248gH0TEDWy*YN}(4lrWH6|(4Xu)88v*y@C@`jn$o==^( zd-)0kZMW9^y~@nF)U-ir*$QgHItCz4aI+ZY-%YD!}x;?hER{H(lGg1Ex|KT(Yo^}BPBhNnT zZxr@JMD7P|dW76(jvlg>2`zf~SRVlXMPfIj;y-M-Tj~BtGyA}IE9mjC~ z^ch(F*S|5Zi0&Lrn!d=(!=SUi#<88iuW`6@{qPkQBA*(tNWVA3h`6PJh#jpaVFNqt z-#@(qt9SuvTej$v%9yNr;3Wa1cJc>u%2A z%ymLfAQzKvnSmoN{Yg_>S!SfZ-mKrX7euUgF1-}x^B1OHBM~JD2cCX9&UoQD(93A`4b$gb%Z}T*c#$EKBiK1^M&lxB!JvU@1WZCfMu-M4 zwH=Lh&C_H2y!7bFi0~qUyy(=t4Gs0!xneo$Ql3rla=?2YISJlgJuQDTrJlVzwqy3~ zx6?mdl}LTyutp_CV`31KA1Xr{{5 zYZCj(GSTn&<55hX&UgZi`E(|ZUCWlC;?tFl+D$6I*Q814ckFS7_^I`%1Gm$c`uEK@ zV~^g=V%J&+g4A{-;6BB>>GkA=(u#HPXTx?%( z&mJt8H4Cerd8XZ5l2(&Y4KL{38-@DeYkv0TxYMNKqmP?yWI^9PC>b%5>1_Gv4{3YQ z=6Bvn1R@slOG`2GoO4jrw=ZY}((-uNU+bTH0qVgB1!)GLu`UnE;=(pYiwcyMKmG)Q6`4Dzn}Y__ z$NWv@CB#fDmzn(?4ee|Z(R>NfDpN%kkZU1$W$q?Q`Ex-tVR4xAmA6$Jc zUj4>Ytb6Wx>|M1Q!OBYGn`%dnV_P`Do*Z^~vaH53J!a;+SZ+r{HKg@Jiuhn@wq4w~}Ff1{7-Am*{nR3C#K z4cM;PbMW2;)A0J&&c@qQzk|7#T!wihXT`GRiIS3#mZ1r>)o+P)%%w*`I~r_*$YV5| ztsS}^wXqTW=x# zXg*=m#HO{ul2q*`b8On%Oj@05>$FiYSa$SejHTr%>OUaihdbA$e%|`Ri&*>n|1oQ^ ztwEc6xNyX9l#Dxq9Yr(2j!cSXN=~o=>;Ldavm4nCtuvKPISxIKIuag_W_(j#OLDOJ z>1VLvssFW1X$pFLaT3Pfd?Wfvllp0}Y;_yaY-Jrj`k%hs0Q`XfT%6T*NYUx7iYmh{ z+FGl(9dw^|ho8`YwHEPiw?V(q?FU`h4XSjQq)u;m^-!`(n=Zu>T0p;ql^Xr)1YkXz``1|IY0HNEUThu5gJQ?<>WHemiTZN_!B4j#H$LoYZVLw|6Q z)kk{Sl&wx9j16*vL9C(+wcX~+w*;-eZI_C@^tI-la~>MDY|Xe8r>)+@ue}Pxes+20 zIU-b1iN%-y4BMW5*4*8&Lo=&r%xH|6buYS3`ahy?$)4<@N7}Krg)lqq1v@;&6fQPa3r;UTSQ;Z<iy12#VPxKZP&(7D2~V=;;(D%MNS9U8ZH@e(XJ?|g)I>>yFom9rYBd!i*L9FLK= z+>Car8`i&?$?~fwsT1 znh@)~j9hoU@DkY&p|3#GM^k5npXD?7d-OozxUrn6nQx2omzKg!)n7et0T2wO<(Hf7 zrbcSmxY0b}r~B1@z3$CMb~k;#q9ewj$4Os834P7{A%jsgawG$wuE^`x7x@DRq2%N* zF~9R;qFEd|w2LMbWKx!2d>P6~#Eb{hSw#W0;E4O~Hh-P8VWg%8t8cy)+yDBM6^Pi= zunaXdZ_q&Wx$wIvJNKLLc5iw{*$H~GEVyH5V_>7_ESh^LKZ`?$cF}}_G?SN3YUMlc zAYNZ**4GqyO2ntgp52B3MT~~+T1?Qfz>q-*ZQY6>eI6NHS>0qAR(UyyR8*jP@nY1k zUk_ht52F>Gd`&@dnGJI2FJ9`;M#7sKKb<37vF9QD zq+!d;ccH$%0RfhyH$Hsw$*1VTXi&>M)eIQiB)aO>>o@9Z>k!eP(SOykZCkf7Z@tOe zz`$YMy7kCqAf$zO<=wSw7tiIH$yi0#L}i%kpbgqUH=~ADAU{9f)Vqbjo$8d>v3ocD z-W}UbJswW5?c27arnc6!vzC9?uis$aN0ZM;TlH?^dA~oGWqC-lFoLuUDp#M?Mzy7Y zileHk8uLDwXO_DP83iky@+RA{b?bIiaPsS%NUC$HPxY$r>gwvuarIF{umL-FmYZu= z8(V@*55EoYcJGd|Z%su&W{=->KQt*?H;j^4n`hpOFgw!`OjkHz0tVf50}Ay{Kwe<- z#=c$DIZ+P&mV55QvNO-Z#yjpp?b4+PbHHQl6cdoN5bE@gKVFI*+pSk0Z(_tOGOgic z()Z=dSD;$2IU{s@)#_Co#C7Jg24mxewM7eT>?xIbv!cx^&4m10YneLkA2PfO-y$1~3w#7U$sUyhQJ} z)?n(h2C|qzSyD@Aa!3nElvl4BQQ1i??&tCCBzrhy<=19WUbM;UrzX-hCEH<#d6_56 zQ`*M#ZY#a&RXe1e1ZnCZ+vfFIZ+2L_cAc42yLQnnqC)7}wHV!Kd2~)BW+7~!+q8Ml zo;@Z_kd{GZ7Zw&#`&#e)uA|2Hc)TXR&S~OoB>5}%?oFgEH0{zPX(`&(91D7NhKn<* ze#v6QNHi_3COb_c)`!-vF)uy}Xg!IYmjR~B9nc?v;ls@P2_sv!7;`R?r0BV@XMOV|JyvbX;aqS5;TBjYY_#A1`eu&0VTh4EA+xU9F}K z%Plb1Tbg*hLhY)ptufai;ubpWWOqWlMaQYo+fR4=`Vs8>)q{y6Lb4k67OV92?}xH$ zuR*aMRB|Gsz;q2X73EL<4wcV5XZ_G22f>ulSe^rPN#?TjCN7OTiOPZR|L{X7I;rVF zrzF$`@@quCq)C#$l%Fr3&|}QC9y873;EC}1E{&Ab4z)G4aC@x0(j*!%`FJW%gCwn| z!Ilpxq9~2dsVvni(&gq_c}2veHnl_bD!<61dgX_zt*T3ZbxwH&O)Py^J(?hDlkzE@ zj_I5=d1cxye^DAt^(wE*R-2VqZPHuQL{R0|IYH$qt=gjN)b%%BFZ)LIv;-YOLLp3( zv;O=4h5AK{GM8)wR;xF>_rCo$4=UWg-@E=uxMJo_BVN$N1QPD@|D*a()PH$M#c z^+PB)$@vEsjY%R>J5F7r4z@$blSC5qS2X7vf;fFVZH|yq zw3q29EJi+R!5L@3KX{N;ZVIFYKKkfm<6p`AtfaI5sa|=<@@0ZkNgy*O|EikiN@h-k zQ*cpTQ*F|2-n<1XnKv4X7&E(tuEYig5Yj5r6pCm!^H?!WT__mBlEq6930jHWelWLgzLioEjW>gh9C=R6cI^Y%!TWkt*S?536#w6Q?Gq=h&R zKkP8$W64s8tO{7zx*$Y zPKZN7LaI9W#*9JX_17bC_SqzeJVFu0@~u)uexjn>_>LV2z4kh)uDlABmt2C{#~wpu z{rY{A(F6f1M;B^pu#RWZsc>jWD3FMr0sT>M?KQ~%$xqDdhjUE8Vl^s53?WIVx;jKZ zn1|YX@59~;FGTe{_gKHp;Q%cMS^1gQI+R5x#33IWMYH*rUWzVv-38yoiO4Yvxz>_L zvrr^ViLG0Y@Y`=APGasCB5>kk7M%;7LP2P|SMI5&qRXwfAaMTqaQEqJOsFxSB2ROY zAY-%S(wZCpn6&!dY{D!KB|49lB2hdeMj-HmAE3+4)8RYg40HEG%QfcChmzPtNYKj} z@(KArd!8&h7dn@#L?X&O`=(4m!HgNmzw1tTk2%IHLO0%qQ?gWH9_4ce(;FgMl11l4 z=k(XzZsd@R{xi=+!K05LpTUQB@?>)x&uq~r8Pm`l3HRe#X3;s&IZ2oTmo^EUej2(w z^dR!?yVsa&&!|!6_jJvpo<_|zuL-m0{OI%~Ou|)M4F8wEjKEJXNB*pzBkzVA;Ga4b zo{3**e#ebWaV%zuw5MHzX3;5daCXsj1la6&O^sQearNjymS)bU$dV2@Oq`(Oa& zJ-zyRJ#6;%#w_*NW6QvMDZY&ke|dYu(0lf080rlc2tWV=5P$##AOL}SKNyFh zfA?iwez>mA;#?|`F`n{VMPfS3sAH%fWt>V*Bz>E35;%?s$Y@9iIX-B@NYP|UBc29C z^7rzEj_;$GxkhK1c*i*tnJX;vf@ZOBMH3#KQCGloNoA3{qNzxw`(z^7a+L{9 zG@*qQS$siR6B~<@=f8b9K0WpCxS_thx?QW~>SJ|N-KzO=@p)Cga*g%6*senYa;!Nw z$y}A!i*jDw1P4a?fpZIB1rH}|hsM($ZUOAXm|4U6E?Z+8cWe0m)>~0~<4rI;`SH3p z7)O!+^Xs=xQN-r3>n+_j(FE=c%MoEL<&V4$zr%mb#5+lCoW)`+ce8&1^Oep?`^ZnrO@O73Ye2B0p9=u@*vH8QY2@wb=3?RE_&CJ3*F_5e0412=3HtN%^Q?U! z5O{QSw7tE3e0;pHuyA^MIy*c2^XE@27W?7Dhm(_&!^1-&k;ulzwz|5yzrTO&+BF)D z_T|eLPfyR!pFc-LL_B@^w7I!iRaKRjm-pb{U~zGgKp=p@U?>#2wzjsryUS!UTU%RG zQ&Xd(qo=2*H#RmvAkgLI<&Pgf&d$z|NMu`E+mk0xdV70kW@eU`m&L@yR#sL71qC@d zIj5$kE-o&1c6JyHMrmp3@bK{W@88?o+dqE%SWr+9A0MBcogEk$SX*1WwYBx_+qa>i zAq)od>eVY03MC;SQBzan@9&?Uo}QbVyR@{Vsi}GM=FP&wLO2}G$H#Z;)-8U1{`2#5 zNlD52`ue%Kx$5fboSdA_&d!dG4nsr3;^JZv5fKuJw7$OX?CeaXQj3a;JUl!&I5=Lv ze%;vEsG*^enVA_75a8$Mmz9-eZf+hI7nh%(&&9>%# zacgVqk&zK@Zf*eqf#l?52m}%w9BgW8Dk>@}B_&l?SGTvf$Ii~))6;`MAnxD4Us6(% zl9EzhUOqZHN+y%#^3(y`}+F2y1G7n`V%a>zgV=x%(>({Tgwzi6jiWL9uyp8q=zFso5~mu zw3{~LXW#cqh3!;u(V}2xv~?-7nc3O$#3arEV!Y{a`$rbd&X!8JiM>?$b9wG)NQ=pA z+4$VFhKfDaAw##LkQR*s0PmmD4;Z>{kKw9T-3BrKNr&|8Tybjw3{6d& zP~Dzk2z}vuM;=amBl*BiQlNy(Id>F(GlNoUjtL1Gr$JJ2|5qObf|DNnO{%?n;G=8n zM)_mOzPvelWmKU@4A?K>Vzyn^HlaBLBpk|K&oE8QX(YHKiqK@8O}DD%f`mzsy}BUQ zTHx>6s0QpKF@3vx+D+_0!i~j7e^Mw8nywZsH%VO#A++(D=5DYM(1U3OlD})U@ z+Q_P=(%%#Vk!U2JEe_|)z2CTzW<)XM1>y2(3|I;t4UL#`g$%@@kcMPx9mswY!p1=! zOAqourE|8FX7ljcV6Ji4_=r}Ur(jc*fq?ym=YAf<-d9}fz&?DP^q$IGIBo0ErB*aN zHiNs;!&6bPUbE;l?}i6si!-TE49YZ_c+jNH=pv}ma=vA95MpABx$Y$+pMpS?tWHd$|>McDWSs>tRnI!`IM!ZpdEI+mL1Uw|}CH))bb_ z5d78S_}>ZqeHHtdGYCmnN5OEv??#!h)IYf)-kL{Y3i1A@n>-^{AxR{$olhG5Ev*qk zeTyWT6j?kiy26)kHn3Jd^V_BKcDxg#7bT^IItrcFTy38&6_UAF1*Dl09hV=IiohwRZdt9$d{4qA`BwZ zb+CH;4H84_9OvLn%CA{$R64~2>m}o54H;zTz=M5PS{3dF$5N!RUQ?kq583$8kYDuY zvpOK>5WP2cyT%n{G$gmyy6PW*5SkOp99rDJE|Y6f7WZ=y&2jrihU Dw}jzq literal 0 HcmV?d00001 diff --git a/B4A/Files/principal.bal b/B4A/Files/principal.bal new file mode 100644 index 0000000000000000000000000000000000000000..ad91e69f393e7ec6d35f1e4c972e360ffa34d1fc GIT binary patch literal 9773 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 literal 0 HcmV?d00001 diff --git a/B4A/Files/scroll.bal b/B4A/Files/scroll.bal index cfd2ebe96ecd8cd5589f8accc78091d7ca010bf2..0fe9b11caee1fc00712300f34dd44f7e545a7fe8 100644 GIT binary patch delta 130 zcmccbead^obtcB7%{Q3ZST+~4r%F!V&to>3PjMe(%;b%nS&Xrh52^@H*5|SXvKqwn z7~>{8s(McTC&xLNOWBAqezGEW7GuKX`Qkc2(tuNb@;hm@$^W=HCo8MWWlRL>4d72? bU|>)OVjg}V!I>~wP_Sll1FtO`kOu?+H&`WV delta 134 zcmX@*ecyY-btcB-%{Q3ZSVRRG7#N&g{X$%W;ywI>Jfr;mLL7ZI$FZkMGR90kC}TSL zr@}tQ*vXD6S&VU$732bdWTBiMWBlX=azT^7Dj6{*OqLhVVoaPoL0$()Zsd2J%&M}C fF=_Gyo&f$NpyBF3%)<{PI1?wo=h?{yWB~yHVlpOh diff --git a/B4A/Files/t_a.jpg b/B4A/Files/t_a.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8a89391204bac34bfb64d789e62f0863e85f518e GIT binary patch literal 3980 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 literal 0 HcmV?d00001 diff --git a/B4A/Files/usuario.png b/B4A/Files/usuario.png new file mode 100644 index 0000000000000000000000000000000000000000..2935f41a7b156661e9224766883c83c25d88dc25 GIT binary patch literal 17227 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 DS$Fry literal 0 HcmV?d00001 diff --git a/B4A/NUEVO_TORRADO.b4a.meta b/B4A/NUEVO_TORRADO.b4a.meta index 794dad8..0aaf728 100644 --- a/B4A/NUEVO_TORRADO.b4a.meta +++ b/B4A/NUEVO_TORRADO.b4a.meta @@ -34,6 +34,6 @@ ModuleClosedNodes6= ModuleClosedNodes7= ModuleClosedNodes8= ModuleClosedNodes9= -NavigationStack=C_principal,JobDone,464,0,Subs,revisaBD,38,0,B4XMainPage,b_enviarbd_Click,213,0,appUpdater,Download,198,0,appUpdater,Process_Globals,74,0,Starter,Service_Create,28,0,Starter,Service_Start,36,0,Starter,Process_Globals,10,0,Diseñador Visual,MainPage.bal,-100,2,B4XMainPage,ImageView5_Click,165,0 +NavigationStack=c_datos,B4XPage_CloseRequest,1722,0,Diseñador Visual,gestionadas.bal,-100,2,Diseñador Visual,gestion.bal,-100,2,Diseñador Visual,scroll.bal,-100,3,Diseñador Visual,principal.bal,-100,2,Diseñador Visual,datos.bal,-100,1,c_datos,GPS_LocationChanged,1742,0,c_datos,rdb_no_CheckedChange,1754,0,c_datos,B4XPage_Appear,249,0,c_datos,B4XPage_Created,238,0,c_datos,Class_Globals,85,0 SelectedBuild=0 VisibleModules=9,1,2,4,3,5,6,7,8,10 diff --git a/B4A/Starter.bas b/B4A/Starter.bas index 0c0be10..9a19a0e 100644 --- a/B4A/Starter.bas +++ b/B4A/Starter.bas @@ -14,7 +14,7 @@ Sub Process_Globals 'These variables can be accessed from all modules. Public rp As RuntimePermissions Dim reqManager As DBRequestManager - Dim DBReqServer As String = "http://keymon.lat:1781" '"http://keymon.lat:1781" "http://11.0.0.134:1782" "http://keymon.lat:1783" "http://11.0.0.48:1783" ""' CAMBIAR HACIA AFUERA O DENTRO DE LA OFNA + Dim DBReqServer As String = "http://11.0.0.134:1782" '"http://keymon.lat:1781" "http://11.0.0.134:1782" ' CAMBIAR HACIA AFUERA O DENTRO DE LA OFNA ' Dim server As String = "http://10.0.0.205:1782" Dim rutaBD As String = File.DirInternal Dim skmt As SQL diff --git a/B4A/Tracker.bas b/B4A/Tracker.bas new file mode 100644 index 0000000..224dd67 --- /dev/null +++ b/B4A/Tracker.bas @@ -0,0 +1,218 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Service +Version=11 +@EndOfDesignText@ +#Region Service Attributes + #StartAtBoot: True +#End Region +'****************************************************************************** +'No olvidar agregar esta linea al editor de manifiesto: +' SetServiceAttribute(Tracker, android:foregroundServiceType, "location") +' +'En Starter agregar estas lineas en Process_Globals +' Public rp As RuntimePermissions +' Public FLP As FusedLocationProvider +' Private flpStarted As Boolean +' +'En Main agregar estas lineas a Activity_Resume +' Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_ACCESS_FINE_LOCATION) +' Wait For Activity_PermissionResult (Permission As String, Result As Boolean) +' If Result Then +' StartService(Tracker) +' Log("Start Tracker") +' Else +' ToastMessageShow("No permission", True) +' End If +' +'Se necesitan las librerias FusedLocationProvider, GPS, Phone y RunTimePermissions +' +'Y en Main agregar estas dos lineas: +'#AdditionalJar: com.android.support:support-v4 +'#AdditionalJar: com.google.android.gms:play-services-location + +Sub Process_Globals +' Private nid As Int = 1 + Private Tracking As Boolean + Private lock As PhoneWakeState + 'Para FusedLocationProvider (2 lineas) + Public FLP As FusedLocationProvider + Dim actualLR As LocationRequest + Private flpStarted As Boolean +' Dim locRequest As String + Dim UUGCoords As Location 'Ultima Ubicacion Guardada +' Dim trackerActividad, pushServiceActividad As String + Dim logger As Boolean = True +End Sub + +Sub Service_Create + Service.AutomaticForegroundMode = Service.AUTOMATIC_FOREGROUND_NEVER 'we are handling it ourselves + UUGCoords.Initialize + logger = False + 'Para FusedLocationProvider (2 lineas) + FLP.Initialize("flp") + FLP.Connect + lock.PartialLock + StartFLP +End Sub + +Sub flp_ConnectionSuccess +' If logger Then Log("Connected to location provider") + 'FLP.GetLastKnownLocation +End Sub + +Sub flp_ConnectionFailed(ConnectionResult1 As Int) + If logger Then Log("Failed to connect to location provider") +End Sub + +Sub flp_ConnectionSuspended(ConnectionResult1 As Int) + If logger Then Log("FLP conection suspended") + StartFLP +End Sub + +Sub Service_Start (StartingIntent As Intent) + LogColor("Iniciando Tracker ...", Colors.Green) + Service.StopAutomaticForeground +' Service.StartForeground(51042, Subs.notiLowReturn("Kelloggs", "Activo", 51042)) + StartServiceAt(Me, DateTime.Now + 10 * DateTime.TicksPerMinute, True) + Track +End Sub + +Public Sub Track + Log("Inicia Track - Tracking : "&Tracking) + If Tracking Then +' Log(actualLR.GetSmallestDisplacement) + Return 'Si ya estamos "rastreando" no hacemos nada (return) + End If + If Starter.rp.Check(Starter.rp.PERMISSION_ACCESS_FINE_LOCATION) = False Then + If logger Then Log("Sin permisos de ublicación.") + Return + End If + StartFLP 'Iniciamos FusedLocationProvider + Tracking = True +End Sub + +Public Sub StartFLP + Log("StartFLP - flpStarted="&flpStarted) + Do While FLP.IsConnected = False + Sleep(500) + If logger Then Log("sleeping") + Loop +' If flpStarted = False Then +' If logger Then Log("RequestLocationUpdates") +' FLP.RequestLocationUpdates(CreateLocationRequest) 'Buscamos ubicacion + If logger Then LogColor("Buscamos ubicacion (movimientoMinimo = "&actualLR.GetSmallestDisplacement&")", Colors.Magenta) +' If logger Then Log(actualLR.GetSmallestDisplacement) + flpStarted = True +' End If +End Sub + +Public Sub StartFLP2 + If logger Then Log("StartFLP2 - flpStarted="&flpStarted) + Do While FLP.IsConnected = False + Sleep(500) + If logger Then Log("sleeping") + Loop + dameUltimaUbicacionConocida 'Regresamos ultima ubicacion conocida + FLP.RequestLocationUpdates(CreateLocationRequest2) 'Buscamos ubicacion 2 peticiones + If logger Then LogColor("Buscamos ubicacion (movimientoMinimo = "&actualLR.GetSmallestDisplacement&")", Colors.Magenta) +' If logger Then Log(actualLR.GetSmallestDisplacement) +End Sub + +Private Sub CreateLocationRequest As LocationRequest + If logger Then Log("CreateLocationRequest") + Dim lr As LocationRequest + lr.Initialize + lr.SetInterval(10000) 'Intervalo deseado para actualizaciones de ubicacion + lr.SetFastestInterval(lr.GetInterval / 2) 'Intervalo minimo para actualizaciones de ubicacion + lr.SetSmallestDisplacement(75) 'Solo registra cambio de ubicacion si es mayor a XX mts + lr.SetPriority(lr.Priority.PRIORITY_HIGH_ACCURACY) + actualLR=lr + Return lr +End Sub + +Private Sub CreateLocationRequest2 As LocationRequest + If logger Then Log("Iniciamos CreateLocationRequest2") + Dim lr As LocationRequest + lr.Initialize + lr.SetInterval(2000) 'Intervalo deseado para actualizaciones de ubicacion + lr.SetFastestInterval(lr.GetInterval / 2) 'Intervalo minimo para actualizaciones de ubicacion + lr.setNumUpdates(2) 'Solicitamos solo 2 actualizaciones con estos parametros + lr.SetSmallestDisplacement(1) 'Solo registra cambio de ubicacion si es mayor a XX mts + lr.SetPriority(lr.Priority.PRIORITY_HIGH_ACCURACY) + actualLR=lr + Return lr +End Sub + +Sub dameUltimaUbicacionConocida + If FLP.GetLastKnownLocation.IsInitialized Then 'Mandamos ultima ubicacion guardada +' If logger Then LogColor($"Mandamos UUC "${Subs.fechaKMT(FLP.GetLastKnownLocation.Time)}|Acc:$0.2{FLP.GetLastKnownLocation.Accuracy}|$0.8{FLP.GetLastKnownLocation.Latitude}|$0.8{FLP.GetLastKnownLocation.Longitude}|Spd:$0.2{FLP.GetLastKnownLocation.Speed}|"$, Colors.RGB(255,112,35)) +' Dim coords As String = FLP.GetLastKnownLocation.Latitude&","&FLP.GetLastKnownLocation.Longitude&","&formatoFecha(FLP.GetLastKnownLocation.Time) +' CallSubDelayed2(FirebaseMessaging,"mandamosLoc",coords) +' Subs.mandamosLoc(coords) + End If +End Sub + +Public Sub StopFLP + 'Log("StopFLP") + If flpStarted Then + FLP.RemoveLocationUpdates 'Eliminamos todas las solicitudes de ubicacion + flpStarted = False + End If +End Sub + +Sub flp_LocationChanged (Location1 As Location) + Starter.latitud = Location1.Latitude + Starter.longitud = Location1.Longitude + LogColor($"Location changed lat=${Location1.Latitude}, lon=${Location1.Longitude}, Acc=${Location1.Accuracy}, SD=$1.0{actualLR.GetSmallestDisplacement}"$, Colors.green) + UUGCoords = Location1 +' If logger Then Log("SmallestDisplacement="&actualLR.GetSmallestDisplacement) +' CallSub2(Starter, "GPS_LocationChanged", Location1) +' CallSub2(gestion, "GPS_LocationChanged", Location1) +' Starter.ubicacionActual.Latitude = Starter.lat_gps +' Starter.ubicacionActual.Longitude = Starter.lon_gps +' Starter.ubicacionActual.Accuracy = Location1.Accuracy + + '/////// para la ultima ubicacion FL + Dim sDate,sTime As String + DateTime.DateFormat = "MM/dd/yyyy" + sDate=DateTime.Date(DateTime.Now) + sTime=DateTime.Time(DateTime.Now) +' If Starter.lat_gps <> 0 And Starter.lat_gps <> Null Then +' Try +' Starter.skmt.ExecNonQuery("DELETE FROM HIST_GPS") +' Starter.skmt.ExecNonQuery2("INSERT INTO HIST_GPS (HGDATE, HGLAT, HGLON) VALUES(?,?,?) ", Array As Object (sDate & sTime, Starter.lat_gps, Starter.lon_gps)) +' Catch +' If logger Then Log("Error al borrar o insertar nuevas coordendas en HIST_GPS") +' End Try +' End If + + +End Sub + +Sub CreateNotification (Body As String) As Notification 'ignore + Dim notification As Notification + notification.Initialize2(notification.IMPORTANCE_LOW) + notification.Icon = "icon" + notification.SetInfo("This", Body, Main) + Return notification +End Sub + +Sub Service_Destroy + If Tracking Then + StopFLP + End If + Tracking = False + lock.ReleasePartialLock +End Sub + +Sub formatoFecha(fecha As String) As String 'ignore 'Convierte una fecha al formato yyMMddHHmmss +' Log(fecha) + Dim OrigFormat As String = DateTime.DateFormat 'save orig date format + DateTime.DateFormat="yyMMddHHmmss" + Dim lastUpdate As String=DateTime.Date(fecha) + DateTime.DateFormat=OrigFormat 'return to orig date format +' Log(lastUpdate) + Return lastUpdate +End Sub \ No newline at end of file diff --git a/B4A/appUpdater.bas b/B4A/appUpdater.bas new file mode 100644 index 0000000..1a63778 --- /dev/null +++ b/B4A/appUpdater.bas @@ -0,0 +1,282 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Service +Version=10.2 +@EndOfDesignText@ +#Region Service Attributes + #StartAtBoot: False +#End Region + +'//////////////////////////////////////////////////////////////////////////////////////////// +'//// Servicio para revisar si hay actualizacion de aplicación, usa la +'//// actividad "updateAvailable" para mostrar mensajes. +'//// +'//// https://www.b4x.com/android/forum/threads/update-your-app-without-using-the-gplaystore.109720/#content +'//// +'//// En la actividad del la cual se va a llamar la revision de actualizacion +'//// hay que agregar los siguientes Subs: +'//// +' Sub boton_que_llama_revision_Click +' StartService(appUpdater) +' End Sub +' +' appUpdater - Mostramos el anuncio de que se esta descargando el nuevo apk +' Sub muestraProgreso +' ProgressDialogShow("Descargando actualización") +' End Sub +' +' appUpdater - Ocultamos el anuncio de que se esta descargando el nuevo apk +' Sub ocultaProgreso +' ProgressDialogHide +' End Sub +'//// +'//// Requiere las siguientes librerias: +'//// +'//// * appUpdating +'//// * JavaObject +'//// * OkHttpUtils2 +'//// * Phone +'//// * RuntimePermissions +'//// +'//// Requiere las siguientes lineas en el manifiesto: +'//// +' AddManifestText( +' ) +' AddApplicationText( +' +' +' +' ) +' CreateResource(xml, provider_paths, +' +' +' +' +' +' ) +' AddPermission(android.permission.REQUEST_INSTALL_PACKAGES) +' AddPermission(android.permission.INTERNET) +' AddPermission(android.permission.INSTALL_PACKAGES) +' AddPermission(android.permission.READ_EXTERNAL_STORAGE) +' AddPermission(android.permission.WRITE_EXTERNAL_STORAGE) +' AddPermission(android.permission.READ_PHONE_STATE) +' AddPermission(android.permission.WAKE_LOCK) +'//// +'//////////////////////////////////////////////////////////////////////////////////////////// + +Sub Process_Globals + 'These global variables will be declared once when the application starts. + 'These variables can be accessed from all modules. + + 'Aqui va la liga al archivo .ver en el servidor que contiene la información de la aplicacion + Public lnk As String = "https://keymon.lat/movil/Arlete/ARE.ver" + + '/// En el servidor se necesita un archivo de texto (.ver) que tenga los siguientes + '/// datos separados por un tabulador + '/// contents of ver file, each field is seperated by a tab + ' Field 0 = 2.226.19.09.19.01a <-- Esta es la version de la aplicación disponible + ' Field 1 = A new version of the MyAPP is available, Download and update now ? <-- Mensaje para cuando hay actualización + ' Field 2 = MyApp is up to date <--- Mensaje para cuando no hay actualización + ' Field 3 = http://www.mydomain.com/Public/myapp.apk <--- Liga al apk de la actualización + + Public nNewApp As Notification + Public nNewAppnID As Int = 16 + 'Para Download + Dim nativeMe As JavaObject + Dim n2 As Notification + Dim n2ID As Int = 16 + 'Para fileProvider + Public SharedFolder As String + Public UseFileProvider As Boolean + Private rp As RuntimePermissions + + Type mNewVersion(update As Boolean, nonewAPP As Boolean, notifyUser As Boolean, _ + version As String, newMsg As String, okMsg As String, appLink As String) + Public newApp As mNewVersion +End Sub + +Sub Service_Create + Log("appUpdater(), Service_Create") + newApp.Initialize + Service.AutomaticForegroundMode = Service.AUTOMATIC_FOREGROUND_NEVER + n2.Initialize + nativeMe.InitializeContext +End Sub + +Sub Service_Start (StartingIntent As Intent) + Log("appUpdater(), Service_Start") +' CallSubDelayed2(Main, "muestraProgreso", "Buscando actualización") + B4XPages.MainPage.muestraProgreso("Buscando actualización") + Log("Buscando actualización") + fileProvider_init + Wait For (Download(Me, lnk)) JobDone (j As HttpJob) + If j.Success Then + Try + Dim app() As String = Regex.Split(Chr(9),j.GetString) + ' // Set the data + newApp.appLink = app(3) 'Liga a nueva app + newApp.newMsg = app(1) 'Texto de que hay actualizacion + newApp.okMsg = app(2) 'Texto de app al corriente + newApp.version = app(0) 'Version actual + + Log($"Application.VersionName=${Application.VersionName}, newApp=${newApp}"$) + + ' // App version check + If newApp.version = Application.VersionName Then + newApp.update = False + Log("No new app") + B4XPages.ShowPage("updateAvailable") + 'Se puede mandar tambien una notificacion avisando que NO hay actualizaciones + CreateNotification2("Aplicacion al corriente","No hay actualizaciones disponibles","ic_file_download_white_24dp",Main,True,True,nNewApp,nNewAppnID) + End If + If newApp.version <> Application.VersionName Then + newApp.update = True + Log("New app true") + B4XPages.ShowPage("updateAvailable") + 'Se puede mandar tambien una notificacion avisando que hay actualizacion disponible +' CreateNotification2("Nueva aplicación disponible","Haga clic para descargar.","ic_file_download_white_24dp",C_UpdateAvailable,True,True,nNewApp,nNewAppnID) + End If + Catch + Log("appUpdater(), Job Failed, error " & LastException.Message) + End Try + Else + Log("appUpdater(), Job Failed " & lnk) + End If + j.Release +' StopService(Me) +End Sub + +Sub download_Start (StartingIntent As Intent) + download_newApk +End Sub + +Sub download_newApk +' CreateNotification("Descargando actualización", "Descargando apk", "ic_file_download_white_24dp", Main, False, True) +' CallSubDelayed2(Main, "muestraProgreso", "Descargando actualización") + Log("Descargando actualización") + B4XPages.ShowPage("Mainpage") + Starter.muestraProgreso = 1 + Dim job_newAPP As HttpJob + job_newAPP.Initialize("job_newAPP",Me) + job_newAPP.Download(newApp.appLink) + Wait for (job_newAPP) JobDone (job_newAPP As HttpJob) + If job_newAPP.Success = True Then + ' // Delete existing file + If File.Exists(SharedFolder,"newapp.apk") Then + File.Delete(SharedFolder,"newapp.apk") + End If + ' // Save new file + Dim outNewAPK As OutputStream = File.OpenOutput(SharedFolder,"newapp.apk", False) + File.Copy2(job_newAPP.GetInputStream, outNewAPK) + outNewAPK.Close + If Starter.Logger Then Log("APK dir: "&SharedFolder) + End If + job_newAPP.Release + ' // Install the app + Dim in As Intent + in.Initialize(in.ACTION_VIEW,"" ) + SetFileUriAsIntentData(in, "newapp.apk") + ' // Type must be set after calling SetFileUriAsIntentData + in.SetType("application/vnd.android.package-archive") + StartActivity(in) + n2.Cancel(nNewAppnID) + B4XPages.MainPage.ocultaProgreso +' Service.StopForeground(nNewAppnID) + StopService(Me) +' CallSubDelayed(Main,"ocultaProgreso") +End Sub + +Sub download_Destroy + n2.Cancel(n2ID) + Service.StopForeground(n2ID) +End Sub + +Sub Download (Callback As Object, link As String) As HttpJob + Dim j As HttpJob + j.Initialize("", Callback) + j.Download(link) + Return j +End Sub + +Private Sub CreateNotification2(Title As String, Content As String, _ 'ignore + Icon As String, TargetActivity As Object, Sound As Boolean, _ + Vibrate As Boolean, pN As Notification,pNID As Int) As Notification + pN.Initialize2(pN.IMPORTANCE_HIGH) +' pN.Number = pNID +' pN.Light = False + pN.Vibrate = Vibrate + pN.Sound = Sound +' pN.OnGoingEvent = False + pN.Icon = Icon + pN.AutoCancel = True + pN.SetInfo(Title, Content, TargetActivity) + pN.Notify(pNID) + Return pN +End Sub + +Private Sub CreateNotification(Title As String, Content As String, Icon As String, TargetActivity As Object, Sound As Boolean, Vibrate As Boolean) As Notification 'ignore + n2.Initialize + n2.Light = False + n2.Vibrate = Vibrate + n2.Sound = Sound + n2.OnGoingEvent = True + n2.Icon = Icon + n2.SetInfo(Title, Content, TargetActivity) + n2.Notify(nNewAppnID) +End Sub + +Sub Service_Destroy + Log("appUpdater(), Service_Destroy") +End Sub + +Sub fileProvider_init + Dim p As Phone + If p.SdkVersion >= 24 Or File.ExternalWritable = False Then + UseFileProvider = True + SharedFolder = File.Combine(File.DirInternal, "shared") + If Not(File.IsDirectory(File.DirInternal,"shared")) Then + File.MakeDir("", SharedFolder) + End If + Else + UseFileProvider = False + SharedFolder = rp.GetSafeDirDefaultExternal("shared") + End If + Log($"Using FileProvider? ${UseFileProvider}"$) +End Sub + +'Returns the file uri. +Sub GetFileUri (FileName As String) As Object + Try + If Not(UseFileProvider) Then + Dim uri As JavaObject + Return uri.InitializeStatic("android.net.Uri").RunMethod("parse", Array("file://" & File.Combine(SharedFolder, FileName))) + End If + Dim f As JavaObject + f.InitializeNewInstance("java.io.File", Array(SharedFolder, FileName)) + Dim fp As JavaObject + Dim context As JavaObject + context.InitializeContext + fp.InitializeStatic("android.support.v4.content.FileProvider") + Return fp.RunMethod("getUriForFile", Array(context, Application.PackageName & ".provider", f)) + Catch + Log("FileProvider::GetFileUri - error - " & LastException.Message) + Return "" + End Try +End Sub + +'Replaces the intent Data field with the file uri. +'Resets the type field. Make sure to call Intent.SetType after calling this method +Sub SetFileUriAsIntentData (Intent As Intent, FileName As String) + Dim jo As JavaObject = Intent + jo.RunMethod("setData", Array(GetFileUri(FileName))) + Intent.Flags = Bit.Or(Intent.Flags, 1) 'FLAG_GRANT_READ_URI_PERMISSION +End Sub diff --git a/B4A/c_datos.bas b/B4A/c_datos.bas index 0383373..c604bbc 100644 --- a/B4A/c_datos.bas +++ b/B4A/c_datos.bas @@ -190,7 +190,7 @@ Private Sub B4XPage_Created (Root1 As B4XView) ASWheelPicker2.AddItems(MES) Dim year As List : year.Initialize - For i = DateTime.GetYear(DateTime.Now) To DateTime.GetYear(DateTime.Now) + 4 + For i = DateTime.GetYear(DateTime.Now) To DateTime.GetYear(DateTime.Now) + 1 Dim Item As ASWheelPicker_Item Item.Initialize Item.Text = i @@ -383,7 +383,7 @@ Private Sub B4XPage_Appear m = Starter.skmt.ExecQuery2("SELECT * FROM HIST_VISITA WHERE CREDITO = ? AND ESTATUS = 1 OR ESTATUS = 0",Array As String(cuenta)) m.Position = 0 - + Log(cuenta) e = Starter.skmt.ExecQuery("SELECT PARENTESCO, NUMERO, NUME FROM CAT_PARENTESCO order by 3") Dim Items2 As List Items2.Initialize @@ -467,6 +467,8 @@ Private Sub B4XPage_Appear g.Close g = Starter.skmt.ExecQuery2("SELECT NUMERO FROM CAT_RESULTADO_DA WHERE CO_RDESCRIPCION = ?", Array As String(m.GetString("RESULTADO"))) g.Position = 0 + Log(g.RowCount) + Log(g.GetString("NUMERO")) cb_resultado.SelectedIndex = g.GetString("NUMERO") g.Close Else If cb_accion.SelectedItem = "LOCALIZABLE" Then @@ -781,7 +783,7 @@ Private Sub cb_accion_SelectedIndexChanged (Index As Int) Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) End If c.Close - Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET ACCION = ?, CODIGO_ACCION = ? WHERE CREDITO = ? AND ESTATUS = 1", Array As String(cb_accion.SelectedItem,f.GetString("CO_ACCION"), cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET ACCION = ?, CODIGO_ACCION = ?, RESULTADO = ? WHERE CREDITO = ? AND ESTATUS = 1", Array As String(cb_accion.SelectedItem,f.GetString("CO_ACCION"), "Selecciona una opción",cuenta)) If cb_accion.SelectedItem = "Selecciona una opción" Then Dim Items4 As List Items4.Initialize @@ -1475,19 +1477,21 @@ Private Sub b_guardar_Click End If DateTime.DateFormat = "dd/MM/yyyy" + DateTime.TimeFormat = "HH:mm:ss" Dim fecha_captura As String = DateTime.Date(DateTime.Now) + Dim hora_captura As String = DateTime.Time(DateTime.Now) Log(fecha_captura) n = Starter.skmt.ExecQuery2("SELECT COUNT(*) AS REGISTRADO FROM HIST_VISITA WHERE CREDITO = ?",Array As String(cuenta)) n.Position = 0 If n.GetString("REGISTRADO") = 0 Then - Starter.skmt.ExecNonQuery2("INSERT INTO HIST_VISITA(CREDITO, VISITADOR, RESULTADO, CODIGO_RES, PARENTESCO, COMENTARIOS, FECHA, LONGITUD, LATUTUD, FECHACAPTURA, FECHA_PROMESA, MONTO_PROMESA, TIPO_DOMICILIO, NIVEL_SOCIO, CARACTERISTICAS, FOTOUNO, FOTODOS, FOTOTRES, FOTOCUATRO, NOMBRE_ATIENDE, CODIGO_ACCION, ACCION) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As String(cuenta, B4XPages.MainPage.user, cb_resultado.SelectedItem, j.GetString("CO_RESULTADO"),cb_parentesco.SelectedItem, et_comentarios.Text, fecha_captura, Starter.latitud, Starter.longitud, fecha_captura, b_fecharesultado.Text, et_monto.Text, cb_vivienda.SelectedItem, cb_socioeconomico.SelectedItem, cb_caracteristicas.SelectedItem, nombrefoto, nombrefoto1, nombrefoto2, nombrefoto3, et_parentesco.Text, f.GetString("CO_ACCION"), cb_accion.SelectedItem)) + Starter.skmt.ExecNonQuery2("INSERT INTO HIST_VISITA(CREDITO, VISITADOR, RESULTADO, CODIGO_RES, PARENTESCO, COMENTARIOS, FECHA, LONGITUD, LATUTUD, FECHACAPTURA, FECHA_PROMESA, MONTO_PROMESA, TIPO_DOMICILIO, NIVEL_SOCIO, CARACTERISTICAS, FOTOUNO, FOTODOS, FOTOTRES, FOTOCUATRO, NOMBRE_ATIENDE, CODIGO_ACCION, ACCION) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As String(cuenta, B4XPages.MainPage.user, cb_resultado.SelectedItem, j.GetString("CO_RESULTADO"),cb_parentesco.SelectedItem, et_comentarios.Text, fecha_captura & " " & hora_captura, Starter.latitud, Starter.longitud, fecha_captura & " " & hora_captura, b_fecharesultado.Text, et_monto.Text, cb_vivienda.SelectedItem, cb_socioeconomico.SelectedItem, cb_caracteristicas.SelectedItem, nombrefoto, nombrefoto1, nombrefoto2, nombrefoto3, et_parentesco.Text, f.GetString("CO_ACCION"), cb_accion.SelectedItem)) Starter.skmt.ExecNonQuery2("delete from CHECADO WHERE CREDITO = ?",Array As String(cuenta)) Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?",Array As Object("Terminada","2",cuenta)) Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?",Array As Object("Terminada","2",cuenta)) Log("Insert") Else If n.GetString("REGISTRADO") > 0 Then - Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET VISITADOR = ?, RESULTADO = ?, CODIGO_RES = ?, PARENTESCO = ?, COMENTARIOS = ?, FECHA = ?, LONGITUD = ?, LATUTUD = ?, FECHACAPTURA = ?, FECHA_PROMESA = ?, MONTO_PROMESA = ?, TIPO_DOMICILIO = ?, NIVEL_SOCIO = ?, CARACTERISTICAS = ?, FOTOUNO = ?, FOTODOS = ?, FOTOTRES = ?, FOTOCUATRO = ?, NOMBRE_ATIENDE = ?, CODIGO_ACCION = ?, ACCION = ?, ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String(B4XPages.MainPage.user, cb_resultado.SelectedItem, j.GetString("CO_RESULTADO"),cb_parentesco.SelectedItem, et_comentarios.Text, fecha_captura, Starter.latitud, Starter.longitud, fecha_captura, b_fecharesultado.Text, et_monto.Text, cb_vivienda.SelectedItem, cb_socioeconomico.SelectedItem, cb_caracteristicas.SelectedItem, nombrefoto, nombrefoto1, nombrefoto2, nombrefoto3, et_parentesco.Text, f.GetString("CO_ACCION"), cb_accion.SelectedItem,"2", cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET VISITADOR = ?, RESULTADO = ?, CODIGO_RES = ?, PARENTESCO = ?, COMENTARIOS = ?, FECHA = ?, LONGITUD = ?, LATUTUD = ?, FECHACAPTURA = ?, FECHA_PROMESA = ?, MONTO_PROMESA = ?, TIPO_DOMICILIO = ?, NIVEL_SOCIO = ?, CARACTERISTICAS = ?, FOTOUNO = ?, FOTODOS = ?, FOTOTRES = ?, FOTOCUATRO = ?, NOMBRE_ATIENDE = ?, CODIGO_ACCION = ?, ACCION = ?, ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String(B4XPages.MainPage.user, cb_resultado.SelectedItem, j.GetString("CO_RESULTADO"),cb_parentesco.SelectedItem, et_comentarios.Text, fecha_captura & " " & hora_captura, Starter.latitud, Starter.longitud, fecha_captura & " " & hora_captura, b_fecharesultado.Text, et_monto.Text, cb_vivienda.SelectedItem, cb_socioeconomico.SelectedItem, cb_caracteristicas.SelectedItem, nombrefoto, nombrefoto1, nombrefoto2, nombrefoto3, et_parentesco.Text, f.GetString("CO_ACCION"), cb_accion.SelectedItem,"2", cuenta)) Starter.skmt.ExecNonQuery2("delete from CHECADO WHERE CREDITO = ?",Array As String(cuenta)) Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?",Array As Object("Terminada","2",cuenta)) Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?",Array As Object("Terminada","2",cuenta)) @@ -1529,18 +1533,20 @@ Private Sub b_guardar_Click j.Position = 0 End If DateTime.DateFormat = "dd/MM/yyyy" + DateTime.TimeFormat = "HH:mm:ss" Dim fecha_captura As String = DateTime.Date(DateTime.Now) + Dim hora_captura As String = DateTime.Time(DateTime.Now) Log(fecha_captura) n = Starter.skmt.ExecQuery2("SELECT COUNT(*) AS REGISTRADO FROM HIST_VISITA WHERE CREDITO = ?",Array As String(cuenta)) n.Position = 0 If n.GetString("REGISTRADO") = 0 Then - Starter.skmt.ExecNonQuery2("INSERT INTO HIST_VISITA(CREDITO, VISITADOR, RESULTADO, CODIGO_RES, PARENTESCO, COMENTARIOS, FECHA, LONGITUD, LATUTUD, FECHACAPTURA, TIPO_DOMICILIO, NIVEL_SOCIO, CARACTERISTICAS, FOTOUNO, FOTODOS, FOTOTRES, FOTOCUATRO, NOMBRE_ATIENDE, CODIGO_ACCION, ACCION) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As String(cuenta, B4XPages.MainPage.user, cb_resultado.SelectedItem, j.GetString("CO_RESULTADO"),cb_parentesco.SelectedItem, et_comentarios.Text, fecha_captura, Starter.latitud, Starter.longitud, fecha_captura, cb_vivienda.SelectedItem, cb_socioeconomico.SelectedItem, cb_caracteristicas.SelectedItem, nombrefoto, nombrefoto1, nombrefoto2, nombrefoto3, et_parentesco.Text, f.GetString("CO_ACCION"), cb_accion.SelectedItem)) + Starter.skmt.ExecNonQuery2("INSERT INTO HIST_VISITA(CREDITO, VISITADOR, RESULTADO, CODIGO_RES, PARENTESCO, COMENTARIOS, FECHA, LONGITUD, LATUTUD, FECHACAPTURA, TIPO_DOMICILIO, NIVEL_SOCIO, CARACTERISTICAS, FOTOUNO, FOTODOS, FOTOTRES, FOTOCUATRO, NOMBRE_ATIENDE, CODIGO_ACCION, ACCION) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As String(cuenta, B4XPages.MainPage.user, cb_resultado.SelectedItem, j.GetString("CO_RESULTADO"),cb_parentesco.SelectedItem, et_comentarios.Text, fecha_captura & " " & hora_captura, Starter.latitud, Starter.longitud, fecha_captura & " " & hora_captura, cb_vivienda.SelectedItem, cb_socioeconomico.SelectedItem, cb_caracteristicas.SelectedItem, nombrefoto, nombrefoto1, nombrefoto2, nombrefoto3, et_parentesco.Text, f.GetString("CO_ACCION"), cb_accion.SelectedItem)) Starter.skmt.ExecNonQuery2("delete from CHECADO WHERE CREDITO = ?",Array As String(cuenta)) Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?",Array As Object("Terminada","2",cuenta)) Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?",Array As Object("Terminada","2",cuenta)) Else - Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET VISITADOR = ?, RESULTADO = ?, CODIGO_RES = ?, PARENTESCO = ?, COMENTARIOS = ?, FECHA = ?, LONGITUD = ?, LATUTUD = ?, FECHACAPTURA = ?, TIPO_DOMICILIO = ?, NIVEL_SOCIO = ?, CARACTERISTICAS = ?, FOTOUNO = ?, FOTODOS = ?, FOTOTRES = ?, FOTOCUATRO = ?, NOMBRE_ATIENDE = ?, CODIGO_ACCION = ?, ACCION = ?, ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String(B4XPages.MainPage.user, cb_resultado.SelectedItem, j.GetString("CO_RESULTADO"),cb_parentesco.SelectedItem, et_comentarios.Text, fecha_captura, Starter.latitud, Starter.longitud, fecha_captura, cb_vivienda.SelectedItem, cb_socioeconomico.SelectedItem, cb_caracteristicas.SelectedItem, nombrefoto, nombrefoto1, nombrefoto2, nombrefoto3, et_parentesco.Text, f.GetString("CO_ACCION"), cb_accion.SelectedItem, "2",cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET VISITADOR = ?, RESULTADO = ?, CODIGO_RES = ?, PARENTESCO = ?, COMENTARIOS = ?, FECHA = ?, LONGITUD = ?, LATUTUD = ?, FECHACAPTURA = ?, TIPO_DOMICILIO = ?, NIVEL_SOCIO = ?, CARACTERISTICAS = ?, FOTOUNO = ?, FOTODOS = ?, FOTOTRES = ?, FOTOCUATRO = ?, NOMBRE_ATIENDE = ?, CODIGO_ACCION = ?, ACCION = ?, ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String(B4XPages.MainPage.user, cb_resultado.SelectedItem, j.GetString("CO_RESULTADO"),cb_parentesco.SelectedItem, et_comentarios.Text, fecha_captura & " " & hora_captura, Starter.latitud, Starter.longitud, fecha_captura & " " & hora_captura, cb_vivienda.SelectedItem, cb_socioeconomico.SelectedItem, cb_caracteristicas.SelectedItem, nombrefoto, nombrefoto1, nombrefoto2, nombrefoto3, et_parentesco.Text, f.GetString("CO_ACCION"), cb_accion.SelectedItem, "2",cuenta)) Starter.skmt.ExecNonQuery2("delete from CHECADO WHERE CREDITO = ?",Array As String(cuenta)) Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?",Array As Object("Terminada","2",cuenta)) Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?",Array As Object("Terminada","2",cuenta)) @@ -1587,19 +1593,21 @@ Private Sub b_guardar_Click j.Position = 0 End If DateTime.DateFormat = "dd/MM/yyyy" + DateTime.TimeFormat = "HH:mm:ss" Dim fecha_captura As String = DateTime.Date(DateTime.Now) + Dim hora_captura As String = DateTime.Time(DateTime.Now) Log(fecha_captura) n = Starter.skmt.ExecQuery2("SELECT COUNT(*) AS REGISTRADO FROM HIST_VISITA WHERE CREDITO = ?",Array As String(cuenta)) n.Position = 0 If n.GetString("REGISTRADO") = 0 Then - Starter.skmt.ExecNonQuery2("INSERT INTO HIST_VISITA(CREDITO, VISITADOR, RESULTADO, CODIGO_RES, PARENTESCO, COMENTARIOS, FECHA, LONGITUD, LATUTUD, FECHACAPTURA, FECHA_PROMESA, MONTO_PROMESA, TIPO_DOMICILIO, NIVEL_SOCIO, CARACTERISTICAS, FOTOUNO, FOTODOS, FOTOTRES, FOTOCUATRO, NOMBRE_ATIENDE, CODIGO_ACCION, ACCION) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As String(cuenta, B4XPages.MainPage.user, cb_resultado.SelectedItem, j.GetString("CO_RESULTADO"),cb_parentesco.SelectedItem, et_comentarios.Text, fecha_captura, Starter.latitud, Starter.longitud, fecha_captura, b_fecharesultado.Text, et_monto.Text, cb_vivienda.SelectedItem, cb_socioeconomico.SelectedItem, cb_caracteristicas.SelectedItem, nombrefoto, nombrefoto1, nombrefoto2, nombrefoto3, l_nombreg.Text, f.GetString("CO_ACCION"), cb_accion.SelectedItem)) + Starter.skmt.ExecNonQuery2("INSERT INTO HIST_VISITA(CREDITO, VISITADOR, RESULTADO, CODIGO_RES, PARENTESCO, COMENTARIOS, FECHA, LONGITUD, LATUTUD, FECHACAPTURA, FECHA_PROMESA, MONTO_PROMESA, TIPO_DOMICILIO, NIVEL_SOCIO, CARACTERISTICAS, FOTOUNO, FOTODOS, FOTOTRES, FOTOCUATRO, NOMBRE_ATIENDE, CODIGO_ACCION, ACCION) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As String(cuenta, B4XPages.MainPage.user, cb_resultado.SelectedItem, j.GetString("CO_RESULTADO"),cb_parentesco.SelectedItem, et_comentarios.Text, fecha_captura & " " & hora_captura, Starter.latitud, Starter.longitud, fecha_captura & " " & hora_captura, b_fecharesultado.Text, et_monto.Text, cb_vivienda.SelectedItem, cb_socioeconomico.SelectedItem, cb_caracteristicas.SelectedItem, nombrefoto, nombrefoto1, nombrefoto2, nombrefoto3, l_nombreg.Text, f.GetString("CO_ACCION"), cb_accion.SelectedItem)) Starter.skmt.ExecNonQuery2("delete from CHECADO WHERE CREDITO = ?",Array As String(cuenta)) Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?",Array As Object("Terminada","2",cuenta)) Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?",Array As Object("Terminada","2",cuenta)) Else - Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET VISITADOR = ?, RESULTADO = ?, CODIGO_RES = ?, PARENTESCO = ?, COMENTARIOS = ?, FECHA = ?, LONGITUD = ?, LATUTUD = ?, FECHACAPTURA = ?, FECHA_PROMESA = ?, MONTO_PROMESA = ?, TIPO_DOMICILIO = ?, NIVEL_SOCIO = ?, CARACTERISTICAS = ?, FOTOUNO = ?, FOTODOS = ?, FOTOTRES = ?, FOTOCUATRO = ?, NOMBRE_ATIENDE = ?, CODIGO_ACCION = ?, ACCION = ?, ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String(B4XPages.MainPage.user, cb_resultado.SelectedItem, j.GetString("CO_RESULTADO"),cb_parentesco.SelectedItem, et_comentarios.Text, fecha_captura, Starter.latitud, Starter.longitud, fecha_captura, b_fecharesultado.Text, et_monto.Text, cb_vivienda.SelectedItem, cb_socioeconomico.SelectedItem, cb_caracteristicas.SelectedItem, nombrefoto, nombrefoto1, nombrefoto2, nombrefoto3, l_nombreg.Text, f.GetString("CO_ACCION"), cb_accion.SelectedItem, "2", cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET VISITADOR = ?, RESULTADO = ?, CODIGO_RES = ?, PARENTESCO = ?, COMENTARIOS = ?, FECHA = ?, LONGITUD = ?, LATUTUD = ?, FECHACAPTURA = ?, FECHA_PROMESA = ?, MONTO_PROMESA = ?, TIPO_DOMICILIO = ?, NIVEL_SOCIO = ?, CARACTERISTICAS = ?, FOTOUNO = ?, FOTODOS = ?, FOTOTRES = ?, FOTOCUATRO = ?, NOMBRE_ATIENDE = ?, CODIGO_ACCION = ?, ACCION = ?, ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String(B4XPages.MainPage.user, cb_resultado.SelectedItem, j.GetString("CO_RESULTADO"),cb_parentesco.SelectedItem, et_comentarios.Text, fecha_captura & " " & hora_captura, Starter.latitud, Starter.longitud, fecha_captura & " " & hora_captura, b_fecharesultado.Text, et_monto.Text, cb_vivienda.SelectedItem, cb_socioeconomico.SelectedItem, cb_caracteristicas.SelectedItem, nombrefoto, nombrefoto1, nombrefoto2, nombrefoto3, l_nombreg.Text, f.GetString("CO_ACCION"), cb_accion.SelectedItem, "2", cuenta)) Starter.skmt.ExecNonQuery2("delete from CHECADO WHERE CREDITO = ?",Array As String(cuenta)) Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?",Array As Object("Terminada","2",cuenta)) Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?",Array As Object("Terminada","2",cuenta)) @@ -1645,18 +1653,20 @@ Private Sub b_guardar_Click j.Position = 0 End If DateTime.DateFormat = "dd/MM/yyyy" + DateTime.TimeFormat = "HH:mm:ss" Dim fecha_captura As String = DateTime.Date(DateTime.Now) + Dim hora_captura As String = DateTime.Time(DateTime.Now) Log(fecha_captura) n = Starter.skmt.ExecQuery2("SELECT COUNT(*) AS REGISTRADO FROM HIST_VISITA WHERE CREDITO = ?",Array As String(cuenta)) n.Position = 0 If n.GetString("REGISTRADO") = 0 Then - Starter.skmt.ExecNonQuery2("INSERT INTO HIST_VISITA(CREDITO, VISITADOR, RESULTADO, CODIGO_RES, PARENTESCO, COMENTARIOS, FECHA, LONGITUD, LATUTUD, FECHACAPTURA, TIPO_DOMICILIO, NIVEL_SOCIO, CARACTERISTICAS, FOTOUNO, FOTODOS, FOTOTRES, FOTOCUATRO, NOMBRE_ATIENDE, CODIGO_ACCION, ACCION, DIAS_ACCION) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As String(cuenta, B4XPages.MainPage.user, cb_resultado.SelectedItem, j.GetString("CO_RESULTADO"),cb_parentesco.SelectedItem, et_comentarios.Text, fecha_captura, Starter.latitud, Starter.longitud, fecha_captura, cb_vivienda.SelectedItem, cb_socioeconomico.SelectedItem, cb_caracteristicas.SelectedItem, nombrefoto, nombrefoto1, nombrefoto2, nombrefoto3, l_nombreg.Text, f.GetString("CO_ACCION"), cb_accion.SelectedItem)) + Starter.skmt.ExecNonQuery2("INSERT INTO HIST_VISITA(CREDITO, VISITADOR, RESULTADO, CODIGO_RES, PARENTESCO, COMENTARIOS, FECHA, LONGITUD, LATUTUD, FECHACAPTURA, TIPO_DOMICILIO, NIVEL_SOCIO, CARACTERISTICAS, FOTOUNO, FOTODOS, FOTOTRES, FOTOCUATRO, NOMBRE_ATIENDE, CODIGO_ACCION, ACCION, DIAS_ACCION) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As String(cuenta, B4XPages.MainPage.user, cb_resultado.SelectedItem, j.GetString("CO_RESULTADO"),cb_parentesco.SelectedItem, et_comentarios.Text, fecha_captura & " " & hora_captura, Starter.latitud, Starter.longitud, fecha_captura & " " & hora_captura, cb_vivienda.SelectedItem, cb_socioeconomico.SelectedItem, cb_caracteristicas.SelectedItem, nombrefoto, nombrefoto1, nombrefoto2, nombrefoto3, l_nombreg.Text, f.GetString("CO_ACCION"), cb_accion.SelectedItem)) Starter.skmt.ExecNonQuery2("delete from CHECADO WHERE CREDITO = ?",Array As String(cuenta)) Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?",Array As Object("Terminada","2",cuenta)) Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?",Array As Object("Terminada","2",cuenta)) Else - Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET VISITADOR = ?, RESULTADO = ?, CODIGO_RES = ?, PARENTESCO = ?, COMENTARIOS = ?, FECHA = ?, LONGITUD = ?, LATUTUD = ?, FECHACAPTURA = ?, TIPO_DOMICILIO = ?, NIVEL_SOCIO = ?, CARACTERISTICAS = ?, FOTOUNO = ?, FOTODOS = ?, FOTOTRES = ?, FOTOCUATRO = ?, NOMBRE_ATIENDE = ?, CODIGO_ACCION = ?, ACCION = ?, ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String(B4XPages.MainPage.user, cb_resultado.SelectedItem, j.GetString("CO_RESULTADO"),cb_parentesco.SelectedItem, et_comentarios.Text, fecha_captura, Starter.latitud, Starter.longitud, fecha_captura, cb_vivienda.SelectedItem, cb_socioeconomico.SelectedItem, cb_caracteristicas.SelectedItem, nombrefoto, nombrefoto1, nombrefoto2, nombrefoto3, l_nombreg.Text, f.GetString("CO_ACCION"), cb_accion.SelectedItem,"2", cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET VISITADOR = ?, RESULTADO = ?, CODIGO_RES = ?, PARENTESCO = ?, COMENTARIOS = ?, FECHA = ?, LONGITUD = ?, LATUTUD = ?, FECHACAPTURA = ?, TIPO_DOMICILIO = ?, NIVEL_SOCIO = ?, CARACTERISTICAS = ?, FOTOUNO = ?, FOTODOS = ?, FOTOTRES = ?, FOTOCUATRO = ?, NOMBRE_ATIENDE = ?, CODIGO_ACCION = ?, ACCION = ?, ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String(B4XPages.MainPage.user, cb_resultado.SelectedItem, j.GetString("CO_RESULTADO"),cb_parentesco.SelectedItem, et_comentarios.Text, fecha_captura & " " & hora_captura, Starter.latitud, Starter.longitud, fecha_captura & " " & hora_captura, cb_vivienda.SelectedItem, cb_socioeconomico.SelectedItem, cb_caracteristicas.SelectedItem, nombrefoto, nombrefoto1, nombrefoto2, nombrefoto3, l_nombreg.Text, f.GetString("CO_ACCION"), cb_accion.SelectedItem,"2", cuenta)) Starter.skmt.ExecNonQuery2("delete from CHECADO WHERE CREDITO = ?",Array As String(cuenta)) Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?",Array As Object("Terminada","2",cuenta)) Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?",Array As Object("Terminada","2",cuenta)) diff --git a/B4XMainPage.bas b/B4XMainPage.bas index 21e66c4..cdeb214 100644 --- a/B4XMainPage.bas +++ b/B4XMainPage.bas @@ -114,7 +114,7 @@ Private Sub b_iniciar_Click Dim cmd As DBCommand cmd.Initialize - cmd.Name = "select_usuario_torra" + cmd.Name = "select_usuario_NT" cmd.Parameters = Array As Object(Usuario.Text, Contraseña.Text) reqManager.ExecuteQuery(cmd , 0, "usuario") user = Usuario.Text