Android:位置服务每次返回不同的数字 - 为啥?
Posted
技术标签:
【中文标题】Android:位置服务每次返回不同的数字 - 为啥?【英文标题】:Android : location service returns different number at each and every time - Why?Android:位置服务每次返回不同的数字 - 为什么? 【发布时间】:2018-07-21 00:26:22 【问题描述】:您好,我正在开发一个应用程序,我需要获取准确的(准确到一定程度)纬度和经度。我使用的方法是 LocationListener 但问题是,每次我在同一个位置得到不同的数字 - 说几乎是 800 米的差异。有没有办法每次都能得到准确的数字?下面是代码。请在这方面帮助我
public Location getlocation()
if(ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED)
Toast.makeText(context,"Permission Not Granted",Toast.LENGTH_LONG).show();
return null;
LocationManager lm = (LocationManager) context.getSystemService(context.LOCATION_SERVICE);
boolean isGPSenabled=lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
if (isGPSenabled)
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,1,this);
Location l = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
return l;
else
Toast.makeText(context,"Please Enable GPS",Toast.LENGTH_LONG).show();
return null;
【问题讨论】:
【参考方案1】:使用融合 API
googleApiClient = new GoogleApiClient.Builder(FusedLocation1.this)
.addApi(LocationServices.API)
.addConnectionCallbacks(FusedLocation1.this)
.addOnConnectionFailedListener(FusedLocation1.this)
.build();
locationRequest = LocationRequest.create();
locationRequest.setInterval(2000);
locationRequest.setFastestInterval(2000);
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
googleApiClient.connect();
【讨论】:
以上是关于Android:位置服务每次返回不同的数字 - 为啥?的主要内容,如果未能解决你的问题,请参考以下文章