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