Para acabar el día, os traigo traducido el Tutorial Oficial GPS en Español para Basic4Android, característica muy importante en la mayoría de dispositivos Android y que gracias a Basic4Android es muy facil de programar. En este tutorial, os vamos a enseñar como mostrar la posición actual por GPS y el estado de los satelites a los que esta conectado el dispositivo Android.
La funcionalidad para poder acceder al GPS del dispositivo Android viene dada por la librería GPS, por lo que lo primero que tenemos que hacer es añadir una referencia a la misma.
Dentro de la librería GPS existen tres objetos relevantes, siendo el más importante de ellos el objeto GPS ya que es el que gestiona la conexión y los eventos del mismo. El segundo de ellos es Location (Posición), es una estructura que contiene los datos de nuestra posición. Los datos que contiene Location principalmente son las coordenadas de Latitud y Longitud, el tiempo y la Altitud a la que nos encontramos, recordando de nuevo que todos ellos dependen de la cobertura GPS que tengamos en ese momento. Con el objeto Location se incluyen también otras funcionalidades con las que podemos calcular la distancia entre dos rutas distintas, entre nuestra posición y otro punto, el cambio de las coordenadas a otros formatos, etc..
Aunque normalmente se utiliza con eventos el objeto Location, como pueda ser LocationChanged (Si hemos cambiado de lugar), también se puede utilizar tal y como dijimos, para calcular rutas entre dos puntos sin tener que estar en funcionamiento el GPS (Que no la librería).
El tercer y último objeto relevante es GPSSatellite, donde podemos obtener el estado de los satélites.
Volviendo al objeto GPS, este debe de ser declarado en Process_Global, ya que si no en caso contrario, deberemos de declararlo cada vez que vayamos a utilizarlo.
El primer paso es iniciar el objeto GPS, utilizando el parámetro Initialize.
Aquí un ejemplo completo sacado del tutorial original:
El siguiente paso es decirle al GPS que se "ponga a escuchar los datos", por lo que hemos creado el evento LocatedChanged para ello. Recordar que el GPS activado de continuo puede consumir excesiva batería, y que para ello nos recomiendan utilizar tanto Activity_Resume como Activity_Pause.
También nos recuerdan que el usuario ha podido desactivar el GPS bien por temas de consumo, como de privacidad, por lo que nos recomiendan preguntar al usuario en el caso de que se encuentre desactivado si quiere activarlo, esto se hace con el siguiente código:
Si el GPS esta activa este comenzara a procesar / escuchar los datos, los que obtiene de dos valores, minimum time (milisegundos) y minimum distance (metros), generándose un evento cuando uno de los dos ha cambiado de valor (Cosa que podemos aprovechar para ahorrar batería en nuestro programa de alguna manera).
El objeto GPS plantea / tiene tres eventos:
La funcionalidad para poder acceder al GPS del dispositivo Android viene dada por la librería GPS, por lo que lo primero que tenemos que hacer es añadir una referencia a la misma.
Dentro de la librería GPS existen tres objetos relevantes, siendo el más importante de ellos el objeto GPS ya que es el que gestiona la conexión y los eventos del mismo. El segundo de ellos es Location (Posición), es una estructura que contiene los datos de nuestra posición. Los datos que contiene Location principalmente son las coordenadas de Latitud y Longitud, el tiempo y la Altitud a la que nos encontramos, recordando de nuevo que todos ellos dependen de la cobertura GPS que tengamos en ese momento. Con el objeto Location se incluyen también otras funcionalidades con las que podemos calcular la distancia entre dos rutas distintas, entre nuestra posición y otro punto, el cambio de las coordenadas a otros formatos, etc..
Aunque normalmente se utiliza con eventos el objeto Location, como pueda ser LocationChanged (Si hemos cambiado de lugar), también se puede utilizar tal y como dijimos, para calcular rutas entre dos puntos sin tener que estar en funcionamiento el GPS (Que no la librería).
El tercer y último objeto relevante es GPSSatellite, donde podemos obtener el estado de los satélites.
Volviendo al objeto GPS, este debe de ser declarado en Process_Global, ya que si no en caso contrario, deberemos de declararlo cada vez que vayamos a utilizarlo.
El primer paso es iniciar el objeto GPS, utilizando el parámetro Initialize.
Aquí un ejemplo completo sacado del tutorial original:
PHP:
Sub Process_Globals
Dim GPS1 As GPS
End Sub
Sub Globals
Dim lblLon As Label
Dim lblLat As Label
Dim lblSpeed As Label
Dim lblSatellites As Label
End Sub
Sub Activity_Create(FirstTime As Boolean)
If FirstTime Then
GPS1.Initialize("GPS")
End If
Activity.LoadLayout("1")
End Sub
Sub Activity_Resume
If GPS1.GPSEnabled = False Then
ToastMessageShow("Please enable the GPS device.", True)
StartActivity(GPS1.LocationSettingsIntent) 'Will open the relevant settings screen.
Else
GPS1.Start(0, 0) 'Listen to GPS with no filters.
End If
End Sub
Sub Activity_Pause (UserClosed As Boolean)
GPS1.Stop
End Sub
Sub GPS_LocationChanged (Location1 As Location)
lblLat.Text = "Lat = " & Location1.ConvertToMinutes(Location1.Latitude)
lblLon.Text = "Lon = " & Location1.ConvertToMinutes(Location1.Longitude)
lblSpeed.Text = "Speed = " & Location1.Speed
End Sub
Sub GPS_UserEnabled (Enabled As Boolean)
ToastMessageShow("GPS device enabled = " & Enabled, True)
End Sub
Sub GPS_GpsStatus (Satellites As List)
lblSatellites.Text = "Satellites:" & CRLF
For i = 0 To Satellites.Size - 1
Dim Satellite As GPSSatellite
Satellite = Satellites.Get(i)
lblSatellites.Text = lblSatellites.Text & CRLF & Satellite.Prn & _
" " & Satellite.Snr & " " & Satellite.UsedInFix & " " & Satellite.Azimuth _
& " " & Satellite.Elevation
Next
End Sub
El siguiente paso es decirle al GPS que se "ponga a escuchar los datos", por lo que hemos creado el evento LocatedChanged para ello. Recordar que el GPS activado de continuo puede consumir excesiva batería, y que para ello nos recomiendan utilizar tanto Activity_Resume como Activity_Pause.
También nos recuerdan que el usuario ha podido desactivar el GPS bien por temas de consumo, como de privacidad, por lo que nos recomiendan preguntar al usuario en el caso de que se encuentre desactivado si quiere activarlo, esto se hace con el siguiente código:
PHP:
Sub Activity_Resume
If GPS1.GPSEnabled = False Then
ToastMessageShow("Please enable the GPS device.", True)
StartActivity(GPS1.LocationSettingsIntent) 'Will open the relevant settings screen.
Else
GPS1.Start(0, 0) 'Listen to GPS with no filters.
End If
End Sub
Si el GPS esta activa este comenzara a procesar / escuchar los datos, los que obtiene de dos valores, minimum time (milisegundos) y minimum distance (metros), generándose un evento cuando uno de los dos ha cambiado de valor (Cosa que podemos aprovechar para ahorrar batería en nuestro programa de alguna manera).
El objeto GPS plantea / tiene tres eventos:
- GPS_LocationChanged (Location1 As Location): Evento principal, contiene los datos de la nueva localización.
- GPS_GpsStatus (Satellites As List):Este evento permite mostrar información sobre los satélites actualmente disponibles. Tenemos que tener en cuenta que no todos los satélites en la lista son realmente utilizados para el cálculo del ejemplo anterior. Por lo tanto, es posible que la lista se incluyen varios satélites, pero la recepción no es lo suficientemente bueno para una buena localización.
- GPS_UserEnabled (Enabled As Boolean): Este evento se produce cuando el usuario cambia el estado del dispositivo GPS.
Enlace al Tutorial Original en Ingles:
http://www.b4x.com/forum/basic4android-getting-started-tutorials/6592-gps-tutorial.html
Enlace al Tutorial Original en Español:
Basic4Android - Tutorial Oficial GPS en Español | Historias de un Cazique
Attachments
Last edited: