2012-03-25 4 views
2

У меня есть простой код для Android, который можно периодически отправлять по базе данных GPS через веб-службу. Для целей тестирования я установил minTime в 2000 мс.Мой телефон не двигается, но данные GPS все еще меняются

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

Но ...

  1. , когда мой телефон не движется, до сих пор она вставляет различные долготы и широты значения в базе данных.
  2. Даже я отключил 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 

     } 
} 
} 
+0

Может быть, у вас есть ошибка в коде, который отправляет данные на веб-службу? Можете ли вы разместить здесь свой код? – Olegas

+0

Сателлиты двигаться. Интерпретация местоположения вашего телефона основана на «лучшей догадки» в результате положения нескольких спутников. Также комментарий Тэда Хоппа об использовании не-GPS имеет отношение к доступности сетей провайдеров телефонов. – Squonk

+0

Я добавил остальную часть кода ,,, – Randi

ответ

2

GPS имеет неотъемлемую неточность, поэтому я бы ожидал незначительных изменений. Я не знаю, почему он будет меняться при повороте GPS, хотя (как отмечают другие ответы, вероятно, он использует альтернативный источник, такой как триангуляция Wi-Fi).

4

Android использует GPS, если он доступен, но не полагается только на GPS. Внутренние факторы, когда они используют то, какие источники данных являются сложным предметом, как описано в руководстве по теме Obtaining User Location. Изменения местоположения могут произойти, например, из стратегий переключения телефона, чтобы сократить время автономной работы.

+0

Я попытался проверить расстояние между двумя местами в событии onlocationchanged. если значение расстояния больше 30 метров, я его игнорировал. но как-то я получаю такие расстояния, как 400.3, 500.7, даже если устройство STILL. Что я могу сделать в этой ситуации? –

5

В настройках с низкой точностью данные будут получать от сетей Wi-Fi. Установите флажок «Установка/местоположение/использование беспроводных сетей» на вашем телефоне Android.

Смежные вопросы