gpt4 book ai didi

android onLocationChanged 从未调用过

转载 作者:行者123 更新时间:2023-11-29 22:21:38 26 4
gpt4 key购买 nike

我已经实现了应该返回当前位置的代码。

首先是代码:

public static double[] getLocation(Context context) {
double[] result;
lm = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);
MyLocationListener ll = new MyLocationListener();
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll);

while(!hasLocation) { }

result = ll.getResult();

return result;
}

private static class MyLocationListener implements LocationListener {
double[] result = new double[2];

public double[] getResult() {
return result;
}

@Override
public void onLocationChanged(Location location) {
if(location.getAccuracy() != 0.0 && location.getAccuracy() < 100) {
result[0] = location.getLatitude();
result[1] = location.getLongitude();
hasLocation = true;
lm.removeUpdates(this);
}
}

@Override
public void onProviderDisabled(String provider) {}

@Override
public void onProviderEnabled(String provider) {}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {}
}

问题是所有的 stopps 都在 'while' 语句上。当我尝试在 onLocationChanged() 的第一行调试此设置断点时,没有任何反应,但 Logcat 显示了一些日志,例如:

loc_eng_report_position: vertical_accuracy = 64.000000
DEBUG/libloc(1292): date:2011-08-11, time:10:51:03.372, raw_sec=1313052663, raw_sec2=1313052663,raw_msec=1313052663372

有什么想法吗?

最佳答案

while(!hasLocation) {} 阻止您的应用程序执行任何操作。您要么需要在回调 onLocationChanged 中处理位置,要么需要更早地启动位置管理器并希望在需要时得到结果。你不能忙着等待答案。

关于android onLocationChanged 从未调用过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7023612/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com