2015-06-30 4 views
2

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

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

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» всегда равно null, как мы можем написать код, чтобы получить текущее местоположение пользователя?

ответ

1

-сдаточной документации состояния (справа внизу статьи):

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

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

0

прочитал это решение:

private static GoogleApiClient mGoogleApiClient; 
    Location currentLocation = LocationServices.FusedLocationApi 
      .getLastLocation(mGoogleApiClient); 
+0

??? Я не понимаю твое решение. это то же самое, что @ user3282666 – delive

1

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

Смежные вопросы