Моя программа Android с использованием GPS очень неточна - PullRequest
1 голос
/ 08 декабря 2011

Я создал программу с использованием GPS, а ее Широта и Долгота находятся на расстоянии около 8 миль.

Я думал, что это может быть из-за того, что я внутри, но когда я использую карты Google на своем телефоне, он показывает мнемой дом.

Есть идеи, почему это может быть?

Код ниже:

public class Clue extends Activity {

public static double latitude;
public static double longitude;
LocationManager lm;
LocationListener ll;
Location location;

      /** Called when the activity is first created. */
  @Override
     public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
  setContentView(R.layout.blah);

  Criteria criteria = new Criteria();
  criteria.setAccuracy(Criteria.ACCURACY_FINE);

  lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
  ll = new MyLocationListener()}

private boolean getLoc() {
location = getLocation(); 

   longitude = location.getLongitude();
   latitude = location.getLatitude();
return inCorrectPlace(params);
}


    private Location getLocation() {
  lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll);   
  return lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
}
}

Я удалил неактуальный код, вся помощь будет оценена.

Ответы [ 2 ]

3 голосов
/ 08 декабря 2011

ключевая ошибка, которую вы делаете, думает, что вы можете мгновенно запросить точное определение местоположения. Звонок getLastKnownLocation() дает вам место, которое может быть довольно старым. Вы должны сначала сказать телефону, чтобы начать пытаться определить местоположение. это занимает время, поэтому вы получаете обновление местоположения асинхронно.

Вам нужно позвонить requestLocationUpdates(), а затем получить обновления в обработчике onLocationChanged() в вашем классе LocationListener. обновления местоположения не обязательно будут получены сразу же. это может занять от нескольких секунд до нескольких минут.

см. Руководство разработчика Android http://developer.android.com/guide/topics/location/obtaining-user-location.html

2 голосов
/ 08 декабря 2011

Вы не можете действительно полагаться на getLastKnownLocation, чтобы быть надежным.Это может быть устаревшим, неточным или нулевым.

Что вам нужно сделать, это использовать requestLocationUpdates, чтобы активно получить исправление.

Насколько карты Google фиксируют ваше местоположениеВозможно, он использует поставщика сети, пока вы проверяете только последнее исправление GPS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...