2010-07-26 15 views
5

सो रहा है, तो मैं जीपीएस आइकन बंद कर देता हूं मैं एंड्रॉइड में स्थान लिस्टनर के साथ थोड़ा सा संघर्ष कर रहा हूं। मैं एक ऐसा ऐप बनाना चाहता हूं जो वर्तमान जीपीएस स्थान प्राप्त करे, और उसके बाद लंबे समय तक सो जाए। एक दिन या अधिक इस अवधि में मैं जीपीएस अधिसूचना आइकन दिखाना नहीं चाहता हूं।स्थान लिस्टनर

मेरे पास अब क्या है, ऑनलाक्शन में एक थ्रेड.sleep (x) बदल दिया गया है लेकिन यह नींद की अवधि में आइकन रखेगा। मैं यह कैसे कर सकता हूं, और Thread.sleep का उपयोग करने से बेहतर तरीका है?

अग्रिम धन्यवाद

उत्तर

4

में आपको लगता है कि के लिए LocationManager बंद करने के लिए पूरी तरह से है। मैंने इसे अपने ऐप में किया, जहां मैं केवल 10 सेकंड में स्थान की जांच करता हूं, 'कारण मुझे पता चला कि मोड़ बंद करना min_distance या LocationManager के min_time से थोड़ा अधिक बैटरी पावर बचाता है।

कुछ की तरह:

// 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 हाँ मैं अंत में, यह समझ से बाहर यह वास्तव में जिस तरह से आप का वर्णन किया था। मैंने यह भी सीखा कि थ्रेड.sleep खराब है। हैंडलर क्लास और कार्यों में देरी कैसे करें के बारे में पढ़ें। यह भयानक रूप से बदल गया क्योंकि मैं रिकर्सिव कार्यों के साथ समाप्त हुआ। और चूंकि मेरे पास एक परिवर्तनीय देरी है, इसलिए मैं दोहराव-विधि का उपयोग नहीं कर सका। अंततः मैं अलार्म प्रबंधक के साथ फंस गया, और यह एक आकर्षण की तरह काम करता है। आपके उत्तर के लिए धन्यवाद :) – 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(); 
} 
संबंधित मुद्दे