2011-06-22 14 views
6

प्राप्त करना तो मैं एक बटन प्रेस पर लाइट सेंसर (लक्स में स्पष्ट रूप से) के वर्तमान मूल्य को प्राप्त करने का एक तरीका ढूंढ रहा हूं। यहाँ कोड मैं प्रकाश संवेदक के नियंत्रण लागू करने के लिए उपयोग कर रहा हूँलाइट सेंसर वैल्यू

public class SensorActivity extends Activity implements SensorEventListener 
{ 
private final SensorManager mSensorManager; 
private final Sensor mLight; 
int minLux = 0; 
int currentLux = 0; 
int maxLux; 

public SensorActivity() 
{ 
    mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE); 
    mLight = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); 
} 

protected void onResume() 
{ 
    super.onResume(); 
    mSensorManager.registerListener((SensorEventListener) this, mLight, SensorManager.SENSOR_DELAY_NORMAL); 
} 

protected void onPause() 
{ 
    super.onPause(); 
    mSensorManager.unregisterListener((SensorListener) this); 
} 

public void onAccuracyChanged(Sensor sensor, int accuracy) 
{ 
    if(sensor.getType() == Sensor.TYPE_LIGHT) 
    { 

    } 
} 

public void onSensorChanged(SensorEvent event) 
{ 
    if(event.sensor.getType() == Sensor.TYPE_LIGHT) 
    { 

    } 
} 
} 

मैं भी एक समारोह

<Button android:layout_width="122px" android:id="@+id/widget35" android:text="Start" android:layout_height="wrap_content" android:layout_x="112dp" android:layout_y="249dp" android:onClick="onButtonDown"></Button> 

मैं वर्तमान लक्स मूल्य जबकि कैसे मिलेगा कॉल करने के लिए बटन बनाने के लिए इस कोड है ऐप पृष्ठभूमि में चल रहा है, और मैं int maxLux; में बटन प्रेस पर वर्तमान लक्स वैल्यू कैसे प्राप्त और स्टोर करूं?

उत्तर

8

जैसा कि here नोट किया गया है, वर्तमान सेंसर मूल्य को सीधे प्राप्त करना संभव नहीं है, और एंड्रॉइड के कुछ और हालिया संस्करणों को श्रोता पंजीकृत होने के साथ ही सेंसर चेंजेड ईवेंट उत्पन्न होगा (आपको बेसलाइन प्राप्त करने की अनुमति देता है) पहले के संस्करण नहीं है। तो एकमात्र चीज जो आप वास्तव में कर सकते हैं, उम्मीद है कि उपयोगकर्ता या तो एंड्रॉइड का एक नवीनतम संस्करण चला रहा है या मान बदलता है और उसके बाद ईवेंट.वैल्यूज़ [0] से वर्तमान लक्स वैल्यू को पुनर्प्राप्त करता है। सेंसर चेंज (उदा।):

public void onSensorChanged(SensorEvent event) 
{ 
    if(event.sensor.getType() == Sensor.TYPE_LIGHT) 
    { 
     currentLux = event.values[0]; 
     if (currentLux > maxLux) 
      maxLux = currentLux; 
    } 
} 

(अधिकतम लक्स और वर्तमान लक्स को फ्लोट करने के बाद)। यह तब बटन प्रेस के आधार पर वर्तमान मूल्य को पुनर्प्राप्त करने का मुद्दा छोड़ देता है, जिसे बटन दबाए जाने पर वर्तमान लक्स के मान को देखकर किया जा सकता है।

+0

सहायता के लिए धन्यवाद! जब यह बदलता है तो मुझे निरंतर मूल्य की आवश्यकता नहीं होती है। मैंने आपके कोड में कुछ समायोजन किए हैं। 'maxLux' मूल अंशांकन (बटन बटन के लिए क्या है) के आधार पर स्थिर होगा, फिर स्क्रीन की चमक 'maxLux' से' currentLux' के प्रतिशत के आधार पर बदल जाएगी। – Cistoran

संबंधित मुद्दे