在网络与 gps 提供商之间连接

Posted

技术标签:

【中文标题】在网络与 gps 提供商之间连接【英文标题】:Connecting between the network to the gps provider 【发布时间】:2013-01-16 20:51:36 【问题描述】:

如果我从上一个位置移动 200 米,我创建了一个应用程序,它每 10 分钟生成一个位置。 它基于网络和 gps 提供商。

我的问题是,如果我长时间在同一个地方,就会发生错误。 让我们假设 gps 提供商生成了一个精度为 600 的位置,而网络提供商生成了一个精度为 800 的位置。 我的应用程序将选择 gps 提供商,下一次 gps 生成位置的时间是我通过 200 个无线电但看起来网络位置不断生成位置,其中一些可能更准确,然后我的位置发生了变化而我在同一个地方。

这是一个问题,因为在同一个地方呆了几个小时会为我生成位置音调而不是 1(这是我正在寻找的)。

我没有附上代码,因为我猜这是更理论的问题。

编辑代码附件

更新请求:

mLocationManager.requestLocationUpdates(provider, TEN_SECONDS*6*10, TEN_METERS*20, listener);

在位置之间进行选择:

    if(gpsLocation == null || gpsLocation.getAccuracy() > 1000)
    
        if(!(networkLocation == null || networkLocation.getAccuracy() > 1000))
            location = networkLocation;
    
    else
        if(networkLocation == null)
        
            if(gpsLocation.getAccuracy() < 1000)
                location = gpsLocation;
        
        else
            if(gpsLocation.getAccuracy() < networkLocation.getAccuracy() && gpsLocation.getAccuracy() < 500)
                location = gpsLocation;
            else
                if(networkLocation.getAccuracy() < 1000)
                    location = networkLocation;
    if(location!=null)
    
        Message.obtain(mHandler,
                UPDATE_LATLNG,
                location.getLatitude() + ", " + location.getLongitude()).sendToTarget();
         if (mGeocoderAvailable) 
            doReverseGeocoding(location);
    

这里是处理程序:

   mHandler = new Handler() 
    
        public void handleMessage(Message msg) 
        
            if(msg.what == UPDATE_ADDRESS)
            
                LocationService.this.address = (String) msg.obj;
                new SendLocation(LocationService.this.id,(String)msg.obj); //sends location to the db
                LocationService.this.gpsLocation = null;
                LocationService.this.networkLocation = null;
            
        
    ;

【问题讨论】:

【参考方案1】:

如果您通过 GPS 提供商获取位置,它会更准确,因此,如果下次您通过网络提供商获取位置并且相差超过 500 米,则将其存储为值,如果位置更小比这个值是由网络提供商给出的跳过它。如果位置由 GPS 提供,则将其存储为当前位置。

【讨论】:

以上是关于在网络与 gps 提供商之间连接的主要内容,如果未能解决你的问题,请参考以下文章

网络连接已关闭,但位置提供者是 NetworkProvider

从 Fused Location Provider 获取 GPS 或网络提供商

gps 使用网络提供商和 gps 提供商?

Android 网络提供商和 GPS 提供商返回 null

如何检测位置提供者? GPS 或网络提供商

如何同时使用 GPS 和网络提供商在 Android 中获取当前位置的纬度和经度值