1

アプリで位置情報の更新を取得するために Google Play Services API を使用しています。ただし、何らかの理由で、クライアントが接続されているときに client.getLastLocation() の値が変更されません。リスナーを登録して場所の更新を要求した後にのみ、場所が変更されます。エミュレータだけの問題かと思いますが、ddmsやtelnetで場所を手動で変更してもgetLastLocation()の値は変わりません。

残念ながら、私の電話はadbに表示されないため、実際のデバイスでテストすることはできませんが、なぜこれが起こるのかについて誰か考えがありますか? 位置情報の更新をリクエストすることで解決できるので大したことではありませんが、ユーザーが数秒ごとに位置情報をアップロードするのではなく、手動で位置情報を更新できるようにする設定を提供したいと考えています。私が話していることを示すためのいくつかのコード。

@Override
public void onClick(View v) {
    Location newLocation = client.getLastLocation();
    if(newLocation == null)
    {
        Toast.makeText(getActivity(), "Finding location", Toast.LENGTH_SHORT).show();
        return;
    }
    if(distanceSignificant(currentLocation, newLocation))
    {
        currentLocation = newLocation;
        Log.d(TAG, "distance significant, updating location");
            uploadNewLocation();
        }
    }
});

そのボタンをクリックするたびに、場所は前回と同じになります。

@Override
public void onConnected(Bundle data) {
    Log.d(TAG, "connected to locations");
    Toast.makeText(getActivity(), "Starting location services", Toast.LENGTH_SHORT).show();
    currentLocation = client.getLastLocation();

    if(currentLocation == null)
    {
        Log.d(TAG, "can't add user location yet, not available");
    }

    if(shouldUpdate)
    {
        client.requestLocationUpdates(locationRequest, this);
        updateButton.setVisibility(View.GONE);
    }
    else
    {
        updateButton.setVisibility(View.VISIBLE);
    }

}

この場合、shouldUpdate は onCreateView で設定され、ユーザー設定によって設定されます。

これを修正するために私が何をすべきか知っている人はいますか? シンプルなものが欠けているような気がします。

4

1 に答える 1