我正在使用google play服務api在我的應用中獲取位置更新。但是,由於某種原因,客戶端連接時client.getLastLocation()不會更改其值。只有在通過註冊偵聽器請求位置更新後,位置纔會改變。我認爲這可能只是一個模擬器問題,但即使使用ddms或telnet手動更改位置,getLastLocation()的值仍然不會更改。LocationClient不更新模擬器上的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中設置並由用戶設置進行設置。
有誰知道我應該怎麼做才能解決這個問題?我覺得我錯過了簡單的事情。