首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的手机没有移动,但gps长时间值仍在变化。

我的手机没有移动,但gps长时间值仍在变化。
EN

Stack Overflow用户
提问于 2015-08-21 13:38:19
回答 1查看 1.2K关注 0票数 4

我的手机没有移动,但全球定位系统的lat/long值不断变化,这就是为什么?

如何解决这个问题?如何使用以下代码获取移动...Am的可靠lat长值以获取GPS位置:

代码语言:javascript
复制
     public Location getLocation() {
    try {
        locationManager = (LocationManager) mContext
                .getSystemService(LOCATION_SERVICE);

        // getting GPS status
        isGPSEnabled = locationManager
                .isProviderEnabled(LocationManager.GPS_PROVIDER);

        // getting network status
        isNetworkEnabled = locationManager
                .isProviderEnabled(LocationManager.NETWORK_PROVIDER);

        if (!isGPSEnabled && !isNetworkEnabled) {
            // no network provider is enabled
        } else {
            this.canGetLocation = true;
            if (isGPSEnabled) {
                locationManager.requestLocationUpdates(
                        LocationManager.GPS_PROVIDER,
                        MIN_TIME_BW_UPDATES,
                        MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
                   // Log.d("GPS Enabled", "GPS Enabled");
                    if (locationManager != null) {
                        location = locationManager
                                .getLastKnownLocation(LocationManager.GPS_PROVIDER);
                        if (location != null) {
                            latitude = location.getLatitude();
                            longitude = location.getLongitude();
                        }

                }
            }
            if (isNetworkEnabled) {
                locationManager.requestLocationUpdates(
                        LocationManager.NETWORK_PROVIDER,
                        MIN_TIME_BW_UPDATES,
                        MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
              //  Log.d("Network", "Network");
                if (locationManager != null) {
                    location = locationManager
                            .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                    if (location != null) {
                        latitude = location.getLatitude();
                        longitude = location.getLongitude();
                    }
                }
            }
            // if GPS Enabled get lat/long using GPS Services

        }

    } catch (Exception e) {
        e.printStackTrace();
    }

    return location;
}
EN

Stack Overflow用户

发布于 2015-08-21 13:47:24

造成这种情况的原因有很多,而且可能是--根本不是问题--

有时只是你的GPS能更好地修复你的位置,或者可能是定位提供者改变了。

P.S.:精度不太好,所以你的位置可能会不时变化。正如您在此链接上看到的那样。你可以从6个不同的来源得到你的位置,每一个都有不同的精度。

  1. 缓存GPS.

大多数仙女座都有能力存储最新的GPS定位。这通常在应用程序第一次启动时使用,您可以检索时间戳、纬度、经度和准确性。

样本代码:

代码语言:javascript
复制
locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
  1. 缓存网络. Android设备还可以存储由蜂窝运营商的网络位置提供商确定的最后一个已知位置。提供者从信元网络和WiFi收集信息,如果打开,则将其发送到远程服务器端进程,该进程对信息进行压缩并返回一个大致的位置。这并不是所有国家都能做到的。就像GPS一样,您通常会检索时间戳、纬度、经度和精度。

样本代码:

代码语言:javascript
复制
locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
  1. 实时GPS.

这是从GPS上流出来的原始信息。当GPS第一次打开时,它不会立即返回任何信息,它必须首先进行基本的热身。热身时间因设备而异,如果您在建筑物内,通常需要一分钟或更长时间。稍后再谈这个问题。根据您的供应商允许您可以访问时间戳,纬度,经度,高度,方位,速度,准确性和旅行距离。

样本代码:

代码语言:javascript
复制
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,time,distance,listener);
  1. 实时网络.

这是由蜂窝运营商(如美国AT&T )返回的原始网络位置提供商信息。不同的运营商使用不同的信息来确定位置,如WiFi数据、全球定位系统信息、附近的蜂窝塔等。根据您的载波允许的内容,您可以访问时间戳、纬度、经度、高度、精度和旅行距离。

样本代码:

代码语言:javascript
复制
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,time,distance,listener);
  1. 被动式.

此选项只意味着应用程序在处于最小化状态时可以侦听位置更新。这样做是为了节省电池的电量,这样你的应用程序提供商就不会在应用程序最小化的情况下全速运行。那将是巨大的电池消耗。被动位置可以侦听另一个应用程序请求位置更新。您可以访问时间戳,纬度,经度,高度和准确性。据我所知,您将无法确定该信息是从哪个提供者派生的。

样本代码:

代码语言:javascript
复制
<receiver android:name=".PassiveLocationChangedReceiver" android:enabled="true"/>
  1. NMEA.

虽然它不是人类可读的,但是您可以访问原始的NMEA字符串。通常,这些字符串用于编程访问,只对开发人员或工程师有意义。这些数据经常用于海事应用程序。这些数据只有在全球定位系统升温后才能获得。

资料来源:这一信息是从这里获取的。

此外,在获取位置时有一些非常常见的错误来源,从android文档中可以看到:

从移动设备获取用户位置可能很复杂。位置读取(不管源)包含错误和不准确的原因有几个。用户位置的一些错误来源包括:

  • 多种定位源

全球定位系统( GPS )、手机识别码(Cell)和无线网络(Wi)都可以为用户的定位提供线索。确定使用和信任哪个是在准确性、速度和电池效率方面的权衡问题。

  • 用户移动

由于用户位置发生变化,您必须经常通过重新估计用户位置来说明移动情况。

  • 变精度

来自每个位置源的位置估计在精度上不一致。10秒前从一个源获得的位置可能比来自另一个或同一源的最新位置更准确。

请花点时间阅读谷歌的http://developer.android.com/guide/topics/location/strategies.html文档。

有关LocationManager 这里的更多信息。

票数 8
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32141787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档