2

他のスレッドでこの質問の解決策を既に読んでいますが、なぜnullを返すのか理解していないようです。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」が常に null の場合、ユーザーの現在の場所を取得するコードをどのように記述すればよいでしょうか?

4

3 に答える 3

1

ドキュメントには次のように記載されています(記事の一番下にあります):

返される場所オブジェクトは、場所が利用できない場合にまれに null になることがあります。

これは、デバイスで位置情報サービスが無効になっている場合、またはデバイスが機内モードになっている場合に発生する可能性があります。また、長い間場所がリクエストされていない場合にも発生するようです。

于 2015-10-06T15:35:42.430 に答える
1

使用しているデバイスの位置設定を確認する必要がある場合があります。私も同じ問題を抱えていました。私の位置設定は GPS のみを使用するように設定されていましたが、Wi-Fi、GPS、およびモバイル サービスを使用して位置を特定する高精度に切り替えました。これで問題は解決しました。それが役に立てば幸い

于 2015-11-24T10:32:54.567 に答える
0

この解決策を読んでください:

    private static GoogleApiClient mGoogleApiClient;
    Location currentLocation = LocationServices.FusedLocationApi
            .getLastLocation(mGoogleApiClient);
于 2015-10-06T15:29:19.027 に答える