2016-04-03 11 views
12

मैं एंड्रॉइड वेयर के लिए एक एप्लिकेशन विकसित कर रहा हूं। यह एक्सेलेरोमीटर सेंसर से निर्देशांक सुनता है और एक पैटर्न पाता है।एक्सेलेरोमीटर सेंसर एक सेवा में चलने वाले नुकसान

ऐसा करने के लिए, जब उपयोगकर्ता बटन पर क्लिक करता है, तो सेवा शुरू होती है और सूची में निर्देशांक स्टोर करना शुरू कर देती है। आमतौर पर, एक्सेलेरोमीटर सेंसर प्रति सेकंड 4 से 5 निर्देशांक लॉग करता है।

समस्या कभी-कभी ऑनसेंसर चेंज() विधि कई सेकंड के दौरान डेटा प्राप्त नहीं करती है जिससे डेटा की हानि होती है और पैटर्न खोजने में परेशानी होती है। https://gist.github.com/cpalosrejano/8f0e59e47124275136fc3d5d941faa07

बातें मैं कोशिश की है:

  • मैं एंड्रॉयड उपयोग कर रहा हूँ: stopWithTask = false को रोकने के लिए जब गतिविधि मर जाता है सेवा को रोकने के लिए

    यहाँ मेरी सेवा का एक सार है।

  • सेवाओं ने समन्वय रिकॉर्डिंग करते समय डिवाइस को सोने के लिए जाने के लिए वेक लॉक का भी उपयोग किया है।

मैं क्या गलत कर रहा हूं? डेटा हानि के बिना एक्सेलेरोमीटर सेंसर से कॉलबैक प्राप्त करने का कोई और तरीका है?

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

+0

क्या आपने एक अलग 'सेंसर मैनेजर.SENSOR_DELAY_ * 'निरंतर उपयोग करने का प्रयास किया है? इस मुद्दे पर कोई प्रभाव? – String

उत्तर

0

थोड़ा देर हो चुकी है, लेकिन फिननाली मुझे समाधान मिला।

मैं startForeground(int, Notification) विधि के साथ अग्रभूमि में सेवा शुरू करता हूं, इसलिए सेवा कभी नहीं रुक जाएगी। इस फिक्स के साथ, आप कभी भी सेंसरवर नहीं खोलेंगे।

0

आप डिवाइस पर किसी फ़ाइल को डेटा लिखना और फ़ाइल से इसे पढ़ने के लिए क्या कर सकते हैं।

// When sensor value has changed 
@Override 
public void onSensorChanged(SensorEvent event){ 
    if(event.sensor.getType() == Sensor.TYPE_ACCELEROMETER){ 

    //Perform a background task to store the data 
    new SensorEventLoggerTask().execute(event); 

    // And continue to do whatever you want and grab the data 
    // The data will be saved in to a file on the device and read it from themre 
    } 
} 
संबंधित मुद्दे