Usługi Google Play dla Androida. Klient lokalizacji nie aktualizuje lokalizacji, jeśli wifi jest wyłączone

Nasza lokalizacja aktualizacji wniosku o aplikację za pomocą LocationClient i IntentService. Lokalizacja nie aktualizuje się wcale, jeśli użytkownik wyłączy wifi w ustawieniach telefonu.

Próbowaliśmy przetestować aplikację z PRIORITY_HIGH_ACCURACY i aktualizacjami lokalizacji, gdy wifi było wyłączone.

Ten sam problem, jeśli użytkownik porusza się w miejscu, w którym nie ma dostępnych sieci wifi.

Myślę, że poprawne zachowanie jest za pomocą innych czujników telefonu (takich jak GPS) do aktualizacji lokalizacji, jeśli telefon nie może zaktualizować lokalizacji za pomocą wifi.

Kroki ku reprodukcji:

Rozpocznij aktualizację lokalizacji z oczekiwaniami. Z parametrami

LocationRequest request = LocationRequest.create()
        .setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY)
        .setInterval(5 * 60 * 1000)
        .setFastestInterval(60*1000)
        .setSmallestDisplacement(70);

Wyłącz WiFi w ustawieniach telefonu lub przejdź do telefonu w kraju, w którym nie ma dostępnych sieci Wi-Fi.

Testowany na Androidzie 4.4, 4.3, 4.1, 4.0, 2.3.3. (Nexus7, Nexus4, Samsung GS2, HTC Wildfire i inne)

public class TrackerService extends IntentService {
    private void startUpdateLocation() {
        PendingIntent pendingIntent = PendingIntent.getService(getApplicationContext(),
            0, new Intent(ACTION_LOCATION_UPDATED), 0);
        LocationRequest request = LocationRequest.create()
            .setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY)
            .setInterval(5 * 60 * 1000)
            .setFastestInterval(60*1000)
            .setSmallestDisplacement(70);

        getLocationClient().requestLocationUpdates(request, pendingIntent);
        Log.d(Utils.getMethodName(), "Location update started");
    }

    private LocationClient getLocationClient() {
        if (mLocationClient != null && mLocationClient.isConnected()) return mLocationClient;
        mLocationClient = new LocationClient(this,
            new GooglePlayServicesClient.ConnectionCallbacks() {
                @Override
                public void onConnected(Bundle bundle) {
                    Log.d(Utils.getMethodName(), "Location client. Connected");
                }

                @Override
                public void onDisconnected() {
                    Log.d(Utils.getMethodName(), "Location client. Disconnected");
                }
            },
            new GooglePlayServicesClient.OnConnectionFailedListener() {
                @Override
                public void onConnectionFailed(ConnectionResult connectionResult) {
                    throw new IllegalStateException("Failed connection to location manager " + connectionResult.toString());
                }
            }
        );
        mLocationClient.connect();
        try {
            while (mLocationClient.isConnecting()) {
                Thread.sleep(200);
            }
        } catch (InterruptedException e) {
            throw new IllegalStateException("Thread interrupted", e);
        }
        return mLocationClient;
    }
}

Próbowałem wysłać raport o błędziehttps://code.google.com/p/android/issues/detail?id=63110

Programiści Androida nie mogą pomóc.

Gdzie mogę zgłosić błędy w usługach Google Play?

Czy to błąd w usługach Google Play?

Jaką pracę możesz zaoferować?

Nie chcemy używać PRIORITY_HIGH_ACCURACY, ponieważ powoduje to rozładowanie baterii telefonu. Nasza lokalizacja telefonu do śledzenia aplikacji i nie powinna zależeć od ustawień Wi-Fi i dostępności sieci Wi-Fi.

questionAnswers(3)

yourAnswerToTheQuestion