2011-05-11 118 views
1

這是我的代碼。獲取上一個位置的經度和緯度

public class MyLocationListener implements LocationListener { 

    @Override 
    public void onLocationChanged(Location loc) { 
     Location location = getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
     LastLocationLat = location.getLatitude(); 
     LastLocationLongi = location.getLongitude(); 

     LocationLat = loc.getLatitude(); 
     LocationLongi = loc.getLongitude(); 

     if(loc.hasSpeed()) { 
      float mySpeed = loc.getSpeed(); 
      Toast.makeText(getApplicationContext(), ""+mySpeed, 2000).show(); 
     } 
    } 

    @Override 
    public void onProviderDisabled(String provider) { 
     Toast.makeText(getApplicationContext(), "Gps Disabled", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onProviderEnabled(String provider) { 
     Toast.makeText(getApplicationContext(), "Gps Enabled", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) { 
     Toast.makeText(getApplicationContext(), "Gps onStatusChanged", Toast.LENGTH_SHORT).show(); 
    } 
} 

,但我沒有得到這個代碼的最後一個位置,我得到相同的緯度和經度

回答

2

您正在使用LocationManager.NETWORK_PROVIDER得到的位置。你的代碼意味着你想要GPS(「Gps Disabled」)?在這種情況下,您應該使用LocationManager.GPS_PROVIDER

LocationManager.NETWORK_PROVIDER不是很準確(幾百米,如果鎖定到蜂窩塔),所以如果移動不到百米,你可能無法檢測到的位置變化。

另一方面,GPS通常在室內或高樓間不可用。此外,GPS使用的功率,所以不應該一直使用(當應用程序在後臺)。

閱讀Obtaining User Location,對於與問候精確度和服務的可用性得到位置的最佳方法。