0

特定のアクティビティが開始されたときに、1 つのフィールドに現在の住所を入力する必要があるアプリがあります。gpsを使用する別のアプリが開始されない限り、私がやっている方法でgps座標が更新されるかどうかはわかりません。

場所があれば、Geocoder で住所を取得できます。そしてgetLastLocation、Google Locations API の を使用して場所を取得できます。

チュートリアルの手順に従って、次のonCreateように API を初期化すると:

GoogleApiClient.Builder(this).addConnectionCallbacks(this).addOnConnectionFailedListener(this).addApi(LocationServices.API).build();

onConnect次のように最後の場所を取得します。

Location lastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);

最後の既知の住所しか取得していないように感じますが、上記のコードは実際には電話で GPS を開始しません。

位置情報の更新を有効にしonConnectedてから、最初に位置情報を取得したときに更新を無効にする必要がありますか、それとも上記のコードで実際に GPS が開始されますか?

4

1 に答える 1

1

getLastLocationメソッドは GPS を開始せず、最後の位置を取得するだけです。

また、場所の日付をチェックして、古すぎるかどうかを検出することもできます。

古い場所の場合、または新しい場所を取得したい場合は、場所のリクエストを行う必要があります。

私のLocationRequestを検討してください

private LocationRequest mLocationRequest;

private void createLocationRequest(){
    mLocationRequest = new LocationRequest();

    // 0 means here receive location as soon as possible
    mLocationRequest.setInterval(0);
    mLocationRequest.setFastestInterval(0);

    // setNumUpdates(1); stops location requests after receiving 1 location
    mLocationRequest.setNumUpdates(1);

    // PRIORITY_HIGH_ACCURACY option uses your GPS
    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
}

@Override
public void onLocationChanged(Location location) {
    // Use new location
}
于 2016-10-30T22:02:16.013 に答える