gpt4 book ai didi

android - 我当前的位置总是返回 null。我怎样才能解决这个问题?

转载 作者:IT老高 更新时间:2023-10-28 23:28:49 25 4
gpt4 key购买 nike

我正在尝试为一个 android 项目查找我当前的位置。加载应用程序时,我的当前位置始终为空。我已经在 list 等中设置了权限。当我找到当前位置时,我打算使用坐标来查找到 map 上其他位置的距离。我的代码 fragment 如下。为什么我总是得到一个空值?

locMan = (LocationManager) getSystemService(Context.LOCATION_SERVICE);          
Criteria crit = new Criteria();
towers = locMan.getBestProvider(crit, false);
location = locMan.getLastKnownLocation(towers);

if (location != null) {
System.out.println("Location is not null!");
lat = (int) (location.getLatitude() *1E6);
longi = (int) (location.getLongitude() * 1E6);
GeoPoint ourLocation = new GeoPoint(lati, longi);
OverlayItem overlayItem = new OverlayItem(ourLocation, "1st String",
"2nd String");
CustomPinpoint custom = new CustomPinpoint(d, MainMap.this);
custom.insertPinpoint(overlayItem);
overlayList.add(custom);
overlayList.clear();
} else {
System.out.println("Location is null! " + towers);
Toast.makeText(MainMap.this, "Couldn't get provider",Toast.LENGTH_SHORT)
.show();
}

最佳答案

getLastKnownLocation() 使用其他应用程序先前找到的位置。如果没有应用程序这样做,则 getLastKnownLocation() 将返回 null。

您可以对您的代码做一件事,以便有更好的机会获得最后一个已知的位置 - 遍历所有启用的提供程序,而不仅仅是最好的提供程序。例如,

private Location getLastKnownLocation() {
List<String> providers = mLocationManager.getProviders(true);
Location bestLocation = null;
for (String provider : providers) {
Location l = mLocationManager.getLastKnownLocation(provider);
ALog.d("last known location, provider: %s, location: %s", provider,
l);

if (l == null) {
continue;
}
if (bestLocation == null
|| l.getAccuracy() < bestLocation.getAccuracy()) {
ALog.d("found best last known location: %s", l);
bestLocation = l;
}
}
if (bestLocation == null) {
return null;
}
return bestLocation;
}

如果您的应用在没有位置的情况下无法处理,并且没有最后已知的位置,则您需要监听位置更新。你可以看看这个类的例子,

https://github.com/farble1670/autobright/blob/master/src/org/jtb/autobright/EventService.java

查看方法onStartCommand(),它检查网络提供商是否已启用。如果不是,它使用最后一个已知位置。如果启用,它会注册以接收位置更新。

关于android - 我当前的位置总是返回 null。我怎样才能解决这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9873190/

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