2010-07-26 4 views
5

Я немного борюсь с LocationListener в Android. Я хочу сделать приложение, которое получит текущее местоположение GPS, а затем потом спят в течение длительного времени. День или больше. В этот период времени я хочу, чтобы значок уведомления GPS не показывался.Отключить значок GPS, когда LocationListener спал

Что у меня есть сейчас, находится в onLocationChanged a Thread.sleep (x), но это сохранит значок в период сна. Как я могу это сделать, и есть ли лучший подход, чем использовать Thread.sleep?

Заранее спасибо

ответ

4

Вы должны отключить LocationManager укомплектовать для этого. Я сделал это в своем приложении, где я проверяю местоположение каждые 10 секунд, потому что я узнал, что при выключении экономит немного больше энергии аккумулятора, чем min_distance или min_time для LocationManager.

Что-то вроде:

// Turning off 
mLocationManager.removeUpdates(gpsListener); 
mLocationManager = null; 

// Turning on again 
mLocationManager = (LocationManager) getApplicationContext().getSystemService(Context.LOCATION_SERVICE);    
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, GPS_MINTIME, GPS_MINDISTANCE, gpsListener); 

значок исчезнет до LocationManager включается снова.

+0

Эй Fluffball Да я, наконец, понял это, сделал это именно так, как вы описываете. Я также узнал, что Thread.sleep - это плохо. Читайте о классе Handler и о том, как откладывать задачи. Это оказалось ужасным, так как я закончил с рекурсивными функциями. И поскольку у меня переменная задержка, я не мог использовать метод повторения. Я, наконец, застрял с диспетчером аварийной сигнализации, и он работает как шарм. Спасибо за ваш ответ :) – Andreas

1

Если у вас есть накладки, думает отключить расположение на них тоже:

@Override 
protected void onResume() 
{ 
    Log.i("ProjetTEA", "onResumeMain"); 
    if (mLocationListener != null) 
    { 
     mLocationOverlay.enableMyLocation(); 
     mLocationManager = (LocationManager) getApplicationContext().getSystemService(LOCATION_SERVICE); 
     mLocationManager.requestLocationUpdates(mBestProvider, 10000, 2, mLocationListener); 
    } 
    super.onResume(); 
} 

@Override 
protected void onPause() 
{ 
    Log.i("ProjetTEA", "onPauseMain"); 
    mLocationOverlay.disableMyLocation(); 
    mLocationManager.removeUpdates(mLocationListener); 
    mLocationManager = null; 
    super.onPause(); 
} 
Смежные вопросы