我嘗試了以下方法,但它不能正常工作。如果設備以正常方式保存,那麼它也會觸發搖動事件。如何在Android中使用Accelerometer上下搖動?
@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
long curTime = System.currentTimeMillis();
// only allow one update every 200Ms.
if ((curTime - lastUpdate) > 200) {
lastUpdate = curTime;
x = event.values[SensorManager.DATA_X];
y = event.values[SensorManager.DATA_Y];
z = event.values[SensorManager.DATA_Z];
Vibrator vibrate = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
if (Round(y, 4) > 22) {
vibrate.vibrate(200);
Log.d("sensor", "==== Up Detected===");
} else if (Round(y, 4) < -20) {
vibrate.vibrate(200);
Log.d("sensor", "==== Down Detected=== ");
}
mLastX = x;
mLastY = y;
mLastZ = z;
}
}
public static float Round(float Rval, int Rpl) {
float p = (float) Math.pow(10, Rpl);
Rval = Rval * p;
float tmp = Math.round(Rval);
return (float) tmp/p;
}
請幫忙。
任何幫助將高度讚賞..
感謝
我沒有得到的是 - 他們有很多錯誤的讀數,並沒有真正確切的答案 – moDev
你從傳感器獲得的值的第一部分是不可信任的。在電氣工程方面有一個關於如何分析和調整信號讀數的研究,這就是所謂的數字信號處理。其中的概念是過濾器 - 它是一種接受,拒絕或部分接受閱讀的方式。你需要一個,我只是不知道使用正確的。 –