0
我有一個服務中獲得的android手機的當前位置爲:如何在服務第一時間獲取正確的位置?
LocationManager locationManager;
private static int LOCATION_INTERVAL = 0;
private static float LOCATION_DISTANCE = 0;
Location mLastLocation;
Location preLocal;
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
mLastLocation = location;
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
// super.onCreate();
if (locationManager == null) {
locationManager = (LocationManager) getApplicationContext().getSystemService(Context.LOCATION_SERVICE);
}
boolean gps_enabled = false, network_enabled = false;
// SharedPreferences sh = getSharedPreferences("appShareLoc",
// MODE_PRIVATE);
// LOCATION_INTERVAL = sh.getInt("LocTime", 1);
// LOCATION_DISTANCE = sh.getInt("LocDistance", 10);
try {
gps_enabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
} catch (Exception ex) {
}
try {
network_enabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
} catch (Exception ex) {
}
if (gps_enabled) {
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, LOCATION_INTERVAL, LOCATION_DISTANCE,
this);
}
if (network_enabled) {
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, LOCATION_INTERVAL,
LOCATION_DISTANCE, this);
}
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
if (locationManager != null)
locationManager.removeUpdates(this);
}
@Override
public void onStart(Intent intent, int startId) {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (mLastLocation == null) {
boolean gps_enabled = false, network_enabled = false;
ty {
network_enabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if (network_enabled) {
mLastLocation = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
}
} catch (Exception ex) {
}
if (mLastLocation == null) {
try {
gps_enabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
if (gps_enabled) {
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, LOCATION_INTERVAL,
LOCATION_DISTANCE, this);
mLastLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
}
} catch (Exception ex) {
}
}
}
if (mLastLocation != null) {
//process location
}
stopSelf();
}
我只有1米高,但服務回報1個新位置距離前面的位置更改手機66米。 服務第一次如何獲取正確的位置?