0

我制作了一个简单的应用程序,可以使用非常简单的代码获取我所在位置的当前坐标

public Location getLocation() {
    lm = (LocationManager) mContext.getSystemService(LOCATION_SERVICE);
    GPS = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
    network = lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
    if (!GPS && !network) {
        showsettings();
    } else {
        Log.d("GPSClass", "GPS: " + GPS + " network: " + network);
        this.canGetLocation = true;
        if (network) {
            lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,
                    MIN_TIME, MIN_DISTANCE, this);
            Log.d("GPSClass", "network");
            location = lm
                    .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
            if (location != null) {

                return location;
            }
        }
        if (GPS) {
            lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,
                    MIN_TIME, MIN_DISTANCE, this);
            Log.d("GPSClass", "GPS");
            location = lm
                    .getLastKnownLocation(LocationManager.GPS_PROVIDER);
            if (location != null) {
                return location;
            }
        }
    }
    return null;

}

这很好用,但我无法理解如何。我的意思是即使我的 gps 关闭并且所有 wifi 和网络断开连接,我也能够获得正确的坐标。我的设备如何为我提供正确的坐标(即使在飞行模式下)?

4

2 回答 2

1

从文档中:

getLastKnownLocation

返回一个 Location 指示从给定提供程序获得的最后一个已知位置修复的数据。

因此,如果提供者过去获得了一个有效的位置,它将返回这个位置

于 2013-07-10T07:22:23.347 回答
0

我已经在我的博客上写了一个完整的位置服务助手类,如果有帮助的话,所有代码都包含在内。检查一下,让我知道。

http://www.scotthelme.co.uk/blog/android-location-services/

于 2013-07-10T07:35:33.557 回答