我讀過Google doc和post,值得注意的是@ bendaf的回答,關於管理位置設置,以及一切正常。如何獲知位置設置已更改?
無論如何,如果用戶首先決定不使用自己的位置,然後再決定激活它,應用程序不會被此操作觸發,所以我不知道我可以請求定期更新。
我在這裏錯過了什麼?
我讀過Google doc和post,值得注意的是@ bendaf的回答,關於管理位置設置,以及一切正常。如何獲知位置設置已更改?
無論如何,如果用戶首先決定不使用自己的位置,然後再決定激活它,應用程序不會被此操作觸發,所以我不知道我可以請求定期更新。
我在這裏錯過了什麼?
每次用戶啓動應用程序時都可以提供AlertDialog,以便用戶可以啓用該位置。但是這會讓人有點討厭,因爲每次你必須否認同樣的事情。
或者,你可以使用偏好,以便用戶可以啓用/禁用位置
還有一種更好的方式來做到這一點。使用位置監聽器。這是爲了你想達到的唯一目的。
public class XYZ Activity implements LocationListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000,10,this);
}
@Override
public void onLocationChanged(Location location) {
}
@Override
public void onStatusChanged(String s, int i, Bundle bundle) {
}
@Override
public void onProviderEnabled(String s) {
}
@Override
public void onProviderDisabled(String s) {
}
}
我認爲這是你正在尋找的正確的東西。這是事件的方式。 快樂編碼:)
也許我沒有清楚地說明問題。考慮用戶啓動應用程序。我問他啓用GPS,他回答不。稍後在使用應用程序時,他意識到他想使用他的位置,然後進入設置並啓用GPS。我的應用程序不知道這個新的設置。除非我創建一個線程來拉取'isGPSEnabled()'。 – 2ndGAB
是的,你可以做到這一點。或者你也可以創建一個循環:while(isRunning){boolean b = isGPSEnabled();如果(b){//您的代碼}}在同一個線程上。 – hittsss
在一個事件驅動的系統中使用拉線,聽起來很奇怪...... – 2ndGAB