2012-03-25 43 views
2

我有一個簡單的android代碼,通過web服務定期將GPS位置發送到數據庫。爲了測試目的,我將minTime設置爲2000ms。我的手機沒有移動,但GPS數據仍在變化

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

但是......

    時,我的手機是不動的
  1. ,還是它插入不同的經度和緯度值到數據庫中。
  2. 即使我禁用GPS,它會向數據庫發送不同的經度緯度,直到我關閉手機和筆記本電腦之間的連接。

Web服務託管在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 

     } 
} 
} 
+0

可能是你有一些錯誤的代碼,這是發送數據到網絡服務?你可以在這裏發佈它的代碼嗎? – Olegas 2012-03-25 08:29:18

+0

衛星移動。由於多個衛星的位置,對手機位置的解釋基於「最佳猜測」。 Ted Hopp關於使用非GPS的評論也是基於電話提供商網絡的可用性。 – Squonk 2012-03-25 09:02:14

+0

我加了其餘的代碼,,, – Randi 2012-03-25 09:12:27

回答

2

GPS有內在的不精確性,所以我期望有輕微的變化。我不知道爲什麼當你打開GPS時它會保持變化,但(正如其他答案所指出的那樣,它可能使用了另一個來源,如WiFi三角測量)。

4

Android在可用時使用GPS,但不僅僅依賴於GPS。內部使用什麼數據源是一個複雜的主題,如指南主題Obtaining User Location中所述。例如,位置變化可能來自電話切換策略,以節省電池壽命。

+0

我試圖檢查onlocationchanged事件中兩個位置之間的距離。如果距離值超過30米,我忽略它。但不知何故,即使設備仍然靜止,我仍能獲得類似400.3,500.7的距離。在這種情況下我能做些什麼 – 2015-01-07 06:49:59

5

在低精度設置下,數據將從Wifi網絡接收。檢查您的Android手機上的設置/位置/使用無線網絡複選框。