2017-08-15 61 views
0

我想通過單擊按鈕找到用戶。所以我用這個代碼:Android請求位置更新沒有正確調用

lm = getSystemService(LocationManager.class); 
provider = LocationManager.GPS_PROVIDER; 
listener = new LocationListener() { 
@Override 
public void onLocationChanged(Location location) { 
    Log.e("UPDATE","UPDATING LOCATION"); 
} 
@Override 
public void onStatusChanged(String s, int i, Bundle bundle) { 

} 
@Override 
public void onProviderEnabled(String s) { 

} 
@Override 
public void onProviderDisabled(String s) { 

} 
}; 

lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, listener); 

的requestLocationUpdates方法被調用,但onLocationChanged方法只叫了幾聲。 GPS被激活並且授權被允許。

你知道爲什麼onLocationChanged不總是被調用嗎?我還檢查了getLastKnownLocation,它在調用requestLocationUpdates之後有時是錯誤的。

+0

檢查它在這裏說什麼,看看它是否有幫助:https://stackoverflow.com/a/8600896/3965050 –

+0

我試圖註冊偵聽器內requestLocationUpdates。現在它永遠不會被調用。 LocationManager也被選中(不爲空)。 – JavaForAndroid

+0

不,但我的意思是這部分:onLocationChanged()將在當前位置更新與最後一個已知位置不匹配時被調用。 –

回答

0

我認爲onLocationChanged()不是總是被調用,它只會在位置發生變化時才被調用。

0

我將請求方法更改爲lm.requestSingleUpdate(criteria, listener,null);,它的工作原理與requestLocationUpdates一樣完美。

似乎是提供商的問題。