слушатель местоположения - PullRequest
1 голос
/ 25 января 2011

Я использую слушатель местоположения, чтобы получить long & lat для моего приложения для Android.

Я работаю со следующим кодом:

public Location getLastKnownLocation()
{
 Location location=null;
 try
 {
 // Get the location manager
 mLocMgr = (LocationManager) ctx.getSystemService(Context.LOCATION_SERVICE);
 // List all providers:
 // List<String> providers = mLocMgr.getAllProviders();

 Criteria criteria = new Criteria();
 bestProvider = mLocMgr.getBestProvider(criteria, false);
 location = mLocMgr.getLastKnownLocation(bestProvider);
 if(location==null)
 {
  Thread.sleep(5000);
  location=mLocMgr.getLastKnownLocation(bestProvider);
 }
 }
 catch(Exception e)
 {
  Log.i("program", e.getMessage());
 }
 return location;
}

public Location updateCurrentLocation()
{
 Location mLoc=null;
 try
 {
 mLoc=getLastKnownLocation();
 mlocListener = new LocListener(); 
 mLocMgr.requestLocationUpdates(bestProvider, 0, 0, mlocListener);
 mLoc=getLastKnownLocation();
 }
 catch(Exception e)
 {
  Log.e("program", e.getMessage());
 }
 return mLoc;
}

Работает абсолютно нормально. Но столкнулся с проблемой, когда мы выключили устройство и запустили его снова. Тогда я получаю нулевое местоположение. Однако после запуска карты Google, она начинает работать снова. Не могли бы вы, ребята, помочь мне в этом, потому что я не хочу запускать карту Google перед запуском приложения. Спасибо за поддержку!

Ответы [ 2 ]

3 голосов
/ 25 января 2011

Ваш метод getLastKnownLocation, скорее всего, потерпит неудачу, когда вы выключите и включите свое устройство.

И я вижу, что вы вызываете его, прежде чем подписаться на лист обновления местоположения:

 mLoc=getLastKnownLocation();  //<<<<<<<<<<<<<
 mlocListener = new LocListener(); 
 mLocMgr.requestLocationUpdates(bestProvider, 0, 0, mlocListener);

Зачем вам нужно звонить getLastKnownLocation()?Он не будет работать сразу после запуска вашего устройства.

Когда вы используете карту Google, он изящно пытается прослушать обновление местоположения.И, как только он получит хотя бы одно обновление местоположения, ваш getLastKnownLocation начнет работать.

Я вижу, что ваша архитектура нуждается в переосмыслении (если имена ваших методов соответствуют)

Это должновызываться ТОЛЬКО ОДИН РАЗ, в каком-то подходящем месте, когда запускается ваше приложение.

mLocMgr.requestLocationUpdates(bestProvider, 0, 0, mlocListener);

Затем выполните все необходимые обновления в onLocationChanged(Location location)

1 голос
/ 13 декабря 2012

Little Flyffy Местоположение библиотеки: http://code.google.com/p/little-fluffy-location-library/

Просто, быстро, легко!

эта библиотека уведомит вас об обновлениях вашего местоположения.

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