ubica - reiniciar gps android
Android problema de precisión de ubicación GPS (3)
- ¿Cómo puedo hacer el nivel de precisión cerca del 99%. ¿Hay algún problema en mi arquitectura de código?
Este es el escenario de la vida real. No puede asegurarse de que todos los proveedores de ubicación funcionarán como se espera. Debes pedir la mejor posición disponible.
- a) ¿La precisión del GPS depende de la configuración del dispositivo?
SÍ. Algunos dispositivos pueden tener conjuntos de chips de GPS más antiguos que solo pueden rastrear señales de GPS (EE. UU.), Ya que existen otros sistemas de posicionamiento como Galileo (Europa), GLONASS (Rusia), QZSS (Japón) y Beidou (China). Cuanto mayor sea la compatibilidad del conjunto de chips para estos tipos, más posibilidades tendrá de rastrear más arreglos de posición del satélite. También TTFF (tiempo para la primera reparación) depende de cuántos canales tiene el receptor gps.
b) Si es SÍ, ¿qué puedo hacer para el dispositivo de configuración baja?
Ya que este es un problema de hardware, no puedes hacer nada aquí. Pero otras fuentes de ubicación pueden compensar la falta de datos GPS, como AGPS (gps asistidos), wifi y posicionamiento celular. También hay algunas opciones de pago que proporcionan una base de datos para ubicar su dispositivo mediante puntos de acceso wifi y celulares (afirman que ofrecen la mejor solución en wifi, pero no estoy seguro, ya que no lo uso. Puede consultar http: // combain .com ). El wifi y el teléfono móvil también dependen de la cantidad de puntos de acceso wifi y de la torre de telefonía móvil disponibles y de cuán lejos estén (intensidad de la señal). Si necesita una precisión de 50 m, el posicionamiento celular no tiene nada que hacer, pero wifi tiene la oportunidad de acercarse a este valor.
Algunos resultados del estudio de 2009 [3]
- IPhone 3G con A-GPS ~ 8 metros
- IPhone 3G con wifi ~ 74 metros
- IPhone 3G con posicionamiento celular ~ 600 metros
- ¿Cómo funcionan las aplicaciones de uso compartido de Uber, Go-JEK, etc. para todos los dispositivos? ¿Tienen codificación extra para GPS solamente?
Pueden tener estrategias de ubicación específicas, pero se basarán en el uso de otras fuentes durante la interrupción del GPS.
- Mi solicitud es para Bangladesh. Aquí internet es lento. ¿Tiene un impacto negativo en la precisión del GPS?
Otras respuestas afirman que internet no está relacionado con el GPS. Sí, es cierto que no está relacionado con el GPS sino con la ubicación. AGPS usa internet para obtener 3 tipos de datos (señales satelitales, almanaques y efemérides) que ayudan al GPS a proporcionar una localización más rápida. Si las efemérides y el almanaque están desactualizados o el dispositivo se movió a varios cientos de kilómetros de la posición anterior, entonces se llama arranque en frío y toma alrededor de 12-15 minutos sin AGPS.
El proveedor de ubicación fusionada ya sabe cómo proporcionar la mejor solución con estas configuraciones, por lo que debe bendecirlo.
Referencias:
Estoy trabajando en aplicaciones de seguimiento gps en Android. Aquí está mi arquitectura de código:
- BackgroundSyncService : una clase de servicio que se utiliza para obtener la actualización de la ubicación. Aquí GoogleApiClient se inicializa e implementa otros métodos relacionados con la ubicación.
- AppRunCheckerReceiver : una clase BroadcastReceiver que verificará si mi
BackgroundSyncService
está ejecutando o no en un intervalo de tiempo. Si se detuvo entonces empieza. - GpsEnableReceiver : Un BroadcastReceiver que se activará si el estado de GPS cambia. Verificará si mi
BackgroundSyncService
está ejecutando o no en un intervalo de tiempo. Si se detuvo entonces empieza. - InternetConnectionStateReceiver : un BroadcastReceiver que se activará cuando cambie el estado de Internet. Verificará si mi
BackgroundSyncService
está ejecutando o no en un intervalo de tiempo. Si se detiene, entonces comienza.
En mi servicio BackgroundSyncService
inicializo GoogleApiClient de esta manera:
public void setLocationLocationRequest() {
try {
googleApiClient = new GoogleApiClient.Builder(this).addConnectionCallbacks(this)
.addOnConnectionFailedListener(this).addApi(com.google.android.gms.location.LocationServices.API).build();
locationRequest = new LocationRequest();
locationRequest.setInterval(3000);
locationRequest.setFastestInterval(3000);
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
googleApiClient.connect();
} catch (Exception e) {
}
Aquí, la dirección es LocationRequest.PRIORITY_HIGH_ACCURACY
y el intervalo es
locationRequest.setInterval(3000)
here está el código de implementación de GoogleApiClient.
This sección de información de GPS de la aplicación contiene los parámetros de longitud y precisión de latitud
Mis hallazgos: en el onLocationChanged(Location location)
la precisión del objeto de ubicación de esta manera: location.getAccuracy()
. Aquí si la precisión es inferior a 50 metros, entonces la acepto.
En el 85% de los casos funciona como un encanto. Me está enviando la ubicación exacta de GPS. Pero en 15% de los casos, me envió una ubicación incorrecta como más de 300 metros.
El 15% de los dispositivos son de bajo costo de la marca china.
Mis preguntas:
- ¿Cómo puedo hacer el nivel de precisión cerca del 99%. ¿Hay algún problema en mi arquitectura de código?
- ¿La precisión del GPS depende de la configuración del dispositivo? Si es SÍ, ¿qué puedo hacer para el dispositivo de configuración baja?
- ¿Cómo funcionan las aplicaciones de uso compartido de Uber, Go-JEK, etc. para todos los dispositivos? ¿Tienen codificación extra para GPS solamente?
- Mi solicitud es para Bangladesh. Aquí internet es lento. ¿Tiene un impacto negativo en la precisión del GPS?
Gracias de antemano por este hilo. Y también lo siento por el mal inglés.
Las actualizaciones de ubicación se pueden hacer de las siguientes maneras:
La ubicación que obtiene del GPS es más precisa que la ubicación que obtiene de la red, por lo que si necesita precisión, use el GPS
No estoy seguro de esto, pero creo que es sobre el contexto, el tipo de ubicación que desea, como la precisión o la más rápida, de modo que, de acuerdo con eso, elija su proveedor.
El proveedor de FusedLocation es la solución más eficiente y efectiva para obtener la ubicación en Android ahora, recopila los datos de ubicación de diferentes fuentes y de acuerdo con los parámetros que se pasan, como en cuánto tiempo desea que se actualice la ubicación, si desea una alta precisión o no, etc. .Le proporciona la mejor ubicación.
Sí, debe usar FusedLocationProvider para obtener la ubicación en Android, ya que Google también recomienda esto y es la forma más efectiva y eficiente de obtener ubicación en Android por ahora.
¿Por qué no lo intentas creando Criteria.ACCURACY_HIGH
Una constante que indica un requisito de alta precisión: se puede usar para precisión horizontal, de altitud, de velocidad o de rumbo. Para la posición horizontal y vertical, esto corresponde aproximadamente a una precisión de menos de 100 metros.
Android intenta enmascarar la realidad del hardware de nosotros, pero en la práctica solo hay dos proveedores de ubicación: GPS y red. La ubicación del GPS es lenta y no todos los dispositivos la tienen, pero es precisa. La ubicación de la red es más rápida y es compatible con casi todos los dispositivos, pero es menos precisa.
Google mejoró su mapa y la administración de ubicación con un proveedor de ubicación fusionado.
El punto de entrada principal para interactuar con el proveedor de ubicación fusionado. Los métodos se deben utilizar junto con un GoogleApiClient.
Código:
new GoogleApiClient.Builder(context)
.addApi(LocationServices.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build()
gps -> (GPS, AGPS): Nombre del proveedor de ubicación GPS. Este proveedor determina la ubicación utilizando satélites. Dependiendo de las condiciones, este proveedor puede tardar un tiempo en devolver una corrección de ubicación. Requiere el permiso android.permission.ACCESS_FINE_LOCATION.
red -> (AGPS, CellID, WiFi MACID): Nombre del proveedor de ubicación de red. Este proveedor determina la ubicación según la disponibilidad de la torre celular y los puntos de acceso WiFi. Los resultados se recuperan mediante una búsqueda en la red. Requiere cualquiera de los permisos android.permission.ACCESS_COARSE_LOCATION o android.permission.ACCESS_FINE_LOCATION.
Otras opciones:
getLastKnownLocation ()
getLastKnownLocation()
devuelve la última ubicación conocida ... después de volver a instalar la aplicación, no tendrá ninguna ubicación conocida por última vez ... así que resultará en NPE ... en lugar de usar el siguiente código
public Location getLocation() {
try {
locationManager = (LocationManager) mContext
.getSystemService(LOCATION_SERVICE);
// getting GPS status
isGPSEnabled = locationManager
.isProviderEnabled(LocationManager.GPS_PROVIDER);
// getting network status
isNetworkEnabled = locationManager
.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if (!isGPSEnabled && !isNetworkEnabled) {
// no network provider is enabled
} else {
this.canGetLocation = true;
//here is the if-else change so code avoids falling into both loops
// if GPS Enabled get lat/long using GPS Services
if (isGPSEnabled) {
if (location == null) {
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
MIN_TIME_BW_UPDATES,
MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
Log.d("GPS", "GPS Enabled");
if (locationManager != null) {
location = locationManager
.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
}
}
}
} else if (isNetworkEnabled) {
locationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER,
MIN_TIME_BW_UPDATES,
MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
Log.d("Network", "Network Enabled");
if (locationManager != null) {
location = locationManager
.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return location;
}
Compruebe algunos mejores ejemplos que he encontrado:
http://rdcworld-android.blogspot.in/2012/01/get-current-location-coordinates-city.html
https://developer.android.com/reference/android/location/LocationManager.html
developer.android.com/training/location/retrieve-current.html
Funcionó para mí ... debería funcionar para ti también ...
+1 para la descripción en cuestión.
Espero que encontremos la mejor respuesta para su pregunta y la mejoremos con el tiempo, por lo que sé ... no habrá una sola respuesta correcta aquí.
Primero y segundo)
¿Cómo puedo hacer el nivel de precisión cerca del 99%. ¿Hay algún problema en mi arquitectura de código?
¿La precisión del GPS depende de la configuración del dispositivo? Si es así, ¿qué puedo hacer para el dispositivo de configuración baja?
Ambos, la configuración del dispositivo y la arquitectura del código, son importantes aquí. Si ya tiene una tasa de éxito del 85%, creo que la arquitectura del código es correcta.
En lo que respecta al GPS, la línea de visión es un factor importante cuando se trata de configuraciones y precisión de dispositivos. Aunque un móvil de bajo costo podría devolver una ubicación precisa con una línea de visión clara. Puede intentar ejecutar 2 ciclos más / esperando obtener una mayor precisión.
En el peor de los casos y para su valor, también puede intentar recuperar una ubicación utilizando el https://developer.android.com/reference/android/location/LocationManager.html y el proveedor de GPS, que funciona como una alternativa en el 15% solo para comparar y asegurarse de que está utilizando la ubicación más precisa que pueda obtener. Las estrategias de localización lo ponen como
En la mayoría de los casos, obtendrá un mejor rendimiento de la batería, así como una precisión más adecuada, mediante el uso de la API de servicios de ubicación.
¿Cómo funcionan las aplicaciones de uso compartido de Uber, Go-JEK, etc. para todos los dispositivos? ¿Tienen codificación extra para GPS solamente?
Funcionan, pero no siempre con la mayor precisión para las ubicaciones recibidas dentro de la aplicación. Si hay algún hack de ubicación para nosotros los desarrolladores, debemos encontrarlos, tal vez un resultado de búsqueda de google de la quinta página :) o beneficiarnos del entorno de código abierto. Para mí, las mejores prácticas y los enlaces de repositorio de Android son suficientes. Ya has seguido publicaciones como Recibir actualizaciones de ubicación.Mi solicitud es para Bangladesh. Aquí internet es lento. ¿Tiene un impacto negativo en la precisión del GPS?
No hay relación entre internet y https://developer.android.com/reference/android/location/LocationManager.html + GPS_PROVIDER