Android 我的手机没有移动,但GPS数据仍在变化

Android 我的手机没有移动,但GPS数据仍在变化,android,gps,Android,Gps,我有一个简单的android代码,可以通过web服务定期将GPS位置发送到数据库。出于测试目的,我将minTime设置为2000ms lm=(LocationManager)getSystemService(Context.LOCATION_SERVICE); ll=new SpeedoActionListener(); lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,2000, 0,ll); 但是 当我的手机不移动时,它仍然会向数

我有一个简单的android代码,可以通过web服务定期将GPS位置发送到数据库。出于测试目的,我将minTime设置为2000ms

lm=(LocationManager)getSystemService(Context.LOCATION_SERVICE);
ll=new SpeedoActionListener();
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,2000, 0,ll);
但是

  • 当我的手机不移动时,它仍然会向数据库插入不同的经度和纬度值
  • 即使我禁用了GPS,它也会向数据库发送不同的经纬度,直到我关闭手机和笔记本电脑之间的连接
  • 网络服务托管在IIS7上,我的手机和笔记本电脑通过wi-fi连接

    虽然我的手机没有移动,为什么它会发送不同的位置

    private class SpeedoActionListener implements LocationListener
    {
    
        String result=null;
    
          @Override
          public void onLocationChanged(Location location) {
    
              if(location!=null) {
                lati=location.getLatitude();
    
                longi=location.getLongitude();
    
                String mylati=Double.toString(lati);
                String mylongi=Double.toString(longi);
                WebServiceCaller obj=new WebServiceCaller();
                result=obj.sendLocationData(mylongi, mylati);
                resultText=(TextView)findViewById(R.id.result);
                resultText.setText(result);
    
    
          }
    
    }
    
          @Override
          public void onProviderDisabled(String provider) {
                  // TODO Auto-generated method stub
    
          }
    
          @Override
          public void onProviderEnabled(String provider) {
                  // TODO Auto-generated method stub
    
          }
    
          @Override
          public void onStatusChanged(String provider, int status, Bundle extras) {
                  // TODO Auto-generated method stub
    
          }
    }
    }
    

    GPS具有内在的不精确性,所以我认为会有轻微的变化。我不知道为什么当你打开GPS时,它会不断变化(正如其他答案所指出的,它可能使用了另一种来源,如WiFi三角测量)。

    Android在可用时使用GPS,但不只是依靠GPS。当它使用什么样的数据源时,其内部是一个复杂的主题,如指南主题中所述。例如,位置变化可能来自手机切换策略,以节省电池寿命。

    在低精度设置中,数据将从Wifi网络接收。选中android手机上的“设置/定位/使用无线网络”复选框。

    可能是您的代码中有一些错误,正在向web服务发送数据?你能把代码贴在这里吗?卫星移动。对手机位置的解释是基于多颗卫星位置的“最佳猜测”。另外,Ted Hopp关于使用非GPS的评论与电话提供商网络的可用性有关。我添加了代码的其余部分,,,@Randi,有什么解决方案吗?我遇到了类似的问题。我已尝试在onlocationchanged事件中检查两个位置之间的距离。如果距离值超过30米,我将忽略它。但不知怎的,我得到了400.3500.7这样的距离,即使设备还在运行。在这种情况下我能做什么