android中的重力加速度计算

时间:2020-08-08 14:14:51

标签: java android android-studio android-studio-2.2

嗨,这是我的Android代码

  @Override
    public void onSensorChanged(final SensorEvent event) {

        //se l'evento generato è di tipo  MAGNETIC_FIELD
        if (event.sensor.getType() == Sensor.TYPE_GRAVITY) {

            DECIMAL_FORMATTER = new DecimalFormat("#.00");
            value.setText("X "+ DECIMAL_FORMATTER.format(event.values[0]) +"m/s2\n"+ "Y "+ DECIMAL_FORMATTER.format(event.values[1])+"m/s2\n"+ "Z "+ DECIMAL_FORMATTER.format(event.values[2])+"m/s2");


            TextView details = findViewById(R.id.details);

            details.setText(R.string.gravity_details);

            //invio evento ed attributi al metodo addEntry che aggiungerà gli elementi al grafico
            if (plotData) {
                addEntry(event);
                plotData = false;
            }
        }
    }

此代码在3个轴X Y和Z上打印重力加速度的值,但是我想打印一个值示例9,81 m/s2。我该怎么办?

1 个答案:

答案 0 :(得分:0)

您要查找的东西称为加速度矢量的幅值长度。可以使用勾股公式进行计算,另请参见wikipedia

double magnitude(float[] v) {
    return Math.sqrt(v[0]*v[0] + v[1]*v[1] + v[2]*v[2]);
}

要使用此方法,请执行以下操作:

    double acceleration = magnitude(event.values);
    value.setText(DECIMAL_FORMATTER.format(acceleration) +"m/s2\n");