2010-10-22 6 views
5

में अंतराल पर अपडेट नहीं होता है मुझे समस्या है कि मेरी सेवा जिसमें स्थानसूची लागू किया गया है, हर 500ms में ऐसा लगता है कि एक जीपीएसअपडेट प्राप्त होता है। इससे कोई फर्क नहीं पड़ता कि मैं minocime अनुरोध में रखता हूं LocationUpdates फ़ंक्शन।requestLocationUpdates एंड्रॉइड

मेरे कोड का टुकड़ा:

public class LocationService extends Service implements LocationListener { 

    LocationManager locMan; 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 

     locMan = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
     locMan.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER; 
     locMan.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60000, 1, this); 

    } 

    public void onLocationChanged(Location location) { 
     Log.d("Loc", "Location has been changed"); 
    } 
} 

एक बटन से अपने मुख्य गतिविधि में मैं, startService() कहते हैं इस के बाद यह पृष्ठभूमि में चलाने चाहिए, लेकिन यह निरंतर अपडेट देता होगा।

उत्तर

1

मैं कुछ चीजें अपनी स्थिति के साथ कुछ गलत देखें:

जीपीएस की सटीकता पर सबसे अच्छा 3 मीटर के बारे में है, और है कि इष्टतम स्थितियों में है। तो यदि स्थिति 1 मीटर से बदलती है तो अद्यतन का अनुरोध करने का अर्थ नहीं है। जीपीएस शोर आसानी से आंदोलन का संकेत दे सकता है जब वास्तव में डिवाइस अभी भी बैठा है। न्यूनतम डिज़ाइन कम से कम 10 मेरी सिफारिश होगी।

मुझे नहीं लगता कि आप क्यों कॉल कर रहे हैंप्रोवाइडर सक्षम() क्योंकि आप लौटाए गए मूल्य के साथ कुछ भी नहीं करते हैं।

आप कहते हैं कि स्टार्ट सेवा() चीजों को पृष्ठभूमि में चलाना चाहिए, लेकिन ऐसा नहीं है। एक सेवा पृष्ठभूमि में तब तक नहीं चलती जब तक आप इसके लिए कुछ प्रकार का पृष्ठभूमि धागा नहीं बनाते। इस जवाब में कवर करने के लिए बहुत कुछ है कि यह समझाने के लिए कि सेवाएं कैसे काम करती हैं। ऑनलाइन जाओ और कुछ पढ़ना, या एंड्रॉइड विकास पर एक अच्छी किताब प्राप्त करें।