Spanish (SOLUCIONADO) Detectar Versión Android? para Gmaps

TheFalcon

Active Member
Licensed User
Longtime User
Buenas y perdón, tengo un problema con version antigua la actualizar la app a mas moderna. Tengo una aplicación que usa Google Maps y pone un icono en ROJO o VERDE dependiendo de cuando ya a cogido señal GPS.

En versiones antigua me funcionaba sin problemas, en versiones modernas NO. modifico código y en Versiones Modernas coge satélites y en versiones antiguas ahora NO.

¿Cómo puedo detectar que versión de android o SDK es para que ejecute un código u otro?

la única diferencia es que en la versión moderna el GPS etc lo tengo en STARTER. y este cambio de código

MODERNO:
Sub Activity_Resume
    If Starter.GPS.GPSEnabled = False Then
        ToastMessageShow("Por Favor, Activa el GPS.", True)
        StartActivity(Starter.GPS.LocationSettingsIntent) 'Will open the relevant settings screen.
    Else
        Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_ACCESS_FINE_LOCATION)
        Wait For Activity_PermissionResult (Permission As String, Result As Boolean)
        If Result Then CallSubDelayed(Starter, "StartGPS")
    End If
    
End Sub
Antiguo:
Sub Activity_Resume
    If GPS.GPSEnabled = False Then
        ToastMessageShow("Debe Activar el GPS del Equipo.", True)
        StartActivity(GPS.LocationSettingsIntent) 'Will open the relevant settings screen.
    Else
        'GPS.Start(0, 0) 'Listen to GPS with no filters.
        GPS.Start(0, 0)
        
    End If
End Sub

en la versión antigua no tenia esta linea , en la moderna si

B4X:
Public Sub GpsStatus (Satellites As List)

    Dim sb As StringBuilder
    sb.Initialize
    sb.Append("Satellites:").Append(CRLF)
    For i = 0 To Satellites.Size - 1
        Dim Satellite As GPSSatellite = Satellites.Get(i)
        sb.Append(CRLF).Append(Satellite.Prn).Append($" $1.2{Satellite.Snr}"$).Append(" ").Append(Satellite.UsedInFix)
        sb.Append(" ").Append($" $1.2{Satellite.Azimuth}"$).Append($" $1.2{Satellite.Elevation}"$)
    Next
End Sub
 

edgar_ortiz

Active Member
Licensed User
Longtime User
Para obtener la versión del Sistema Operativo:

B4X:
'Phone Library = 2.51

Dim SysInfoPhone    As Phone
log(SysInfoPhone.SdkVersion)
 

drgottjr

Expert
Licensed User
Longtime User
oye halcon, a juzgar por tu version "moderna", parece que has pedido prestado el codigo de GPS tutorial ¿verdad?

¿funciona ese ejemplo? si funciona y luego has copiado fidelmente el codigo, ha de funcionar dentro de tu app. la logica manda, ¿no?

si no funciona el ejemplo (o si no has copiado el codigo exactamente), es alli donde debes empezar.

eso aparte, yo no veo como el problema tiene algo que ver con la version de android ni con gmaps (que usa sus propias funciones de localizacion).
si descargas el ejemplo del mago erel sobre gmaps, veras que ni se menciona el gps en el codigo b4a.

para mi, todo empieza con ese ejemplo sobre gps con el starter (en vez del codigo "vetusto" sin el). tambien me pregunto si hay alguna otra cosa que no has mencionado, pero por ahora basta saber si el ejemplo funciona bien en tu dispositivo.
 

TILogistic

Expert
Licensed User
Longtime User
Buenas y perdón, tengo un problema con version antigua la actualizar la app a mas moderna. Tengo una aplicación que usa Google Maps y pone un icono en ROJO o VERDE dependiendo de cuando ya a cogido señal GPS.

En versiones antigua me funcionaba sin problemas, en versiones modernas NO. modifico código y en Versiones Modernas coge satélites y en versiones antiguas ahora NO.

¿Cómo puedo detectar que versión de android o SDK es para que ejecute un código u otro?

la única diferencia es que en la versión moderna el GPS etc lo tengo en STARTER. y este cambio de código

MODERNO:
Sub Activity_Resume
    If Starter.GPS.GPSEnabled = False Then
        ToastMessageShow("Por Favor, Activa el GPS.", True)
        StartActivity(Starter.GPS.LocationSettingsIntent) 'Will open the relevant settings screen.
    Else
        Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_ACCESS_FINE_LOCATION)
        Wait For Activity_PermissionResult (Permission As String, Result As Boolean)
        If Result Then CallSubDelayed(Starter, "StartGPS")
    End If
  
End Sub
Antiguo:
Sub Activity_Resume
    If GPS.GPSEnabled = False Then
        ToastMessageShow("Debe Activar el GPS del Equipo.", True)
        StartActivity(GPS.LocationSettingsIntent) 'Will open the relevant settings screen.
    Else
        'GPS.Start(0, 0) 'Listen to GPS with no filters.
        GPS.Start(0, 0)
      
    End If
End Sub

en la versión antigua no tenia esta linea , en la moderna si

B4X:
Public Sub GpsStatus (Satellites As List)

    Dim sb As StringBuilder
    sb.Initialize
    sb.Append("Satellites:").Append(CRLF)
    For i = 0 To Satellites.Size - 1
        Dim Satellite As GPSSatellite = Satellites.Get(i)
        sb.Append(CRLF).Append(Satellite.Prn).Append($" $1.2{Satellite.Snr}"$).Append(" ").Append(Satellite.UsedInFix)
        sb.Append(" ").Append($" $1.2{Satellite.Azimuth}"$).Append($" $1.2{Satellite.Elevation}"$)
    Next
End Sub
creo que el problema es la versión de android de la marca del móvil.

En cuanto a GpsStatus es solo información de los satélites que esta usando o capturando el GPS.

desea usted saber esta información??
 

TILogistic

Expert
Licensed User
Longtime User
puede llamar a GpsStatus cuando capture su localizacion si lo desea:

ejemplo:

B4X:
Public Sub LocationChanged(Location1 As Location)
    lblLat.Text = "Lat = " & Location1.ConvertToMinutes(Location1.Latitude)
    lblLon.Text = "Lon = " & Location1.ConvertToMinutes(Location1.Longitude)
    lblSpeed.Text = $"Speed = $1.2{Location1.Speed} m/s "$
    
    Wait For GPS_GpsStatus (Satellites As List)
    Dim sb As StringBuilder
    sb.Initialize
    sb.Append("Satellites:").Append(CRLF)
    For i = 0 To Satellites.Size - 1
        Dim Satellite As GPSSatellite = Satellites.Get(i)
        sb.Append(CRLF).Append(Satellite.Prn).Append($" $1.2{Satellite.Snr}"$).Append(" ").Append(Satellite.UsedInFix)
        sb.Append(" ").Append($" $1.2{Satellite.Azimuth}"$).Append($" $1.2{Satellite.Elevation}"$)
    Next
    lblSatellites.Text = sb.ToString
End Sub
 

TheFalcon

Active Member
Licensed User
Longtime User
Para obtener la versión del Sistema Operativo:

B4X:
'Phone Library = 2.51

Dim SysInfoPhone    As Phone
log(SysInfoPhone.SdkVersion)
Gracias Edgar lo miro ahoramismo
oye halcon, a juzgar por tu version "moderna", parece que has pedido prestado el codigo de GPS tutorial ¿verdad?

¿funciona ese ejemplo? si funciona y luego has copiado fidelmente el codigo, ha de funcionar dentro de tu app. la logica manda, ¿no?

si no funciona el ejemplo (o si no has copiado el codigo exactamente), es alli donde debes empezar.

eso aparte, yo no veo como el problema tiene algo que ver con la version de android ni con gmaps (que usa sus propias funciones de localizacion).
si descargas el ejemplo del mago erel sobre gmaps, veras que ni se menciona el gps en el codigo b4a.

para mi, todo empieza con ese ejemplo sobre gps con el starter (en vez del codigo "vetusto" sin el). tambien me pregunto si hay alguna otra cosa que no has mencionado, pero por ahora basta saber si el ejemplo funciona bien en tu dispositivo.
drgottjr , si exactamente uso el ejemplo de erel, por que el modo en que yo cogía los satélites, la hice hace tiempo y con un dispositivo moderno no me daba la localización , siempre era 0,0. en cambio con la nueva versión de erel, si me da la localización el el nuevo y no en el antiguo. Voy a revisar lo que me comentas

puede llamar a GpsStatus cuando capture su localizacion si lo desea:

ejemplo:

B4X:
Public Sub LocationChanged(Location1 As Location)
    lblLat.Text = "Lat = " & Location1.ConvertToMinutes(Location1.Latitude)
    lblLon.Text = "Lon = " & Location1.ConvertToMinutes(Location1.Longitude)
    lblSpeed.Text = $"Speed = $1.2{Location1.Speed} m/s "$
   
    Wait For GPS_GpsStatus (Satellites As List)
    Dim sb As StringBuilder
    sb.Initialize
    sb.Append("Satellites:").Append(CRLF)
    For i = 0 To Satellites.Size - 1
        Dim Satellite As GPSSatellite = Satellites.Get(i)
        sb.Append(CRLF).Append(Satellite.Prn).Append($" $1.2{Satellite.Snr}"$).Append(" ").Append(Satellite.UsedInFix)
        sb.Append(" ").Append($" $1.2{Satellite.Azimuth}"$).Append($" $1.2{Satellite.Elevation}"$)
    Next
    lblSatellites.Text = sb.ToString
End Sub
Oparra, Gracias, lo del GPSStatus lo puse por que en la versión moderna de Erel venia puesto, yo solo necesito saber el estado del GPS por que si latitud y longitud es 0 , tengo restringido el guardar ubicaciones. Solo permite guardar una ubicación cuando hay coordenadas.
 
Top