嗨,这是我的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
。我该怎么办?
答案 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");