线程中的位置更新

Location updates in thread

我正在尝试编写一个将标记放在当前位置的应用程序,我找到了这个教程http://www.androidhive.info/2012/07/android-gps-location-manager-tutorial/

我写了这段代码来在线程中签入

     Thread t = new Thread(){
        public void run(){
            while(!running) {
                if(gpstracker.canGetLocation()) {
                    double lon = gpstracker.getLongitude();
                    double lat = gpstracker.getLatitude();
                    now = new LatLng(lat,lon);
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            change(now);
                        }
                    });
                    try {
                        Thread.sleep(5000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                else {
                    gpstracker.showSettingsAlert();
                }
            }
        }
    };

但是位置永远不会改变,它总是 0.0, 0.0 位置 api 变化很大,所以来自 link 的代码不起作用或者我调用它的方式有误?

抱歉,我不会英语。希望我能帮助你。

 public double getLatitude(){
    if(location != null){
        latitude = location.getLatitude();
    }

    // return latitude
    return latitude;
}
public double getLongitude(){
    if(location != null){
        longitude = location.getLongitude();
    }

    // return longitude
    return longitude;
}

lat = 0.0 和 lon = 0.0 可能位置为 null-> 位置为 lastknowLocation -> 如果 gpshas 之前从未打开,lastknowLocation 可以为空。因此,如果您正在使用模拟器测试代码,您可以在 Emulator Control 中设置位置以使其工作。如果您使用设备测试代码,您只需打开 gps 并打开地图,然后再次打开应用程序测试。

啊。我们有新的 api 位置可以更好地使用您可以在这里阅读:https://developer.android.com/training/location/index.html