如果GPS沒有打開,我的代碼提示用戶,我得到的位置更新(如預期)Android的定位服務(GPS):不接收位置更新,如果GPS已經開啓
但是如果GPS已經開啓,我無法獲取位置更新。我可以看到我的start()方法在logcat中調用,但我沒有看到更新()方法被調用。
private static final long MIN_UPDATE_DISTANCE = 6;
private static final String TAG = LocationTracker.class.getSimpleName();
// The minimum time between updates in milliseconds
private static final long MIN_UPDATE_TIME = 1000 * 1;//==update every 1 seconds
....
public void start(){
Log.e(TAG, "start");
lm = (LocationManager) MyApp.getAppContext().getSystemService(Context.LOCATION_SERVICE);//let's see if getting LM again helps
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, MIN_UPDATE_TIME, MIN_UPDATE_DISTANCE, this);
return;
}
public void onLocationChanged(Location newLoc) {
Log.e(TAG, "onLocationChanged");
}
編輯
public static boolean isLocationServicesEnabled(){
Log.e(TAG,"isLocationServicesEnabled");
String locationProvider = Settings.Secure.getString(
MyApp.getAppContext().getContentResolver(),
Settings.Secure.LOCATION_PROVIDERS_ALLOWED);//note: this is deprecated
if (locationProvider == null || locationProvider.equalsIgnoreCase("")) {
return false;
}
return true;
}
public void stop(){
Log.e(TAG,"stopping GPS");
lm.removeUpdates(this);
isRunning = false;
listener = null;
lm = null;
}
下面是我美其名曰:
if(isLocationServicesEnabled){
stop();
start()
}
這裏是gradle這個
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.XX.XX.main"
minSdkVersion 19
targetSdkVersion 21
versionCode 15
}
這應該工作,你可以請改變你的地方,以確保你的最短距離改變 –
你在清單中添加了什麼權限 –