• Qué hacer si el GPS no encuentra satélites en Android. Cómo comprobar el GPS tú mismo en Android

    09.02.2017 14:36:00

    En uno de los artículos analizamos la cuestión de cómo hacer un control remoto de TV a partir de un teléfono inteligente.

    Es difícil encontrar un teléfono inteligente que no esté equipado con un módulo GPS. Incluso los dispositivos más económicos tienen instalada esta útil herramienta de navegación. No importa qué modelo sea su teléfono inteligente si necesita obtener direcciones o averiguar la ubicación en un lugar desconocido. Para activar el GPS en su teléfono inteligente, no necesita ningún conocimiento especial: presiona el botón derecho y todo funciona. Pero no todo el mundo sabe cómo configurar el GPS en Android para que la batería del smartphone no se sobrecargue.

    Te contaremos las principales etapas de la configuración del GPS, y también te recomendaremos varias aplicaciones de Android con las que podrás comprobar el funcionamiento del módulo GPS.


    El GPS no se inicia automáticamente en su teléfono inteligente. Para habilitarlo y configurarlo, debe profundizar un poco en la configuración. En cada versión de Android, la ruta de activación es un poco diferente. Veremos los pasos principales para habilitar y configurar el GPS en un teléfono inteligente con Android 6.0 Marshmallow.

    Etapa 1: encendido

    Para activar el GPS, deslice la pantalla de notificaciones hacia abajo y haga clic en la barra que muestra la hora, la fecha y la carga de la batería. Debe hacer clic en el ícono de ajustes, después de lo cual se lo dirigirá a Configuración. Además, podrás acceder a la configuración a través del botón correspondiente en el menú general. Busque la sección Datos personales y haga clic en el botón Ubicación. En la parte superior de la pantalla habrá un interruptor que activa el GPS.

    Etapa 2: Configuración

    De forma predeterminada, la ubicación del teléfono inteligente se determina a partir de todas las fuentes. Se utilizan datos de GPS, Wi-Fi, Bluetooth y redes móviles para determinar con precisión la ubicación con una precisión de 10 a 15 metros. Esta función garantiza una alta confiabilidad de la geolocalización; sin embargo, tenga en cuenta que este modo ejerce mucha presión sobre la batería del teléfono inteligente. Por lo tanto, en la configuración puedes elegir uno de dos modos económicos:

    • Por coordenadas de red
    • Por satélites GPS

    El primer modo utiliza sólo Wi-Fi, Bluetooth y datos de redes móviles. Es necesario que el teléfono inteligente esté conectado a Internet a través de Wi-Fi o que el usuario inicie el modo Bluetooth. Sin conexión de red, la ubicación del teléfono inteligente está determinada por la señal de la estación base.

    Si no hay acceso a Internet y la torre de radio más cercana está a varias decenas de kilómetros de distancia, entonces conviene habilitar la geolocalización mediante satélites GPS.

    Una vez encendido y configurado el GPS de su teléfono inteligente, podrá instalar de forma segura la aplicación de navegador para Android. El navegador más cómodo y funcional que puedes elegir es .

    Para comprobar cómo funciona el GPS en su teléfono inteligente, puede descargar una aplicación especial de la tienda Google Play. Veremos tres programas disponibles para descarga gratuita. Para que funcionen correctamente es necesario salir a la calle.

    Otros teléfonos inteligentes Fly
    Todos los modelos de teléfonos Fly los puedes encontrar en nuestra tienda online.

    Prueba de GPS AndroidTS gratuita

    Versión del sistema operativo: Android 3.0 o posterior
    Descargar

    La aplicación funciona con los principales sistemas de navegación rusos y extranjeros: GPS, GLONASS, QZSS, BeiDou Satellite Compass, GoogleMaps, OSMDroid OpenStreetMap, BingMap, Yandex. Mapas, Test de mapas, AGPS, MGRS Maidenhead WGS84 Xtra data Datum GPS/KM VMG. Sin salir de casa, podrás conocer tus coordenadas exactas. La funcionalidad principal de la aplicación se concentra en 6 elementos del menú:

    • Brújula
    • Mapa de satélites en órbita.
    • Datos satelitales
    • Datos de ruta
    • Navegador de mapas detallado
    • tabla de puntos de referencia

    Prueba de GPS

    Versión del sistema operativo: Android 4.0 o posterior
    Descargar

    La aplicación permite comprobar la calidad de la recepción de la señal GPS, soportando los sistemas de geolocalización de satélites GPS, GLONASS, GALILEO, SBAS, Beidou y QZSS.

    La información completa de la prueba de GPS se muestra en seis pantallas principales:

    1. Señal GPS (SNR). Un gráfico que muestra la intensidad de la señal de cada satélite, así como la precisión y el estado de la red GNSS.
    2. Posiciones de satélites en el cielo.
    3. Ubicación actual del usuario. Se muestra con coordenadas en el mapa mundial. Se anota la posición del sol y la curva de transición entre el día y la noche. La pantalla se puede utilizar como navegador.
    4. Brújula de pantalla
    5. Velocidad actual, rumbo y altitud.
    6. Hora actual de lectura del GPS y hora local en la zona horaria actual, así como datos de salida y puesta del sol para una ubicación determinada.

    La desventaja es la falta de idioma ruso. Por otro lado, la interfaz de la aplicación es fácil de aprender.

    Lea todo sobre cómo habilitar el GPS en Android, configurarlo y verificar su funcionalidad. Y también formas de solucionar problemas si el GPS no funciona. En casi todos los teléfonos modernos puedes encontrar un sistema de navegación GPS. Se utiliza en aplicaciones para buscar direcciones, llamar a taxis y entregar pedidos en línea. Y estas son sólo algunas de las oportunidades que ofrece la navegación por satélite. Si desea utilizar todas las opciones disponibles del teléfono inteligente, es obligatorio utilizar el GPS para Android.

    ¿Cómo habilitar la ubicación GPS en Android?

    Si desea utilizar todas las funciones de navegación, primero debe activar el módulo. La forma más sencilla de hacerlo es si se coloca la opción “Ubicación” en la cortina, que se baja desde la parte superior de la pantalla deslizando el dedo. Luego sólo necesitas hacer clic en el icono para activar la búsqueda de satélites.

    Averigüemos cómo activar el GPS en Android:

    1. Vaya al menú principal de su teléfono inteligente, donde se recopilan todas las aplicaciones. Seleccione el icono "Configuración" y haga clic en él.
    2. De la lista, seleccione "Ubicación".
    3. Vaya a la sección "Modo". De las opciones sugeridas, marque "Por todas las fuentes".

    Si le basta con una determinación aproximada de las coordenadas, puede seleccionar el elemento "Por satélites GPS". En algunos modelos de teléfonos inteligentes, la utilidad "Ubicación" ha sido reemplazada por "Geodatos". Tenga en cuenta que la palanca junto a esta función está en estado activo (resaltada).

    Configuración general de navegación en Android

    Ya hemos mencionado brevemente diferentes modos de navegación. Ahora vale la pena echarles un vistazo más de cerca:

    1. El modo de alta precisión ("En todas las fuentes") se implementa mediante el módulo A-GPS. Esta opción sólo se puede encontrar en los teléfonos inteligentes modernos. Cuando se selecciona este modo, el espacio será monitoreado constantemente para detectar presencia de señal. La navegación funciona igual de bien en interiores y exteriores. El teléfono en este modo se comunica rápidamente con los satélites.
    2. El “ahorro de batería” no utiliza el módulo GPS. En este caso, se pierde precisión, ya que en el interior la ubicación está determinada por la señal de Wi-Fi y en el exterior, por las torres de telefonía móvil.
    3. “Mediante sensores del dispositivo”: en este caso, la geolocalización solo funcionará en áreas abiertas, ya que el módulo solo recibirá una señal del satélite. Esta es una opción precisa, pero muy inconveniente. Ahora apenas lo usan.

    Si no necesita navegar por el bosque ni medir la actividad física, simplemente seleccione el modo de ahorro de batería. Obtendrá un resultado aceptable, que es suficiente para ejecutar la mayoría de las aplicaciones. Para aplicaciones que requieren alta precisión para funcionar, puede habilitar temporalmente el modo Alta precisión. Tenga en cuenta que esta batería se agota excesivamente.

    Cómo comprobar y configurar el GPS en un teléfono inteligente

    Si no está satisfecho con la calidad de la determinación de coordenadas o el receptor no funciona en absoluto, debe verificar y configurar el módulo. Para hacer esto, primero habilite el módulo de ubicación y luego aplique funciones adicionales.

    Usando la prueba de GPS

    Uno de los métodos de depuración más accesibles son las utilidades especiales. Todas las acciones en ellos ocurren automáticamente. Uno de los mejores programas es GPS Test. Averigüemos cómo verificar el GPS en Android usándolo.

    1. Abre la aplicación y mira la barra de estado en la parte superior. Si dice 3D Fix, entonces el módulo funciona bien. Si se escribe No Fix, es necesario configurar el módulo y no se determina la ubicación. Se produce un cambio constante de estados cuando hay mala señal del satélite o cuando estás en interiores.
    2. Si la barra de estado está apagada, entonces no ha encendido el receptor.

    No puede configurar el receptor usando este programa. Sólo registra los datos recibidos. La utilidad le permite descubrir:

    • coordenadas de ubicación exacta;
    • número de satélites visibles e información sobre ellos;
    • proporciona datos sobre la zona horaria en la ubicación del suscriptor, la altitud sobre el nivel del mar en este punto, las horas de salida y puesta del sol.

    Esta aplicación se puede utilizar como brújula electrónica. Combinado con un módulo de navegación, le permitirá navegar por áreas abiertas. Usando GPS Test y la sección de configuración, puede habilitar el módulo si esto no se pudo hacer de la manera estándar. Active todos los métodos de obtención de coordenadas para una alta precisión de geoposicionamiento.

    Usamos el menú de ingeniería.

    Úselo bajo su propio riesgo. Si es un usuario inexperto o valora mucho su dispositivo, es mejor no acceder a la configuración. Primero debe obtener derechos de Root para su teléfono inteligente. Entonces el problema de cómo configurar el GPS para Android se soluciona de la siguiente manera:

    1. Active el GPS y el Wi-Fi, salga al balcón o siéntese en el alféizar de una ventana abierta. La mejor opción para configurar a través del menú de ingeniería es colocar al usuario en un área abierta, en la calle.
    2. Llame al menú de ingeniería de uno de los comandos *#*#3646633*#*#, o *#15963#*, o *#*#4636#*#*. Si las combinaciones enumeradas no le convienen, puede seleccionar la adecuada utilizando la utilidad Mobileuncle ToolHero.
    3. Tenga en cuenta que el menú de ingeniería está en inglés. Por tanto, será difícil para quienes no conozcan este idioma afrontarlo. En la ventana que se abre, verás varias secciones. Desplácese hacia la izquierda hasta la opción Ubicación, desplácese hacia abajo hasta Servicio basado en ubicación.
    4. Vaya a la pestaña EPO, en ella debe colocar marcadores junto a los elementos Habilitar EPO y Descarga automática. Si la ruta EPO no está activa en su dispositivo, entonces necesita descargar el archivo del mismo nombre para que la información sobre la ruta de vuelo y la ubicación del satélite aparezca en el dispositivo.
    5. Usa la flecha para regresar. Seleccione YGPS y abra la pestaña Satélites. Verás un diagrama de la ubicación de los satélites, estarán inactivos y resaltados en rojo. El dispositivo los ve, pero no puede conectarse.
    6. Vaya a la sección Información y haga clic en la palabra Completo. Después de 2 segundos, active el reinicio AGPS.
    7. Regrese a la pestaña Satélites, su dispositivo se conectará a los satélites y los puntos cambiarán de color a verde. Si estás cerca de una ventana o en un balcón, el cambio de color no se producirá para todos los acompañantes.
    8. Reinicie su dispositivo para obtener una señal más fuerte.

    Esto completa la configuración del GPS en Android, después de estas manipulaciones el módulo debería funcionar normalmente.

    ¿Qué hacer si el GPS no funciona?

    Si las manipulaciones no ayudaron y aún así no pudo habilitar la geolocalización, entonces debe encontrar la causa de la falla y eliminarla. Primero, verifique la configuración estándar, pruebe el dispositivo usando utilidades y el menú de ingeniería.

    Causas de fallas

    Si el GPS no funciona en Android, las razones pueden ser:

    1. Fallos de hardware: el módulo falló debido a un impacto mecánico en el cuerpo del teléfono inteligente o a la entrada de líquido en la placa principal. En casos raros, se produce una falla de hardware debido a componentes de baja calidad.
    2. Fallos de software: daños al controlador del módulo debido a que el dispositivo está infectado con virus, problemas que surgen al actualizar el software o firmware del dispositivo.

    Primero debes entender por qué el módulo no funciona. Una vez que haya determinado la causa de la avería, puede comenzar a solucionarla.

    resolución de problemas

    Si no puede habilitar la "Ubicación", primero debe verificar la configuración del módulo y reiniciar el dispositivo. A menudo, el problema ocurre cuando la RAM está sobrecargada, lo que provoca que la memoria sea insuficiente para que el módulo funcione. Intente cambiar el modo de funcionamiento del módulo a la opción "Solo redes móviles". Si la geolocalización funciona después de esto, entonces el problema está en el controlador o en el hardware. La imposibilidad de cambiar el modo de uso del dispositivo se produce cuando falla el flasheo.

    Si el módulo falla después de cambiar el firmware, es necesario restaurar la versión de fábrica del sistema operativo. Para hacer esto, mantenga presionadas las teclas de volumen y encendido al mismo tiempo. Después de 5 a 7 segundos, aparecerá el modo de recuperación en la pantalla. Desde su menú, seleccione el elemento y confirme su decisión con la tecla "Apagar". Luego debe seleccionar Reiniciar sistema ahora y esperar a que se encienda el dispositivo.

    Puede calibrar el módulo después de una falla usando la utilidad de configuración Essential. Se distribuye de forma gratuita a través de la tienda oficial de aplicaciones. Coloque su teléfono inteligente sobre una superficie plana, abra la aplicación y presione el botón Probar. Las manipulaciones se realizan automáticamente.

    Si todos los procedimientos realizados no ayudan, no podrá solucionar el problema por su cuenta. En este caso, comuníquese con el centro de servicio para reemplazar el módulo. Ahora ya sabes todo acerca de la configuración y operación del módulo GPS en teléfonos inteligentes, comparte la información con tus amigos. Si tienes alguna pregunta, puedes hacerla en los comentarios.

    ¿Por qué es necesaria la navegación?

    Hace un par de décadas, la gente común no usaba la navegación, pero en Estados Unidos, los desarrolladores descubrieron cómo usarla en la vida cotidiana. Ahora la gente corriente puede utilizar el GPS para resolver diversos problemas cotidianos:

    • encuentra un camino en el bosque;
    • navegar por cualquier ciudad del mundo;
    • encuentre las direcciones y objetos necesarios cerca de usted;
    • evitar la congestión del tráfico;
    • registre su propia actividad física y velocidad de movimiento.

    Al mismo tiempo, el uso de la navegación en aplicaciones tiene un inconveniente: la batería del teléfono se agota más rápido. Esto es especialmente notable en dispositivos que utilizan un módulo estándar. Los teléfonos inteligentes modernos están equipados con el complemento A-GPS, que reduce los recursos para la búsqueda de satélites. La batería se descarga más lentamente y, después de iniciar, el sistema determina rápidamente la ubicación del dispositivo. El uso de redes satelitales y móviles para obtener información le permite determinar las coordenadas con mayor precisión.


    ejemplo de rastreador (15)


    Si no necesita la actualización en un momento en que se pierde la solución, puede modificar la solución de Stephen Daye para tener un método que verifique si la solución está presente.

    Por lo tanto, puede verificarlo cuando necesite datos de GPS y no necesite este GpsStatus.Listener.

    "Variables globales:

    Ubicación privada, última ubicación conocida; privado largo lastKnownLocationTimeMillis = 0; booleano privado isGpsFix = false;

    Este es un método que se llama dentro de "onLocationChanged()" para recordar la hora de actualización y la ubicación actual. Además actualiza "isGpsFix":

    Private void handlePositionResults(Ubicación) (if(ubicación == null) return; lastKnownLocation = ubicación; lastKnownLocationTimeMillis = SystemClock.elapsedRealtime(); checkGpsFix(); // opcional)

    Se llama a este método cada vez que necesito saber si hay una posición de GPS:

    CheckGpsFix booleano privado())( if (SystemClock.elapsedRealtime() - lastKnownLocationTimeMillis< 3000) { isGpsFix = true; } else { isGpsFix = false; lastKnownLocation = null; } return isGpsFix; }

    En mi implementación, primero ejecuto checkGpsFix() y si el resultado es correcto, uso la variable "lastKnownLocation" como mi posición actual.

    ¿Cómo comprobar el estado actual del receptor GPS? Ya probé el método onStatusChanged de LocationListener pero de alguna manera no parece funcionar, o simplemente es la capacidad incorrecta.

    Básicamente, solo necesito saber si el ícono de GPS en la parte superior de la pantalla parpadea (sin solución real) o está fijo (solución disponible).

    Entonces, probemos una combinación de todas las respuestas y actualizaciones y hagamos algo como esto:

    • Agregue el permiso ACCESS_FINE_LOCATION a su manifiesto
    • Obtenga una instancia del sistema LocationManager
    • Cree un GpsStatus.Listener que responda a GPS_EVENT_SATELLITE_STATUS
    • Registre un oyente con LocationManager usando addGpsStatusListener

    Un receptor GPS podría verse así:

    GpsStatus.Listener oyente = new GpsStatus.Listener() ( void onGpsStatusChanged(int event) ( if (event == GPS_EVENT_SATELLITE_STATUS) ( GpsStatus status = mLocManager.getGpsStatus(null); Iterable sats = estado.getSatellites(); // Verifique el número de satélites en la lista para determinar el estado de reparación) ) )

    Las API no están un poco claras sobre cuándo y qué información de GPS y satélite se proporciona, pero creo que la idea es ver cuántos satélites hay disponibles. Si está por debajo de tres, entonces no puedes arreglarlo. Si es más entonces deberías tener una solución.

    Probablemente sea una prueba y error para determinar con qué frecuencia Android reporta información satelital e información sobre cada objeto GpsSatellite.

    Puede que me equivoque, pero parece que la gente se está desviando del tema.

    Sólo necesito saber si el ícono de GPS en la parte superior de la pantalla parpadea (no hay solución real)

    Esto es fácil de hacer con

    LocationManager lm = (LocationManager) getSystemService(LOCATION_SERVICE); gps_on booleano = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);

    Para saber si tiene una solución confiable, las cosas se complican un poco más:

    Clase pública lo que extienda Actividad ( LocationManager lm; Ubicación loc; public void onCreate(Bundle saveInstanceState) ( super.onCreate(savedInstanceState); setContentView(R.layout.main); lm = (LocationManager) getSystemService(LOCATION_SERVICE); loc = null; request_updates(); ) private void request_updates() ( if (lm.isProviderEnabled(LocationManager.GPS_PROVIDER)) ( // El GPS está habilitado en el dispositivo, así que agreguemos un loopback para este administrador de ubicación lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,0, 0, locationListener); ) ) LocationListener locationListener = new LocationListener() ( public void onLocationChanged(Ubicación) ( // Cada vez que se cambia la ubicación asignamos loc loc = ubicación; ) // Los necesitamos incluso si no hacen nada. No puedo recuerda por qué public void onProviderDisabled (String arg0) () public void onProviderEnabled (proveedor de cadena) () public void onStatusChanged (proveedor de cadena, estado int, extras del paquete) ());

    ¿Ahora cuando quieres saber si estás arreglado?

    If (loc != null)( // Nuestra ubicación ha cambiado al menos una vez, bla.....)

    Si quieres ser elegante, siempre puedes tener un tiempo de espera usando System.currentTimeMillis() y loc.getTime()

    Funciona de manera confiable en al menos N1 con 2.1.

    Desafortunadamente, el nuevo miembro no pudo comentar ni votar; sin embargo, lo que Stephen Daye hizo arriba fue la solución perfecta para el mismo problema con el que estaba buscando ayuda.

    pequeño cambio en la siguiente línea:

    < 3000;

    IsGPSFix = (SystemClock.elapsedRealtime() - mLastLocationMillis)< (GPS_UPDATE_INTERVAL * 2);

    principalmente porque estoy haciendo un juego lento y mi intervalo de actualización ya está establecido en 5 segundos, una vez que la señal del GPS se apaga durante más de 10 segundos, que es el momento adecuado para publicar algo.

    Saludos amigo, pasé unas 10 horas intentando resolver esta solución antes de encontrar tu publicación :)

    Al encontrar un problema similar mientras trabajaba en mi proyecto de maestría, parece que la respuesta de Daye informó erróneamente "sin solución" mientras el dispositivo permanece en una ubicación estática. Modifiqué un poco la solución, que parece funcionar bien para mí en una ubicación estática. No sé cómo afectará esto a la batería, ya que no es mi problema principal, pero así es como lo hice al volver a solicitar actualizaciones de ubicación cuando llega el momento de solucionarlo.

    La clase privada MyGPSListener implementa GpsStatus.Listener ( public void onGpsStatusChanged(int event) ( switch (event) ( case GpsStatus.GPS_EVENT_SATELLITE_STATUS: if (Global.getInstance().currentGPSLocation != null) ( if((SystemClock.elapsedRealtime() - mLastLocationMillis )< 20000) { if (!hasGPSFix) Log.i("GPS","Fix Acquired"); hasGPSFix = true; } else { if (hasGPSFix) { Log.i("GPS","Fix Lost (expired)"); lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 10, locationListener); } hasGPSFix = false; } } break; case GpsStatus.GPS_EVENT_FIRST_FIX: Log.i("GPS", "First Fix/ Refix"); hasGPSFix = true; break; case GpsStatus.GPS_EVENT_STARTED: Log.i("GPS", "Started!"); break; case GpsStatus.GPS_EVENT_STOPPED: Log.i("GPS", "Stopped"); break; } } }

    Después de años de trabajar con GPS en dispositivos móviles con Windows, me di cuenta de que el concepto de "perder" una posición de GPS puede ser subjetivo. Para simplemente escuchar lo que dice el GPS, agregar NMEAListener y analizar la oración le indicará si la solución fue "válida" o no. Consulte http://www.gpsinformation.org/dale/nmea.htm#GGA. Desafortunadamente, con algunos dispositivos GPS, este valor fluctuará hacia adelante y hacia atrás incluso durante el curso normal de una operación de "buena reparación".

    Entonces, otra solución es comparar la hora UTC de la ubicación GPS con la hora del teléfono (convertida a UTC). Si son diferentes a la diferencia horaria, puedes asumir que has perdido tu posición GPS.

    Sé que es un poco tarde. Sin embargo, ¿por qué no utilizar NMEAListener si desea ver si tiene una solución? Por lo que he leído, NMEAListener te proporcionará oraciones NMEA y desde allí seleccionarás la oración correcta.

    La cláusula RMC contiene un estado de confirmación que es A para OK o V para advertencia. La oferta de GGA contiene Fix Quality (0 no válido, 1 GPS o 2 DGPS)

    No puedo ofrecerles ningún código Java porque recién estoy comenzando con Android, pero he creado una biblioteca de GPS en aplicaciones C# de Windows que usaré con Xamarin. Acabo de encontrar este hilo porque estaba buscando información sobre el proveedor.

    Por lo que he leído hasta ahora sobre el objeto Ubicación, no me gusta mucho lo relacionado con métodos como getAccuracy() y hasAccuracy(). Estoy acostumbrado a extraer oraciones HDOP y VDOP de oraciones NMEA para determinar qué tan precisas son mis correcciones. Es bastante común tener una solución pero tener un HDOP pésimo, lo que significa que su precisión horizontal no es muy buena. Por ejemplo, sentado en su escritorio depurando un dispositivo GPS Bluetooth externo que está muy opuesto a una ventana, lo más probable es que obtenga una solución, pero un HDOP y VDOP muy deficientes. Coloque el dispositivo GPS en una maceta al aire libre o algo similar, o agregue una antena externa al GPS e inmediatamente obtenga buenos valores HDOP y VDOP.

    tantos mensajes...

    GpsStatus.Listener gpsListener = new GpsStatus.Listener() ( public void onGpsStatusChanged(int event) ( if(event == GpsStatus.GPS_EVENT_FIRST_FIX)( showMessageDialog("GPS arreglado"); ) ) );

    agregando este código, con addGpsListener... showMessageDialog... solo muestra un cuadro de diálogo estándar con la línea

    hizo el trabajo perfectamente para mí :) Muchas gracias : =) (lo siento por esta publicación, no pude votar todavía)

    Como desarrollador de SpeedView: Velocímetro GPS para Android, tuve que probar todas las soluciones posibles a este problema, todas con el mismo resultado negativo. Repitamos lo que no funciona:

    1. onStatusChanged() no se llama en Eclair y Froyo.
    2. Por supuesto, contar simplemente todos los satélites disponibles es inútil.
    3. Verificar que cualquiera de los satélites devuelva verdadero para usedInFix() tampoco es muy útil. Aparentemente, el sistema pierde la solución, pero continúa informando que todavía usa múltiples satélites.

    Así que aquí está la única solución funcional que encontré y la que realmente uso en mi aplicación. Digamos que tenemos esta clase simple que implementa GpsStatus.Listener:

    La clase privada MyGPSListener implementa GpsStatus.Listener ( public void onGpsStatusChanged(int event) ( switch (event) ( case GpsStatus.GPS_EVENT_SATELLITE_STATUS: if (mLastLocation != null) isGPSFix = (SystemClock.elapsedRealtime() - mLastLocationMillis)< 3000; if (isGPSFix) { // A fix has been acquired. // Do something. } else { // The fix has been lost. // Do something. } break; case GpsStatus.GPS_EVENT_FIRST_FIX: // Do something. isGPSFix = true; break; } } }

    Bien, ahora en onLocationChanged() agregaremos lo siguiente:

    @Override public void onLocationChanged(Ubicación) ( if (ubicación == null) return; mLastLocationMillis = SystemClock.elapsedRealtime(); // Haz algo. mLastLocation = ubicación; )

    Eso es todo. Básicamente, esta es la línea que lo hace todo:

    IsGPSFix = (SystemClock.elapsedRealtime() - mLastLocationMillis)< 3000;

    Por supuesto, puede ajustar el valor de milis, pero sugeriría configurarlo entre 3 y 5 segundos.

    Esto realmente funciona, y aunque no he mirado el código fuente que dibuja el ícono de GPS personalizado, se acerca a replicar su comportamiento. Espero que esto ayude a alguien.

    Si solo necesita saber si hay una solución, verifique la última ubicación conocida proporcionada por el receptor GPS y verifique el valor .getTime() para ver cuántos años han pasado. Si es lo suficientemente reciente (como unos segundos), tienes una solución.

    LocationManager lm = (LocationManager)context.getSystemService(LOCATION_SERVICE); Ubicación loc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); // Obtener la hora de la última corrección long lastFixTimeMillis = loc.getTime();

    Y finalmente compare esto con la fecha y hora actual (¡en UTC!). Si es lo suficientemente reciente, tienes una solución.

    Hago esto en mi aplicación y funciona muy bien hasta ahora.

    Bueno, como resultado, cada enfoque de trabajo dará como resultado esto (también se aplica al obsoleto GpsStatus.Listener):

    Private GnssStatus.Callback mGnssStatusCallback; @GpsStatus.Listener privado obsoleto mStatusListener; LocationManager privado mLocationManager; @Override public void onCreate () (MlocationManager = (LocationManager) getSystemService (ubicación_service); mlocationManager = (ubicación) , this); ) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) ( mGnssStatusCallback = new GnssStatus.Callback() ( @Override public void onSatelliteStatusChanged(GnssStatus status) ( SatelliteStatusChanged(); ) @Override public void onFirstFix (int ttffMillis) ( gpsFixAcquired(); ) ); mLocationManager.registerGnssStatusCallback(mGnssStatusCallback); ) else ( mStatusListener = new GpsStatus.Listener() ( @Override public void onGpsStatusChanged(int evento) ( switch (evento) ( case GpsStatus.GPS_EVENT_SATELLITE_STAT EE. UU.: SatelliteStatusChanged(); break; case GpsStatus.GPS_EVENT_FIRST_FIX: // Haz algo. gpsFixAcquired(); break; ) ); mLocationManager.addGpsStatusListener(mStatusListener); ) ) private void gpsFixAcquired() ( // Haz algo. isGPSFix = true; ) private void SatelliteStatusChanged() ( if (mLastLocation != null) isGPSFix = (SystemClock.elapsedRealtime() - mLastLocationMillis)< (GPS_UPDATE_INTERVAL * 2); if (isGPSFix) { // A fix has been acquired. // Do something. } else { // The fix has been lost. // Do something. } } @Override public void onLocationChanged(Location location) { if (location == null) return; mLastLocationMillis = SystemClock.elapsedRealtime(); mLastLocation = location; } @Override public void onStatusChanged(String s, int i, Bundle bundle) { } @Override public void onProviderEnabled(String s) { } @Override public void onProviderDisabled(String s) { }

    Nota: Esta respuesta es una combinación de las respuestas anteriores.

    El icono de GPS parece cambiar de estado según la intención de transmisión recibida. Puede cambiar su estado usted mismo utilizando los siguientes ejemplos de código:

    Informar que el GPS está activado:

    Intención intención = nueva Intención ("android.location.GPS_ENABLED_CHANGE"); intent.putExtra("habilitado", verdadero); enviarBroadcast(intención);

    Notificar que el GPS está recibiendo correcciones:

    Intención intención = nueva Intención ("android.location.GPS_FIX_CHANGE"); intent.putExtra("habilitado", verdadero); enviarBroadcast(intención);

    Informar que el GPS ya no recibe correcciones:

    Intención intención = nueva Intención ("android.location.GPS_FIX_CHANGE"); intent.putExtra("habilitado", falso); enviarBroadcast(intención);

    Informar que el GPS está desactivado:

    Intención intención = nueva Intención ("android.location.GPS_ENABLED_CHANGE"); intent.putExtra("habilitado", falso); enviarBroadcast(intención);

    Código de ejemplo para registrar un receptor:

    // MyReceiver debe extender BroadcastReceiver MyReceiver Receiver = new MyReceiver(); Filtro IntentFilter = nuevo IntentFilter ("android.location.GPS_ENABLED_CHANGE"); filter.addAction("android.ubicación.GPS_FIX_CHANGE"); registrarReceptor(receptor, filtro);

    Una vez que reciba estas transmisiones, puede notar cambios en el estado de su GPS. Sin embargo, sólo se le notificará si el estado cambia. Por lo tanto, no es posible determinar el estado actual utilizando estos intents.

    Establecer un intervalo de tiempo para buscar una solución no es una buena opción. Me di cuenta que onLocationChanged no se llama si no te mueves..lo cual es comprensible, ya que la ubicación no cambia :)

    Lo mejor sería:

    • comprobar el intervalo de la última ubicación recibida (en gpsStatusChanged)
    • si este intervalo es mayor que 15 con la variable dada: long_interval = true
    • elimine el receptor de ubicación y agréguelo nuevamente; generalmente, después de esto obtendrá una posición actualizada si la ubicación está realmente disponible; de ​​lo contrario, probablemente haya perdido la ubicación.
    • en onLocationChanged simplemente establecerá long_interval en falso.

    Aunque hay un gran conjunto de soluciones arriba, nadie ha mencionado com.koushikdutta.ion: https://github.com/koush/ion

    Él también asincrónico Y muy simple en uso:

    Ion.with(contexto) .load("http://example.com/thing.json") .asJsonObject() .setCallback(nuevo FutureCallback () ( @Override public void onCompleted(Exception e, resultado de JsonObject) ( // hacer cosas con el resultado o error ) ));

    Hoy en día, todos los modelos de teléfonos inteligentes y tabletas con Android tienen módulos de navegación. Cuando hablamos de navegación, nos referimos a la capacidad que tiene un dispositivo de localizar su ubicación mediante señales de satélites GPS. Esto le permite utilizar programas como el navegador, con la ayuda del cual se trazan rutas óptimas a lo largo de la ruta.

    Hoy en día existe una amplia selección de programas para dispositivos Android que realizan funciones de navegador. A continuación entraremos en detalle sobre cómo encender correctamente el módulo GPS, configurarlo y comprobar su funcionalidad para que posteriormente tu navegador Android funcione con la mayor precisión posible. Por supuesto, puedes prescindir de configuraciones adicionales. Los dispositivos Android modernos están totalmente adaptados para el trabajo y, para utilizar una tableta o un teléfono inteligente como navegador, basta con iniciar la aplicación adecuada. Pero si dedicas unos minutos a configurar el funcionamiento del módulo GPS, podrás utilizar la batería de forma más económica y, en general, obtener mejores resultados con la aplicación de Android.

    Teléfonos inteligentes Wileyfox

    Primero, hagamos una breve reseña del teléfono inteligente Wileyfox Swift 2 Plus. Se trata de un dispositivo potente y moderno con un atractivo diseño elegante y un precio extremadamente asequible. La marca Wileyfox apareció en el mercado en octubre de 2015. Sus productos atrajeron inmediatamente la atención de usuarios y expertos. Para lograr tal éxito, la empresa dotó a sus modelos de una serie de ventajas importantes: ·

    • Modo doble SIM
    • Trabajar en redes 4G LTE
    • Versión original del sistema operativo Android: firmware del sistema operativo Cyanogen
    • Materiales y componentes de alta calidad.
    • Diseño moderno y elegante
    • Alto rendimiento
    • Precio atractivo.

    Los productos de la marca también fueron apreciados por los expertos. Así, en diciembre de 2015, el modelo Wileyfox Swift, según la revista Forbes, se convirtió en el smartphone del año. Dos meses después, Wileyfox ganó el primer lugar en los prestigiosos British Mobile News Awards 2016 en la categoría Challenger de fabricante del año. Y en octubre de 2016, Wileyfox Spark+ se convirtió en la mejor opción entre los teléfonos inteligentes de menos de 10 mil rublos, según el prestigioso recurso de Internet Hi-Tech Mail.ru.

    Wileyfox Swift 2 Plus

    El modelo de teléfono inteligente tiene un cuerpo delgado de aleación de aluminio extremadamente elegante y cómodo. Esto lo hacía liviano, fácil de usar y muy duradero. Wileyfox Swift 2 Plus está construido sobre la base de un potente y productivo procesador Snapdragon 430 MSM8937 de 8 núcleos con una arquitectura de 64 bits y una frecuencia de 1,4 GHz. El sistema operativo es el firmware Cyanogen 13.1 original, que se basa en el sistema operativo Android 6.0.1. El dispositivo recibió 3 GB de RAM y 32 GB de memoria interna (admite tarjetas microSDXC de hasta 64 GB).

    El dispositivo está equipado con una pantalla IPS HD de 5 pulgadas y 2,5D de alta calidad con bordes curvados. Como la mayoría de los teléfonos inteligentes modernos, hay un escáner de huellas dactilares, tecnología NFC, módulos GLONASS, GPS y A-GPS (que le permite utilizar el dispositivo como navegador). Wileyfox Swift 2 Plus tiene una potente cámara principal de 16 MP y una excelente cámara frontal de 8 MP. El hardware admite la tecnología de carga rápida Quick Charge 3.0.

    Configurar el funcionamiento del GPS

    Inicialmente, necesitas activar el módulo GPS de tu dispositivo Android. Sin esto, el programa de navegación no podrá determinar con precisión la ubicación y funcionar correctamente. Para conectar el módulo GPS, debe ir a la sección "Ubicación" en el menú "Configuración" y seleccionar una de las opciones de conexión propuestas. Inicialmente, el dispositivo Android está configurado de tal manera que determine la ubicación utilizando todos los canales disponibles. Se trata de una señal de satélites GPS, datos de redes móviles, así como información de redes Wi-Fi y Bluetooth. Esto le permite determinar con precisión el punto donde se encuentra actualmente su dispositivo Android. Sin embargo, la alta precisión garantizada de la geolocalización provoca un mayor consumo de energía y la batería de su dispositivo Android se agotará muy rápidamente.

    La forma más rápida y económica de navegar es determinar las coordenadas GPS utilizando datos de la red celular. Al mismo tiempo, el error al determinar la ubicación es alto y, además, si no hay conexión a la red, no funcionará en absoluto. Se pueden obtener datos más precisos de los satélites GPS. Para configurar el modo de funcionamiento óptimo de los módulos de navegación y las aplicaciones de Android, deje activados los modos para determinar las coordenadas utilizando una señal de red celular y satélites GPS.

    El modo de ubicación de red utiliza datos recibidos de torres de telefonía móvil, redes Wi-Fi y Bluetooth. Este método es más relevante cuando se conecta un dispositivo Android a Internet. Sin conexión a Internet, la ubicación estará determinada únicamente por los datos de las torres de comunicación. Y si se encuentra a una distancia considerable de la estación base más cercana, la precisión para determinar las coordenadas será muy aproximada.

    Si no hay conexión a Internet, es mejor utilizar adicionalmente la señal del satélite GPS para obtener las coordenadas más precisas. Por cierto, si utilizas tu smartphone como navegador, algunas aplicaciones crean rutas basándose en señales de satélites GPS. Una vez que hayas habilitado y configurado los módulos de navegación de tu dispositivo Android, podrás comprobar su funcionamiento. Para hacer esto, puede utilizar aplicaciones especiales gratuitas para Android. Recuerde: el funcionamiento de un dispositivo con señales de GPS es más eficaz en espacios abiertos. Para comprobarlos y probarlos, es mejor salir a la calle.

    Prueba de GPS

    Si el navegador de su dispositivo Android es inestable, utilice esta aplicación para comprobar la calidad de la recepción de la señal satelital por parte del módulo GPS. Se admiten todos los sistemas de geolocalización habituales (satélites GPS, GLONASS, GALILEO, SBAS, Beidou y QZSS). La interfaz de la aplicación está representada por seis pantallas de información, en las que se proporciona al usuario toda la información necesaria:

    • Señal de satélite GPS en forma de gráfico que muestra la intensidad de la señal de cada satélite recibido por el dispositivo. También se muestra información sobre el estado de la red.
    • Una pantalla que muestra la ubicación actual de los satélites.
    • Coordenadas exactas del dispositivo. La aplicación muestra tanto las coordenadas mismas como el punto en el mapa mundial. Además, en esta pantalla podrás ver el límite entre el día y la noche en el planeta. Esta opción bien se puede utilizar como navegador.
    • Compass es otra pantalla funcional de la aplicación.
    • Una pantalla que muestra la velocidad del movimiento, su dirección y altitud sobre el nivel del mar.
    • Pantalla de datos horarios: zona horaria actual, datos de salida y puesta del sol, etc.

    Vale la pena recalcar que esta es una de las aplicaciones para Android más descargadas. Su ventaja es que GPS Test se puede utilizar como un simple navegador. Las desventajas incluyen la falta de un menú en ruso. Sin embargo, la simplicidad intuitiva de la interfaz le permite ignorar este inconveniente.

    Prueba de GPS AndroidTS gratuita

    La aplicación está diseñada específicamente para dispositivos Android equipados con módulos de navegación. Con el programa, puede realizar una prueba completa del funcionamiento de los módulos GPS o utilizarlo como un navegador simple para determinar su ubicación. Para que la aplicación funcione correctamente es necesario salir del edificio a un espacio abierto. La aplicación de Android es compatible con todos los sistemas de navegación modernos.

    Conclusión

    Para que la aplicación de navegador de su dispositivo Android funcione de la forma más precisa y correcta posible, es importante configurar correctamente el funcionamiento de los módulos GPS. También merece la pena descargar una de las aplicaciones para probar las funciones de navegación de su smartphone. Además, estas aplicaciones también se pueden utilizar como un navegador simple: determinarán su ubicación de manera rápida y precisa.

    Los teléfonos inteligentes modernos tienen módulos de navegación integrados de forma predeterminada. En la mayoría de los casos funcionan con bastante precisión. Simplemente active el GPS en Configuración, inicie la aplicación Mapas y en cuestión de minutos el programa determinará dónde se encuentra. Y si no apagaste el GPS, la determinación tardará unos segundos.

    ¿Pero qué pasa si el GPS no funciona? ¿Cómo entonces determinar la ruta, la velocidad, su ubicación? No hay necesidad de apresurarse a llevar su teléfono inteligente a reparar: la mayoría de las veces esto se puede resolver configurando el teléfono correctamente.

    Servicios auxiliares

    Además del propio receptor de satélite, las configuraciones auxiliares a veces son muy útiles para determinar su ubicación. Como regla general, se habilitan fácilmente en el propio teléfono:

    • A-GPS. Este servicio descarga sus datos de ubicación de Internet utilizando datos de las redes celulares a las que está conectado. Por supuesto, su precisión es mucho menor, pero acelera la determinación precisa de los satélites.
    • Wifi. ¿No sabías que también puedes determinar tu ubicación utilizando datos de redes Wi-Fi?
    • EPO. Sin embargo, más sobre esto a continuación.

    Cuando la personalización es necesaria: una curiosidad de Mediatek

    Hoy en día, Mediatek (también conocido como MTK) es uno de los líderes en la producción de procesadores móviles. Incluso gigantes como Sony, LG o HTC crean hoy teléfonos inteligentes con procesadores MTK. Pero hubo un tiempo en el que los procesadores de esta empresa taiwanesa se utilizaban sólo en clones pobres de iPhone o en marcadores de doble SIM.

    En 2012-2014, Mediatek lanzó conjuntos de chips bastante decentes, pero constantemente tenían un problema: el GPS no funcionaba correctamente. Los satélites con tales dispositivos se comportan según la cita: "Soy difícil de encontrar, fácil de perder..."

    Se trataba de la configuración del servicio auxiliar de la EPO. Este servicio, desarrollado por Mediatek, ayuda a calcular de antemano las órbitas de los satélites de navegación. Pero aquí está el problema: ¡los datos EPO predeterminados en los teléfonos chinos están diseñados para Asia y fallan cuando se usan en Europa!

    Esto se puede solucionar fácilmente en los modelos modernos. Te recordamos que todas estas instrucciones sólo son aptas para smartphones con procesadores MTK:

    • Abra el menú de configuración de Android
    • Vaya a la sección "Hora" y configure su zona horaria manualmente. Esto es necesario para evitar la ubicación de la red por tiempo.
    • Vaya a la sección "Mi ubicación", permita que el sistema acceda a los datos geográficos, marque las casillas de verificación "Por satélites GPS" y "Por coordenadas de red".
    • Usando un administrador de archivos, vaya al directorio raíz de la memoria y elimine el archivo GPS.log y otros archivos con la combinación GPS en el nombre. No es un hecho que estén ahí.
    • Descargue e instale la aplicación MTK Engineering Mode Start, que le permite iniciar sesión en su teléfono inteligente (https://play.google.com/store/apps/details?id=com.themonsterit.EngineerStarter&hl=ru).

    • Diríjase a un área abierta con buena visibilidad. No debe haber edificios altos ni otros objetos alrededor que obstruyan la visión directa del cielo. Internet debe estar encendido en el teléfono inteligente.
    • Inicie la aplicación, seleccione Configuración MTK, en ella, la pestaña Ubicación, en ella, el elemento EPO. Como habrás adivinado, ¡actualizamos los datos de EPO para NUESTRA zona horaria y hora!
    • Haga clic en el botón EPO (Descargar). La descarga debería realizarse en segundos incluso con una conexión débil.
    • Regrese a la sección Ubicación, seleccione la pestaña YGPS. En la pestaña Información, presione los botones Frío, Tibio, Caliente y Lleno en secuencia. Con su ayuda, se actualiza la información sobre la ubicación de los satélites en órbita, por lo que cada vez hay que esperar a que se carguen los datos. Afortunadamente, es cuestión de segundos.

    • En la misma pestaña, haga clic en el botón Reiniciar AGPS. El servicio de soporte AGPS ahora tendrá en cuenta los datos ya descargados y determinará con mayor precisión la posición de los satélites.
    • Vaya a la pestaña NMEA LOG adyacente y haga clic en el botón Iniciar. Después de eso, vaya a la pestaña Satélites. Verás como el sistema detecta satélites. Este proceso debería tardar entre 15 y 20 minutos, durante los cuales los iconos de los satélites cambiarán de rojo a verde. Asegúrese de que la pantalla no se apague durante este tiempo o, mejor aún, desactive el modo de suspensión por completo. Cuando todos (o la mayoría) de los satélites se pongan verdes, regrese a la pestaña Registro NMEA y haga clic en Detener.
    • Reinicie su teléfono inteligente.

    Sí, este está lejos de ser el procedimiento más sencillo. Dependiendo de la versión del procesador MTK (describimos los pasos para la plataforma MT6592), el procedimiento puede diferir ligeramente, pero esencialmente sigue siendo el mismo. Pero después de estos pasos, el GPS de su teléfono inteligente funcionará muy bien.