线程中的位置更新

时间:2015-01-30 02:54:57

标签: android android-location

我正在尝试编写一个应用程序,它会将标记放在当前位置,我找到了这个教程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变化很大,因此来自链接的代码不起作用或者我可能以错误的方式调用它?

1 个答案:

答案 0 :(得分:2)

抱歉,但我不懂英文。希望我能帮到你。

 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可以是location is null-> location是lastknowLocation - >如果之前从未打开过gpshas,则lastknowLocation可以为null。因此,如果您使用模拟器测试代码,则可以在模拟器控件中设置位置以使其工作。如果您使用设备测试代码,则只需打开gps并打开地图,然后再次打开app test。

阿。我们有更新的api位置,您可以在此处阅读:https://developer.android.com/training/location/index.html