2011-05-11 115 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,对于与问候精确度和服务的可用性得到位置的最佳方法。