gpt4 book ai didi

Android requestLocationUpdates 不稳定

转载 作者:行者123 更新时间:2023-11-29 00:38:48 27 4
gpt4 key购买 nike

我在我的应用程序中使用教程等中的以下代码,以从 GPS(或者如果 GPS 未打开,则网络)获取最佳位置修复,然后我将其显示在文本字段中。

crit = new Criteria();
context = Context.LOCATION_SERVICE;
locationManager = (LocationManager) this.getSystemService(context);
crit.setAccuracy(Criteria.ACCURACY_FINE);
crit.setPowerRequirement(Criteria.POWER_LOW);
crit.setAltitudeRequired(false);
crit.setBearingRequired(false);
crit.setSpeedRequired(false);
crit.setCostAllowed(false);
try {
bestProvider = locationManager.getBestProvider(crit, true);
loc = locationManager.getLastKnownLocation(bestProvider);
locationManager.requestLocationUpdates(bestProvider, 0, 0,
new GeoUpdateHandler());
} catch (java.lang.RuntimeException run) {
Toast.makeText(getBaseContext(),
"Waiting for location fix...", Toast.LENGTH_SHORT).show();
}

我的问题是在不同地点之间移动。我开始在诺福克使用我的应用程序并确定位置。第二天,我在康沃尔(相距 100 英里),当我打开我的应用程序时(此时它应该已被 Android 关闭/销毁),它仍然向我显示诺福克的位置。我发现如果我然后退出我的应用程序并重新启动它,它就会选择新位置。我可以轻松做到这一点,但我的用户发现这真的很痛苦。

我的假设是,如果 GPS/网络可用,然后我启动应用程序,LOC 是从最后一个已知位置创建的,然后 locationManager 立即更新(应该立即更新 LOC?)使用:

public class GeoUpdateHandler implements LocationListener {
public void onLocationChanged(Location location) {
loc = location;
}
public void onProviderDisabled(String provider) { }
public void onProviderEnabled(String provider) { }
public void onStatusChanged(String provider, int status, Bundle extras) { }
}

显然这次更新没有发生。

任何人都可以告诉我我的代码是否愚蠢,或者建议一种更好的方法来确保我始终处理当前位置?谢谢。抱歉,如果回答了这个问题,很难在位置和 requestLocationUpdates 标签的所有帖子中找到。

最佳答案

在聊天中讨论后,我提出了以下建议:

您需要调用 requestLocationUpdates(),然后向用户显示一个对话框,上面写着“获取您的位置”之类的内容。稍后,您应该会收到一个包含最新位置的回调 onLocationChanged()。那时您可以关闭对话框并更新文本字段以及您想要向用户显示的任何其他内容。您还应该在获得最新位置后调用 removeUpdates(),以免耗尽用户的电池。

关于Android requestLocationUpdates 不稳定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10929676/

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