2012-09-07 6 views
5

में एक ही समय में एकाधिक सेंसर डेटा प्राप्त करें अब मैं कंपन की निगरानी के लिए एक ऐप बनाने की कोशिश कर रहा हूं। मैं नौकरी खत्म करने के लिए एक्सेलेरोमीटर का उपयोग करता हूं, जब रिकॉर्ड त्वरण कुछ सीमा से अधिक हो जाता है, तो मैं इसे एक ट्रिगर कहता हूं। जब कोई ट्रिगर होता है, तो मैं ट्रिगर समय पर फ़ाइल में त्वरण, चुंबकीय क्षेत्र, प्रकाश स्तर डेटा (विभिन्न सेंसर से) लॉग करना चाहता हूं।एंड्रॉइड

समस्या अब यह है कि: मैं व्यक्तिगत सेंसर से डेटा प्राप्त कर सकता हूं, लेकिन एक ही समय में एकाधिक सेंसर से डेटा कैसे प्राप्त किया जा सकता है इसका पता नहीं लगा सका। उदाहरण के लिए: जब मैं त्वरण डेटा रिकॉर्ड करता हूं, तो मैं एक्सेलेरोमीटर के परिवर्तन की निगरानी के लिए एक सेंसरलिस्टर सेट कर सकता हूं, क्या मुझे एक ही समय में अन्य सेंसर से डेटा भी मिल सकता है?

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

+0

की ([वहाँ एंड्रॉयड में एक से अधिक सेंसर डेटा पुनः प्राप्त करने का कोई तरीका है] संभावित डुप्लिकेट http://stackoverflow.com/questions/4343342/is-there -ए-वे-टू-रीट्रीव-एकाधिक-सेंसर-डेटा-इन-एंड्रॉइड) –

उत्तर

6

हाँ आप इस इस प्रकार कर सकते हैं:

private SensorManager manager; 
private SensorEventListener listener; 

manager = (SensorManager) this.getSystemService(Context.SENSOR_SERVICE); 
listener = new SensorEventListener() { 
    @Override 
    public void onAccuracyChanged(Sensor arg0, int arg1) { 
    } 

    @Override 
    public void onSensorChanged(SensorEvent event) { 
     Sensor sensor = event.sensor; 
     if (sensor.getType() == Sensor.TYPE_ACCELEROMETER) { 
      ... 
     } 
     else if (sensor.getType() == Sensor.TYPE_GYROSCOPE) { 
      ... 
     } 
    } 
} 

manager.registerListener(listener, manager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_GAME); 
manager.registerListener(listener, manager.getDefaultSensor(TYPE_GYROSCOPE), SensorManager.SENSOR_DELAY_GAME); 
+1

धन्यवाद समानता, मैंने कोशिश की, लेकिन ऐसा लगता है कि एक ही समय में डेटा एकत्र नहीं किया जा रहा है, उदाहरण के लिए, जब सेंसर ईवेंट बदलता है, तो यह केवल जांच करें कि यह एक्सेलेरोमीटर या जीरोस्कोप है या नहीं। मैं क्या चाहता हूं जब एक्सेलेरोमीटर बदलता है, उसी समय, मैं एक्सेलेरोमीटर और जीरोस्कोप से डेटा एकत्र करता हूं। – calBear

+2

मुझे नहीं लगता कि वे इवेंट मॉडल इस तरह से काम करते हैं। ऐसा लगता है जब एंड्रॉइड सेंसर डेटा प्राप्त करता है, यह सब्स्क्राइब किए गए ईवेंट श्रोता को निष्पादित करता है, और फिर हमें ईवेंट से सेंसर डेटा मिलता है। ऐसा नहीं है कि हम किसी भी सेंसर से समय पर एक निश्चित बिंदु पर डेटा लाने जा सकते हैं। –

+0

@GregRandall क्या होगा यदि दोनों सेंसर एक ही समय में बदल गए? 'Event.values ​​[]' पर क्या लॉग किया जाएगा? – Chaine