android - tracker - Obtener coordenadas de GPS más rápido programáticamente sin internet, pero usando un proveedor de red y GPS móvil
obtener direccion android studio (3)
Me he referido a muchas preguntas sobre este tema, pero parece que faltan algunos de mis requisitos:
- Quiero obtener la ubicación del GPS con una precisión de
~0.0001
- No quiero usar internet; Aunque la red GSM / CDMA está bien
- Debe obtenerse programáticamente cuando se inicia la aplicación
- Debería ser más rápido, digamos dentro de un minuto (como el iPhone, que probablemente también funcione en el modo Avión).
- El código debería funcionar en la mayoría de los dispositivos.
- El teléfono puede encenderse / apagarse en cualquier momento y viajar a cualquier distancia
¿Hay alguna forma de obtener solo las coordenadas con los requisitos mencionados anteriormente? Cualquier fragmento de código de ejemplo será muy apreciado.
Verificando varias aplicaciones como "Locate Me", "Maverick", que dicen mostrar ubicaciones sin conexión. Pero en varios escenarios sin internet, no dan seguimiento a la ubicación (en India).
He referido muchas preguntas viejas / nuevas dentro / fuera SO. A continuación se muestran algunos:
- ¿Es posible tener la ubicación de gps sin conexión con el nexus 7?
- ¿El GPS requiere internet?
- ¿Cómo obtener la ubicación exacta actual en Android sin conexión a Internet?
[Nota: Estoy haciendo esta pregunta en nombre de mi equipo de Android y me complacerá aclarar los detalles si se me solicita. Si crees que esta publicación pertenece a Android.Stackexchange, muévela amablemente.]
La sugerencia es utilizar los servicios de ubicación de Google. Se necesita la ubicación más precisa y precisa posible en el momento actual. Automáticamente (con la configuración, por supuesto) también tiene la mejor precisión actual, sea cual sea el GPS, la red, Internet, GSM / CDMA / LTE disponibles ... También cobra la última ubicación conocida, así que, básicamente, lo sabe en todo momento: lo mejor. usted puede.
Por supuesto, debe darse cuenta de que cada servicio proporciona su propia precisión y en su propio tiempo. Mire, por ejemplo, la aplicación de prueba GPS en Android y vea cómo la precisión aumenta con el tiempo y los satélites usados.
Además, los servicios de ubicación son buenos para usted porque simplemente proporciona coordenadas, tal como lo solicitó y esconde mucho trabajo para determinar qué servicio real debe usar según el tiempo y la precisión. Sin embargo, por supuesto, si ninguno de los servicios en su dispositivo y ubicación en particular puede darle la precisión requerida, entonces no hay manera de obtenerlo. Es por eso que los servicios también brindan medición de precisión.
Aquí hay otro link
Use la API de ubicación fusionada proporcionada por el SDK de Android. Implemente la ubicación fusionada en un Servicio y llámela a la aplicación MainActivity.
1. Quiero obtener la ubicación del GPS con una precisión de ~ 0.0001
Solo puede escuchar al proveedor de GPS y descartar una ubicación cuando no tenga la precisión mínima que desea:
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 5, myLocationListener); // "myLocationListener" must be an object from a class that implements LocationListener
// "myLocationListener" implementation of LocationListener.onLocationChanged
public void onLocationChanged(Location location)
{
int MIN_ACCURACY = 5; // in metters
if ((!location.hasAccuracy()) || (location.getAccuracy() > MIN_ACCURACY))
{
// discard this location and keep listening to new location readings
}
else
{
// that''s a good reading!
// do somethings you want... blah, blah, blah...
// stop updates when you get the location to preserve users'' battery.
locationManager.removeUpdates(myLocationListener);
}
}
2. No quiero usar internet; Aunque la red GSM / CDMA está bien
Sí, el GPS funciona totalmente fuera de línea. Android puede utilizar SOLO Internet para actualizar el caché de datos de A-GPS y proporcionar lecturas más rápidas en las actualizaciones de arranque en frío.
3. Debería obtenerse programáticamente cuando se inicia la aplicación
Luego llame al elemento locationManager.requestLocationUpdates
en el evento onCreate de mainActivity.
4. Debería ser más rápido, por ejemplo, dentro de un minuto (como el iPhone, que probablemente también funcione en el modo Avión).
Tenga en cuenta que el iPhone funciona con "hardware de alta calidad". Android se puede ejecutar en dispositivos de mierda. Así que dependerá de:
- La calidad del hardware del dispositivo;
- La cantidad de satélites que son visibles en el cielo en ese momento;
- La edad de los datos de almanaque y efemérides en el caché de gps;
- El GPS puede no leer los satélites porque el usuario está dentro de un edificio o algo así.
5. El código debería funcionar en la mayoría de los dispositivos.
¿Cuál es la API de Android más antigua que quieres que ejecute?
6. El teléfono puede encenderse / apagarse en cualquier momento y viajar a cualquier distancia
No lo entendi ¿Cuál es su preocupación acerca de esto?
-------------------------------------------------- ----------------------------
Actualización 1:
"... me gustaría usar Android 4.0 y superior ..."
He probado las funciones de GPS desde dispositivos Android 2.3 a 5.0. Todo funciona muy bien en todos ellos.
"... He observado que 1 aplicación de demostración basada en coordenadas geográficas que funcionaba en otros dispositivos, no funciona en mi LGG3 con Android 5.0. ¿Alguna idea al respecto? ..."
¿Revisaste los permisos de GPS en la configuración de Android? (Tal vez esté deshabilitado) ¿O puede ser un problema de hardware? ¿Lo intentaste en otro dispositivo similar?
"... Supongamos que el GPS muestra la ubicación correcta en Nueva York, apago el teléfono y luego lo enciendo después de llegar a Londres, ¿seguirá mostrando la ubicación correcta (sin Internet)? ..."
Suena algo confuso: leer una ubicación de GPS es una cosa. ¡Mostrar esa ubicación en un MAP es otra cosa diferente!
No necesita estar conectado a Internet para realizar la lectura de ubicación por GPS. Pero, si desea mostrar esa ubicación en un MAP, probablemente necesitará Internet (para cargar recursos de mapas, etc.).
Si tiene que permanecer recogiendo ubicaciones de GPS periódicamente (digamos, de 10 a 10 minutos), entonces será mejor usar AlarmManager para programar un temporizador que "señale" su aplicación y diga "hey, es hora de hacer una lectura de GPS ! ".
"... También, ¿cuál es tu opinión sobre la última API fusionada? ..."
Lo probé y lo usé por un tiempo, pero lo dejé. Necesita que Google Play Services esté instalado para funcionar (no es un problema, la mayoría de los usuarios lo tienen en sus dispositivos). Pero si necesita EXACTITUD (como yo), no funcionará. Utiliza "sensores fusionados" (acelerómetro, gps, wifi, brújula, etc.) para tratar de obtener la ubicación del usuario con la mínima potencia posible. A veces, dice que estás a 10 millas de donde realmente estás. No pude hacer que funcionara bien para mantener la "ruta" donde el usuario ha estado. Pero realmente ahorra batería.