Сервисы Google Play для Android. Местоположение клиента не обновлять местоположение, если Wi-Fi отключен

Наше приложение запрашивает обновление местоположения с помощью LocationClient и IntentService. Расположение неОбновлять вообще, если пользователь отключил Wi-Fi в настройках телефона.

Мы пытались протестировать приложение с PRIORITY_HIGH_ACCURACY и обновлениями местоположения, когда Wi-Fi отключен.

Та же проблема, если пользователь перемещается в месте, где нет доступных сетей Wi-Fi.

Я думаю, что правильное поведение - использовать другие датчики телефона (например, GPS) для обновления местоположения, если телефон не может обновить местоположение с помощью Wi-Fi.

Действия по воспроизведению:

Начните обновление местоположения с ожидающим намерением. С параметрами

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

Отключите Wi-Fi в настройках телефона или используйте телефон в стране, где нет доступных сетей Wi-Fi.

Протестировано на Android 4.4, 4.3, 4.1, 4.0, 2.3.3. (Nexus7, Nexus4, Samsung GS2, HTC Wildfire и другие)

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;
    }
}

Я пытался отправить отчет об ошибкеhttps://code.google.com/p/android/issues/detail?id=63110

Разработчики Android могутТ помочь.

Где я могу сообщить об ошибках в Сервисах Google Play?

Это ошибка в Сервисах Google Play?

Какую работу вы можете предложить?

Мы неЯ не хочу использовать PRIORITY_HIGH_ACCURACY, потому что это разряжает батарею телефона. Наше приложение отслеживает местоположение телефона, и оно не должноЭто зависит от настроек Wi-Fi и доступности сетей Wi-Fi.

Ответы на вопрос(3)

Ваш ответ на вопрос