我正在实现一个应用程序,当你打开它时它会获取你的位置。它仅在创建活动时获取,所以我不需要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,因为它更准确。
谢谢!