2011-01-20 7 views
6

में एक सेंसर की लगातार निगरानी करें। मैं 25 मिलीसेकंड से कम की मतदान दर के साथ एक्सेलेरोमीटर सेंसर की निगरानी करने का सबसे अच्छा तरीका जानने का प्रयास कर रहा हूं। मैंने यूजर विकल्प को निरंतर निगरानी स्थिति में स्विच करने के लिए एक यूआई विकल्प लागू किया है और इसे बैटरी नाली की विधियों से साफ़ कर दिया है। एंड्रॉइड मेमोरी और धागे की सफाई करने के तरीके के कारण एक रिमोट सेवा डेमॉन थ्रेड पर सबसे अच्छा तरीका होगा? मुद्दा यह है कि एक्सेलेरोमीटर को जितनी बार संभव हो सके बंद कर दें, बैटरी नाली को शापित किया जाए। और इस निगरानी को लंबे समय तक चलने की जरूरत है, शायद 24 घंटों से भी अधिक, फिर भी मुझे बिजली की खपत के परिणामों का एहसास हो जाता है। किसी भी सुझाए गए पढ़ने या कोड स्निपेट की सराहना की जाएगी।एंड्रॉइड

बस एक नया व्यक्ति एंड्रॉइड समुदाय के ज्ञान से सलाह की तलाश में है। अग्रिम धन्यवाद,

-स्टीव

स्पष्टीकरण: मैं तुरंत त्वरण में कोई परिवर्तन होता है पता लगाने के लिए कोशिश कर रहा हूँ। मेरा कोड अक्ष द्वारा भेदभाव करता है, लेकिन एक्सेलेरोमीटर से वास्तविक समय डेटा प्राप्त करना मेरा लक्ष्य है।

+0

एक्सेल एंड्रॉयड पर एक सेंसर btw है। यह धक्का देता है, आप समझदारी से मूल्यों को खींच नहीं सकते! – LordT

+0

@ लॉर्ड - एक पुन: पढ़ने पर मुझे एहसास हुआ कि मैं बेहतर वाक्यांश कर सकता था। मैं एक्सेल सेंसर से अपडेट प्राप्त करने के लिए एक कस्टम श्रोता इंटरफ़ेस का उपयोग कर रहा हूं। यह बात बताने के लिए धन्यवाद। – Kingsolmn

+0

ओह, ठीक है, यह और अधिक समझ में आता है। जैसा कि कहा गया है, मैं इसके लिए एक सेवा के साथ जाऊंगा - रिमोट सेवा का उपयोग करके आप पृष्ठभूमि में – LordT

उत्तर

2

हमने एंड्रॉइड Services का उपयोग करके ऐसा किया - उन्हें एक गतिविधि से शुरू किया जा सकता है लेकिन पृष्ठभूमि में चल रहा है। शायद यही वह है जिसे आप ढूंढ रहे हैं!
कुछ howtos:

  1. http://developerlife.com/tutorials/?p=356
  2. http://developer.android.com/guide/topics/fundamentals.html#procthread
+0

भले ही पोस्टर बैटरी नाली में रूचि नहीं रखता है, लेकिन मैं थोड़ा उत्सुक हूं - यह कितना बुरा था? – Demiurg

+0

मुझे सटीक संख्या याद नहीं है, लेकिन हमारे पूर्ण सेटअप के लिए, हमें जी 1 से लगभग 10 घंटे मिलते हैं (उन दिनों में वापस :) :) - हालांकि, यह दिल की धड़कन और अन्य संख्याओं को> 300 हर्ट्ज पर और ब्लूटूथ पर संचारित कर रहा था । मुझे लगता है कि एक्सेलेरोमीटर – LordT

+0

का उपयोग करने से हमें 16 घंटे से अधिक समय मिला है डिवाइस हाइबरनेशन के बारे में क्या? एक बार जब डिवाइस सो जाता है और उन सेंसर को बंद कर देता है तो आपको कोई सेंसर अपडेट नहीं मिलेगा। क्या आप हर समय जागने के साथ चलते थे? – MikeL

1

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

class MonitorThread extends Thread { 
    ... 
    public void run() { 
     for (;;) { 
      long ms = 0; 
      int nanos = 250000; 
      ... // Do something or compute next delay to wait 
      try { 
       Thread.sleep(ms, nanos); 
      } catch (InterruptedException ex) { 
      } 
     } 
    } 
} 

देखें http://developer.android.com/reference/java/lang/Thread.html

आप एक बहुत ही कम देरी (.250 एमएस) निर्दिष्ट तो यह सीपीयू गहन हो जाएगा। आप इस देरी को बढ़ाने या कम करने के लिए शायद एक्सेलेरोमीटर के परिणाम का उपयोग कर सकते हैं। उदाहरण के लिए, यदि आप पाते हैं कि कोई त्वरण नहीं है, तो देरी बढ़ाएं (यह आपके ऊपर है लेकिन 100ms उचित या उससे भी अधिक लगता है)। जैसे ही आप कुछ पता लगाते हैं, देरी को कम करें। यह सब आपके आवेदन पर निर्भर करता है।

+0

एंड्रॉइड पर, मैं वास्तव में इसके लिए एक हैंडलर का उपयोग करूंगा, अगर आपको वास्तव में इसकी आवश्यकता है! – LordT

+0

@ ciceron- मैं तत्काल पता लगाने की कोशिश कर रहा हूं त्वरण में बदलाव है। मेरा कोड अक्ष द्वारा भेदभाव करता है, लेकिन एक्सेलेरोमीटर से वास्तविक समय डेटा प्राप्त करना लक्ष्य है। नींद अंतराल को नियंत्रित करने के लिए एक्सेल डेटा का उपयोग करने के सुझाव के लिए धन्यवाद, अच्छा विचार! – Kingsolmn