Spanish [solucionado]ayuda, ¿como dejar funcionando un servicio con la APP en suspesión?

dataware

Member
Licensed User
hola buenos días a todos.
mi aplicación esta con un timer, que cada 5 minutos manda la ubicación de mi movil a mi base de datos.
¿como puedo hacer que este se ejecute mientras mi equipo esta suspendido?
bueno, que siga el gps dando la ubicación actual y a la ves el timer se siga ejecutando.

Saludos y gracias de antemano
(que tengan un buen comienzo de semana)
:)
 

bgsoft

Well-Known Member
Licensed User
Longtime User

Descartex

Well-Known Member
Licensed User
Longtime User
Buenos días, si ya me lo decía mi padre.

-Hijo, si no eres piloto ¿por que corres? :D
Queremos pasar de hacer el "Hola Mundo" a hacer el Candy Crush...
;) Somos unos calientes...:rolleyes:
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola

Todos tenemos lapsus, lo positivo de esto es que has intentado ayudar, si no ayudas ten por seguro que no te equivocas, solo se equivocan los que hacen cosas, los que solo miran dificilmente se equivocaran, asi que creo que no tiene mayor importancia lo que te pasó, ojalá hubiese mas gente en este foro que por ayudar se equivocara.

Saludos
 

dataware

Member
Licensed User
B4X:
'Main
StartServiceAt(GpsActivo, DateTime.Now + minutos * DateTime.TicksPerMinute, True)
'Servicio
#Region  Service Attributes
    #StartAtBoot: true
    #StartCommandReturnValue: android.app.Service.START_STICKY
  
#End Region

Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'These variables can be accessed from all modules.
    Public GPS As GPS
    Public lat As String
    Public lon As String
End Sub

Sub Service_Create
    GPS.Initialize("GPS")
End Sub

Sub Service_Start (StartingIntent As Intent)
    minutos = 1
    Main.request.Download2("http://xxx/gps/WS/send_position.php", Array As String( "lat", lat, "lon", lon, "user", "test"))
End Sub
Sub GPS_LocationChanged (Parametro As Location)
    lat = Parametro.Latitude
    lon = Parametro.Longitude
End Sub
Sub Service_Destroy

End Sub
Sub JobDone (Job As HttpJob)
  
    Dim confirmar As String
    confirmar = Job.GetString
  
    If Job.Success = True Then
        Select Job.JobName
            Case "request"
                ToastMessageShow("L.L Registrado", True)
        End Select
    Else
        'Log("Error: " & Job.ErrorMessage)
        ToastMessageShow("N.L.L Detected", True)
    End If
    Job.Release
End Sub

estoy haciendo pruebas pero no me manda ubicación ya que estoy con un gps_changed.
manda vació, no se como capturar ubicación actual sin tener que moverme.
con la aplicación cerrada se guardo 2 veces la ubicación vacía. osea 1 por minuto supuestamente.

estando fuera de la aplicación me dice que se "detuvo la app" 2 veces. y al tiempo después se repite.

muchas gracias de antemano.
saludos a todos y que estén muy bien =)
 
Last edited:

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola

Emplea la libreria LocationManager , tienes que te puede dar la localización tanto por gps como por triangulación de wifi, gprs, gsm... y es muy precisa, y lo mejor es que si estas en un edificio cubierto vas a tener ubicación por que la cogerá como te he dicho del resto que no es gps. Y aunque no te muevas te dará los datos de ubicación.

estando fuera de la aplicación me dice que se "detuvo la app" 2 veces. y al tiempo después se repite.
Esto te ocurre por que varias cosas:
Estas haciendo esto Main.request.Download2
No has declarado esto Sub JobDone (Job AsHttpJob)

Por otro lado si quieres que cada x tiempo te diga la localización, en el Sub Service_Start (StartingIntent AsIntent) , tendrias que volver a llamar al servicio con:
B4X:
StartServiceAt("", DateTime.Now + Minutos * DateTime.TicksPerMinute, True) ‘ para minutos

StartServiceAt("", DateTime.Now + Segundos * DateTime. TicksPerSecond, True) ‘ para segundos

Mirate este tutorial:
https://www.b4x.com/android/forum/threads/b4a-tutorial-módulos-de-servicio.42689/

Pero ten en cuenta que el evento de la libreria LocationManager se producirá cuando la ubicación cambie, igual puedes emplear ese evento para hacer lo que te interese en vez de llamar al servicio cada x tiempo.


Saludos
 

dataware

Member
Licensed User
muchísimas gracias Jesús. me funciono :)
gracias a todos por su ayuda.
que tengan un excelente día
:D
 
Top