这是我的代码。
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();
}
}
但我没有在这段代码中获得最后一个位置,我有相同的纬度和经度
答案 0 :(得分:2)
您正在使用LocationManager.NETWORK_PROVIDER获取地点。您的代码暗示您想要GPS(“Gps禁用”)?在这种情况下,您应该使用LocationManager.GPS_PROVIDER。
LocationManager.NETWORK_PROVIDER不是很准确(如果锁定到手机信号塔,则几百米),因此如果移动的距离小于100米,则可能无法检测到位置变化。
另一方面,GPS通常在室内或高层建筑之间不可用。 GPS也使用电源,所以不应该一直使用(当应用程序在后台时)。
了解Obtaining User Location,了解获取有关准确性与服务可用性的位置的最佳方法。
答案 1 :(得分:0)