您好我正在尝试编写代码以获取用户的当前位置。我已经密切关注本教程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();
}
答案 0 :(得分:0)
1)你不能每5秒获得一次更新的位置。您的手机不经常更新位置。 GPS通常每30s-1分钟
2)你正在使用的教程真的坏了。永远不应该使用该代码,并且它的每个副本都应该在火焰中燃烧。我详细分析了为什么代码在这里很糟糕:http://gabesechansoftware.com/location-tracking/我也有更好的方法在那里做。
3)您执行此操作的正确方法是注册位置更新,并在您的位置更新时更新服务器,而不是按固定时间表更新。
4)如果不进行3中的操作,就无法使代码正常工作。它依赖于getLastKnownLocation,这可能不会起作用。但如果它一开始没有工作,它就永远无法自我修复。唯一安全的用途是乐观地将其用作优化。如果你确实需要一个位置,你应该总是请求更新,永远不要期望该功能工作。