private synchronized void updateRequest() {
        try {
            if (mostPreciseCount.get() > 0) {
                Log.d("LocationProvider: requesting most precise locations");
                fusedLocationClient.requestLocationUpdates(
                        LOCATION_REQUEST,
                        this,
                        AndroidRxUtils.looperCallbacksLooper
                );
            } else if (lowPowerCount.get() > 0) {
                Log.d("LocationProvider: requesting low-power locations");
                fusedLocationClient.requestLocationUpdates(
                        LOCATION_REQUEST_LOW_POWER,
                        this,
                        AndroidRxUtils.looperCallbacksLooper
                );
            } else {
                Log.d("LocationProvider: stopping location requests");
                fusedLocationClient.removeLocationUpdates(this);
            }
        } catch (final SecurityException e) {
            Log.w("Security exception when accessing fused location services", e);
        }
    }
Encapsulates Google's location services, especially its FusedLocationProvider,
as described here: <a href="https://developers.google.com/location-context/fused-location-provider">...</a>
main/src/main/java/cgeo/geocaching/playservices/GoogleLocationProvider.java