Android上每隔几秒就在线程上进行位置更新

时间:2016-08-22 18:33:05

标签: android location

您好我正在尝试编写代码以获取用户的当前位置。我已经密切关注本教程http://www.androidhive.info/2012/07/android-gps-location-manager-tutorial/并且正在工作,但是当我添加线程代码并且我从Android工作室的扩展控件中更改Lat和Lon时,它每5秒刷新一次,但是lat和lon仍然保持不变在0.0 0.0

以下是带有线程的代码

    if(gps.canGetLocation())
    {

        Thread t = new Thread() {

            @Override
            public void run() {
                try {
                    while (!isInterrupted()) {
                        Thread.sleep(5000);
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                if(Double.toString(gps.getLatitude()) != null && Double.toString(gps.getLongitude()) != null){
                                    realLatitude = gps.getLatitude();
                                    realLongitude = gps.getLongitude();
                                    lblShowLat.setText(Double.toString(realLatitude));
                                    lblShowLon.setText(Double.toString(realLongitude));
                                    System.out.println(Double.toString(realLatitude) + " "+ Double.toString(realLongitude));

                                    updateDateTime();
                                }
                               // Toast.makeText(getApplicationContext(), "Refresh ", Toast.LENGTH_LONG).show();
                            }
                        });
                    }
                } catch (InterruptedException e) {
                }
            }
        };

        t.start();

    }

    else
    {
        gps.showSettingAlert();
    }

1 个答案:

答案 0 :(得分:0)

1)你不能每5秒获得一次更新的位置。您的手机不经常更新位置。 GPS通常每30s-1分钟

2)你正在使用的教程真的坏了。永远不应该使用该代码,并且它的每个副本都应该在火焰中燃烧。我详细分析了为什么代码在这里很糟糕:http://gabesechansoftware.com/location-tracking/我也有更好的方法在那里做。

3)您执行此操作的正确方法是注册位置更新,并在您的位置更新时更新服务器,而不是按固定时间表更新。

4)如果不进行3中的操作,就无法使代码正常工作。它依赖于getLastKnownLocation,这可能不会起作用。但如果它一开始没有工作,它就永远无法自我修复。唯一安全的用途是乐观地将其用作优化。如果你确实需要一个位置,你应该总是请求更新,永远不要期望该功能工作。