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:位置服务每次返回不同的数字 - 为啥?的主要内容,如果未能解决你的问题,请参考以下文章

数字游戏

java 中判断字符串是否相等

Android GPS以不同的精度返回相同的位置坐标

GCM每次都发送不同的RegistrationId

munbergame

使用代码关闭位置服务警报