Problema de rendimiento de FusedLocationApi: la precisión parece estar limitada a 10.0 metros

Estoy experimentando un extraño problema donde elFusedLocationProviderAPI no me da un número de precisión mejor que 10.0 metros. Comienza como normal dándome una gran cantidad de, por ejemplo, 56 metros ... 24 ... 13 ... y luego se mantiene en 10.0. Aparentemente limitado a no dar nada mejor que eso.

Probado por teléfonoSony Xperia Z2 & Huawei Honor 8

location.getAccuracy() //Seems capped at 10.0 meters

Lo extraño es que estaba recibiendo un número de precisión de alrededor de 3.0 metros con buen clima afuera y no tengo memoria de cambiar las opciones de GPS del teléfono / ni ninguna opción relacionada con la clase de servicio GPS.

Mi aplicación depende de poder obtener el número de precisión más alto posible. ¿Cuál podría ser el problema aquí? El teléfono en sí? La configuración de la solicitud? ¿Posibles motivos del número limitado?

Editar: Experimenté el mismo problema al probar el Huwaei. Entonces, ¿parece haber un problema con el código? ¿Como después de que x cantidad de solicitudes de ubicación la precisión se limita a 10.0 del sistema?

Cosas relevantes de mi servicio de GPS:

Manifiesto

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />

Servicio

private long UPDATE_INTERVAL = 2 * 1000;  /* 10 secs */
private long FASTEST_INTERVAL = 2000; /* 2 sec */
static final int MY_PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION = 1;

private void requestLocation() {
    locationRequest = new LocationRequest();
    locationRequest.setInterval(UPDATE_INTERVAL);
    locationRequest.setFastestInterval(FASTEST_INTERVAL);
    locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
    gac = new GoogleApiClient.Builder(this)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .addApi(LocationServices.API)
            .build();
}

@Override
public void onLocationChanged(Location location) {

    locationData = location; //1. Set local field to incoming location
    gpsAccuracy = location.getAccuracy(); //2. Est. horizontal accuracy of location, radial, in meters.
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta