Spanish [SOLUCIONADO]gran duda con tiempos del GPS

mvera

Active Member
Licensed User
Longtime User
Hola desarrolle una aplicacion que toma datos del gps y funciona bien.

El pero que vemos es que comparado con otras aplicacion que creo que no son B4A se demoran hasta el doble o el tripe en ubicar el dispositivo.

-En esta prueba hablamos del mismo smartphone
-en el mismo lugar físico.

Es como que mi aplicacion necesitara estar en un lugar mas abierto para apurar su localizacion


Sera problema de la libreria ?

Alguna pista.

Muchas gracias,
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola

Sin saber exactamente que codigo usas es dificil opinar. Prueba este codigo a ver que tarda

B4X:
Sub Process_Globals
Public Tiempo As Long
....

Sub Globals
Dim lm As LocationManager  ' libreria LocationManager
...


Sub Activity_Create(FirstTime As Boolean)
lm.Initialize("Localizacion")
...

Sub Activity_Resume
' poner en marcha ' puedes ponerlo en un boton
  tiempo= DateTime.Now
  lm.requestGPSLocation   ' usa gps
  lm.requestMobileLocation ' usa wifi, datos, gsm ...
....


' para parar, ponlo en un boton o en el Sub Activity_Pause (UserClosed As Boolean)
    lm.stopMobileListening
    lm.stopGPSListening
....

' para saber cuando se activa el evento
Sub Localizacion_LocationChanged (Longitude As Double, Latitude As Double, Altitude As Double, Accuracy As Float,Bearing As Float, Provider As String, Speed As Float, Time As Long)

Log("Tiempo transcurrido " & (DateTime.Now-Tiempo))
Log("Longitud " & Longitude & " Latitud " & Latitude)
...

De esta forma sabras exactamente cuantos milisegundos tarda

Se me olvidaba, quita todos los logs y los doevents de tu programa (puedes comentarlos) aunque no lo creas los log retrasan mucho la ejecución, y los doevents ya puse una información como en Android 6 lo relentizaba si estaba en un bucle


Saludos
 

Carlos marin

Active Member
Licensed User
Longtime User
HOLA mvera yo estoy pasando por algo parecido y es que en algunos celulares el chip gps tarda mucho en engancharse con el satelite, abría otro programa por ejemplo el pokemon go y de una mostraba la ubicación (revizaba el GPS y aun no enganchaba) así que me imagino que no solo están mostrando la ubicación por GPS sino también por la red wifi y torres del celular. mira este hilo aun no lo e probado por que estaba mirando lo de las imágenes en el mapa y eso, pero espero te sirva.
https://www.b4x.com/android/forum/threads/locationmanager-library.13337/
 

bgsoft

Well-Known Member
Licensed User
Longtime User

mvera

Active Member
Licensed User
Longtime User
hola descargue un ejemplo de la guía en ingles.

B4X:
#Region Module Attributes
    #FullScreen: False
    #IncludeTitle: True
    #ApplicationLabel: LocationManager
    #VersionCode: 1
    #VersionName:
    #SupportedOrientations: unspecified
    #CanInstallToExternalStorage: False
#End Region

'Activity module
Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'These variables can be accessed from all modules.

End Sub

Sub Globals
    'These global variables will be redeclared each time the activity is created.
    'These variables can only be accessed from this module.
    Dim lm As LocationManager

End Sub

Sub Activity_Create(FirstTime As Boolean)
    lm.Initialize("Location")
   
    Activity.AddMenuItem("Update location","mnuLocation")
    Activity.AddMenuItem("Stop Listening","mnuStopListening")
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Sub mnuLocation_Click
    lm.requestGPSLocation
End Sub

Sub mnuStopListening_Click
    lm.stopGPSListening
End Sub

Sub Location_LocationChanged (Longitude As Double, Latitude As Double, Altitude As Double, Accuracy As Float, Bearing As Float, Provider As String, Speed As Float, Time As Long)
    Msgbox("Longitude: " & Longitude & CRLF & "Latitude: " & Latitude & CRLF & "Altitude: " & Altitude & CRLF & "Accuracy: " & Accuracy & CRLF & "Bearing: " & Bearing & CRLF & "Speed: " & Speed,"Location")
End Sub

Sub Location_ProviderDisabled (Provider As String)
    Msgbox("Provider","Provider Disabled")
End Sub

Sub Location_ProviderEnabled (Provider As String)
    Msgbox("Provider","Provider Enabled")
End Sub

Sub Location_StatusChanged (Provider As String, Status As Int)
    Msgbox("Provider: " & Provider & CRLF & "Status: " & Status,"Status Changed")
End Sub


pero lo único que veo es un mensaje en la parte superior LocationManager y nada mas no muestra mi ubicación.

descargue la libreria 1.1


¿alguna idea?

saludos.
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola

Tanto en mi ejemplo como en el tuyo, eso lo coges de :

B4X:
Sub Localizacion_LocationChanged (Longitude As Double, Latitude As Double, Altitude As Double, Accuracy As Float,Bearing As Float, Provider As String, Speed As Float, Time As Long)

Log("Tiempo transcurrido " & (DateTime.Now-Tiempo))
Log("Longitud " & Longitude & " Latitud " & Latitude)   ' <-- Aqui tienes tu ubicación

Saludos
 

mvera

Active Member
Licensed User
Longtime User
gracias por responder.

si eso me queda claro , pero al ejecutar no me muestra ningun valor como si no funcionara.
le dare otra vuelta para ver si algo me falta.

gracias.
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola

pero al ejecutar no me muestra ningun valor como si no funcionara

Esto podria ser varias cosas, o que no has activado la ubicación, supongo que lo habras echo, pero a veces en lo mas facil caemos, que no estes en una zona donde recibas satélites (dentro de una casa), que no hayas puesto en el manifest el permiso para leer la ubicación, que dependiendo que versión la necesitas.
B4X:
' prueba con esta
AddPermission(android.permission.ACCESS_COARSE_LOCATION)

' si con la anterior no te funciona añade esta
AddPermission(android.permission.ACCESS_FINE_LOCATION)

Doy por echo que has activado la localización ( lm.requestGPSLocation ) es una obviedad, pero dependiendo de que movil y de que versión de Android tengas, no verás el menú y entonces no la activarás.
Puedes probar añadiendo esto en el manifest y quitando el antiguo
B4X:
<uses-sdk android:minSdkVersion="11" android:targetSdkVersion="19"/>

Puedes hacer una prueba rápida, en vez de activar lm.requestGPSLocation activa lm.requestMobileLocation, con esta aunque estes dentro de una casa cogerá la ubicación a traves de redes


Saludos
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola Mvera, pudiste solucionar el problema?, si es asi, podrias cambiar el titulo y ponerle [SOLUCIONADO]

Gracias

Saludos
 

mvera

Active Member
Licensed User
Longtime User
si gracias ahora si me funcion , al final ocupe :

<uses-sdk android:minSdkVersion="11" android:targetSdkVersion="19"/>

gracias nuevamente.
 

mvera

Active Member
Licensed User
Longtime User
hola debo decir que gusto mucho esta libreria ya que los tiempos se redujeron drasticamante.

el problema es que lo probe en un android 6 y se activa el siguiente sub:

Sub Location_ProviderDisabled (Provider As String)
Msgbox("Provider","Provider Disabled")
End Sub


Alguien sabe como solucionar esto?

Saludos
 

rscheel

Well-Known Member
Licensed User
Longtime User
hola debo decir que gusto mucho esta libreria ya que los tiempos se redujeron drasticamante.

el problema es que lo probe en un android 6 y se activa el siguiente sub:

Sub Location_ProviderDisabled (Provider As String)
Msgbox("Provider","Provider Disabled")
End Sub


Alguien sabe como solucionar esto?

Saludos

En android 6 necesitas tener runtime-permissions si tu android:targetSdkVersion es mayor a 22, si es menor no lo necesitas pero debes agregar en Manifest Editor la siguiente linea

B4X:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
 

mvera

Active Member
Licensed User
Longtime User
ok gracias lo probare.

actualmente lo tengo asi:

<uses-sdk android:minSdkVersion="11" android:targetSdkVersion="19"/>
 

mvera

Active Member
Licensed User
Longtime User
lo probe asi pero no me funciono:

B4X:
'This code will be applied to the manifest file during compilation.
'You do not need to modify it in most cases.
'See this link for for more information: https://www.b4x.com/forum/showthread.php?p=78136
AddManifestText(
<uses-sdk android:minSdkVersion="11" android:targetSdkVersion="19"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<supports-screens android:largeScreens="true"
    android:normalScreens="true"
    android:smallScreens="true"
    android:anyDensity="true"/>)
SetApplicationAttribute(android:icon, "@drawable/icon")
SetApplicationAttribute(android:label, "$LABEL$")
'End of default text.
 

dar2o3

Active Member
Licensed User
Longtime User
Añade esta linea al manifest:

B4X:
AddManifestText(<uses-feature android:name="android.hardware.location.gps"/>)
 

bgsoft

Well-Known Member
Licensed User
Longtime User
hola debo decir que gusto mucho esta libreria ya que los tiempos se redujeron drasticamante.

el problema es que lo probe en un android 6 y se activa el siguiente sub:

Sub Location_ProviderDisabled (Provider As String)
Msgbox("Provider","Provider Disabled")
End Sub


Alguien sabe como solucionar esto?

Saludos

Hola mvera:

En ese sub entra cuando activas el lm.requestGPSLocation o el lm.requestMobileLocation y tienes la ubicación parada. No es un error ni un problema de Android 6 u otra versión, entrará siempre que se cumpla lo que te he dicho.
Es el sub ideal para dar un aviso al usuario del tipo "Por favor, active la Ubicación" o incluso llevarlo a la zona de ajustes de ubicación.

Saludos
 
Top