gpt4 book ai didi

Android:使用 GPS 提供商获取位置会返回错误的位置

转载 作者:太空狗 更新时间:2023-10-29 14:22:51 24 4
gpt4 key购买 nike

我正在实现一个应用程序,当您打开它时,它会获取您的位置。它仅在创建 Activity 时获取它,因此我不需要 LocationListener。我正在两个真实设备上对其进行测试。

首先,我尝试使用 GPS_PROVIDER 获取位置。如果结果为 NULL,我将使用 NETWORK_PROVIDER。由于我是在建筑物内对其进行测试,因此我无法使用 GPS 提供商获取位置。

在其中一个设备中,使用 GPS_PROVIDER 的位置为 NULL,而 NETWORK_PROVIDER 返回正确的位置。但是在另一台设备中,使用 GPS_PROVIDER 的位置不是 NULL,而是错误的(它与我现在所在的城市不同!)。这是我正在使用的代码:

private void getPosition() {
locManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
myloc = locManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if(myloc == null)
myloc = locManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

if(myloc != null){
Geocoder geoCoder = new Geocoder(getBaseContext(), Locale.getDefault());
try{
List<Address> addresses = geoCoder.getFromLocation(myloc.getLatitude(), myloc.getLongitude(), 1);

if(addresses.size()>0){
String add = "";
for(int i=0; i<addresses.get(0).getMaxAddressLineIndex(); i++)
add += addresses.get(0).getAddressLine(i)+"\n";
placeEdit.setText(add);
}
}catch(IOException e){
e.printStackTrace();
}
}
}

我怎么知道 GPS 提供商返回的位置是错误的?我是否应该先查看网络提供商,如果它为空则使用 gps?这个应用程序应该在外面使用,所以我想先使用 gps,因为它更准确。

谢谢!

最佳答案

Android Documentation 中所述

getLastKnownLocation(String provider)
Returns a Locationindicating the data from the last known location fix obtained from thegiven provider.

因此,当您的设备提前 2 小时获得位置并且在此期间从未获得新定位时,Location 对象会返回该旧位置。我建议您使用 LocationListener 但线程会在一段时间后停止监听 - 这种方法可以防止设备在卫星视野不好或您在建筑物内时进行长时间的修复搜索。如果 LocationListener 获得位置,则使用它,如果没有 - 使用 NETWORK_PROVIDER

关于Android:使用 GPS 提供商获取位置会返回错误的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15155169/

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