यहाँ एक उदाहरण कोड है। इसे अपनी गतिविधि कक्षा में रखें:
/* put this into your activity class */
private SensorManager mSensorManager;
private float mAccel; // acceleration apart from gravity
private float mAccelCurrent; // current acceleration including gravity
private float mAccelLast; // last acceleration including gravity
private final SensorEventListener mSensorListener = new SensorEventListener() {
public void onSensorChanged(SensorEvent se) {
float x = se.values[0];
float y = se.values[1];
float z = se.values[2];
mAccelLast = mAccelCurrent;
mAccelCurrent = (float) Math.sqrt((double) (x*x + y*y + z*z));
float delta = mAccelCurrent - mAccelLast;
mAccel = mAccel * 0.9f + delta; // perform low-cut filter
}
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
};
@Override
protected void onResume() {
super.onResume();
mSensorManager.registerListener(mSensorListener, mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
protected void onPause() {
mSensorManager.unregisterListener(mSensorListener);
super.onPause();
}
और इसे अपने onCreate मेथड में जोड़ें:
/* do this in onCreate */
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mSensorManager.registerListener(mSensorListener, mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
mAccel = 0.00f;
mAccelCurrent = SensorManager.GRAVITY_EARTH;
mAccelLast = SensorManager.GRAVITY_EARTH;
आप तब "mAccel" पूछ सकते हैं, जहाँ भी आप वर्तमान त्वरण के लिए अपने आवेदन में चाहते हैं, धुरी से स्वतंत्र और गुरुत्वाकर्षण जैसे स्थैतिक त्वरण से साफ किया गया है। यह लगभग होगा। 0 अगर कोई मूवमेंट नहीं है, और, डिवाइस को शेक्ड करने पर> 2 कहते हैं।
टिप्पणियों के आधार पर - इसका परीक्षण करने के लिए:
if (mAccel > 12) {
Toast toast = Toast.makeText(getApplicationContext(), "Device has shaken.", Toast.LENGTH_LONG);
toast.show();
}
टिप्पणियाँ:
Accelometer निष्क्रिय किया जाना चाहिए onPause और सक्रिय onResume संसाधन (सीपीयू, बैटरी) को बचाने के लिए। कोड मानता है कि हम ग्रह पृथ्वी पर हैं ;-) और पृथ्वी के गुरुत्वाकर्षण में तेजी को आरंभ करता है। अन्यथा आप एक मजबूत "शेक" प्राप्त करेंगे जब आवेदन शुरू होगा और फ्री-फॉल से जमीन को "हिट" करेगा। हालांकि, कम-कट फिल्टर के कारण कोड को गुरुत्वाकर्षण के लिए उपयोग किया जाता है और यह एक बार शुरू होने पर अन्य ग्रहों या मुक्त स्थान पर भी काम करेगा। (आप कभी नहीं जानते कि आपका आवेदन कब तक उपयोग में होगा ... ;-)