线程中的位置更新
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
我正在尝试编写一个将标记放在当前位置的应用程序,我找到了这个教程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