如何找到加速度计的值?

How to find a value for accelerometer?

我正在努力摇动 phone function.I 想用同样的力量摇动 phone 并获得相同的反馈,这样我就可以 运行 这个项目不同的设备很好。但是现在,我发现不同的设备有完全不同的价值。所以有人有什么建议吗? 现在给你看代码:

public void onSensorChanged(SensorEvent event) {
      if (event.sensor.getType() != Sensor.TYPE_ACCELEROMETER) {
            return;
        }
        float[] values = event.values;
        float x = values[0]; //X value
        float y = values[1]; //Y value
        float z = values[2]; //Z value
       if (isShaking(x, sMinVale, event) || isShaking(y, sMinVale, event) || isShaking(z, sMinVale, event)) {
            vibrator.vibrate(200);
            ToastUtils.showToast(mContext, "检测到手机晃动了");
        }

private boolean isShaking(float x, int minValue, SensorEvent event) {
    return Math.abs(x) > event.sensor.getMaximumRange();
}

为什么要重新发明轮子?!看看这个 Library

这是一个如何使用它的例子

  public class Demo extends Activity implements ShakeDetector.Listener {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
            ShakeDetector sd = new ShakeDetector(this);
            sd.start(sensorManager);

            TextView tv = new TextView(this);
            tv.setGravity(CENTER);
            tv.setText("Shake me, bro!");
            setContentView(tv, new LayoutParams(MATCH_PARENT, MATCH_PARENT));
        }

        public void hearShake() {
            Toast.makeText(this, "Don't shake me, bro!", Toast.LENGTH_SHORT).show();
        }
    }