Android LocationServices.FusedLocationApi.getLastLocation возвращает значение "ноль"

Я уже читал решения этого вопроса в других темах, но я не понимаю, почему он возвращает ноль. Я использовал тот же фрагмент, что и на сайте разработчиков Google: https://developer.android.com/training/location/retrieve-current.html

Я использую следующий код в своей деятельности, чтобы получить текущее местоположение пользователя:

public class MainActivity extends Activity implements ConnectionCallbacks, OnConnectionFailedListener {
protected GoogleApiClient mGoogleApiClient;
protected Location mLastLocation;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    buildGoogleApiClient();
}
@Override
protected void onStart() {
    super.onStart();
    mGoogleApiClient.connect();
}
protected synchronized void buildGoogleApiClient() {
    mGoogleApiClient = new GoogleApiClient.Builder(this)
    .addConnectionCallbacks(this)
    .addOnConnectionFailedListener(this)
    .addApi(LocationServices.API)
    .build();
}
@Override
public void onConnected(Bundle connectionHint) {
    mLastLocation = LocationServices.FusedLocationApi.getLastLocation(
            mGoogleApiClient);
    if (mLastLocation != null) {
        mLatitudeText.setText(String.valueOf(mLastLocation.getLatitude()));
        mLongitudeText.setText(String.valueOf(mLastLocation.getLongitude()));
    }
}

}

Если "mLastLocation" всегда равно нулю, как мы можем написать код, чтобы получить текущее местоположение пользователя?

3 ответа

Решение

Документация гласит (справа внизу статьи):

Возвращаемый объект местоположения может быть нулевым в редких случаях, когда местоположение недоступно.

Это может произойти, когда на устройстве отключены службы определения местоположения или устройство находится в режиме полета. Это также происходит, когда местоположение не запрашивалось долгое время.

Возможно, вам придется проверить настройки местоположения устройства, которое вы используете. У меня такая же проблема. Мои настройки местоположения были настроены на использование только GPS, я переключил его на высокую точность, которая использует Wi-Fi, GPS и мобильные сервисы, чтобы определить ваше местоположение. Это решило проблему для меня. Надеюсь, поможет

Прочитайте это решение:

    private static GoogleApiClient mGoogleApiClient;
    Location currentLocation = LocationServices.FusedLocationApi
            .getLastLocation(mGoogleApiClient);
Другие вопросы по тегам