Java 在图形上绘制加速度变化
我需要在图表上画一个加速度变化。我已经设法从加速计得到了值Java 在图形上绘制加速度变化,java,android,accelerometer,sensors,Java,Android,Accelerometer,Sensors,我需要在图表上画一个加速度变化。我已经设法从加速计得到了值 Sensor accel = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); sensorManager.registerListener(this, accel, SensorManager.SENSOR_DELAY_NORMAL); 现在我只需要画出加速度变化的信号,例如,如果用户摔下手机。我所做的: @Override publ
Sensor accel = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
sensorManager.registerListener(this, accel, SensorManager.SENSOR_DELAY_NORMAL);
现在我只需要画出加速度变化的信号,例如,如果用户摔下手机。我所做的:
@Override
public void onSensorChanged(SensorEvent event) {
if (started) {
double x = event.values[0];
double y = event.values[1];
double z = event.values[2];
long timestamp = System.currentTimeMillis();
double sec = (timestamp-timestampStart)/1000.0;
double e = Math.sqrt(Math.pow(x,2)+Math.pow(y,2)+Math.pow(z,2));
eSeries.add(sec, e);
mChart.repaint();
}
}
问题是,当手机不移动时,“e”返回的值总是接近10,当它们的值不变时,该值应为0。。。你知道怎么了吗?我很沮丧-\你说得对,谢谢!你可以把这个贴在评论上,我会把它解决:)嗯,这只是另一个问题,现在我在做这个时有一些负值:double e=Math.sqrt(Math.pow(x,2)+Math.pow(y,2)+Math.pow(z,2))-重力;对例如,如果你在手机上施加一个向上的力,你的测量值将小于重力。如果去掉重力,那么总数是负数。我不确定你是否可以简单地移除重力值,但是可以使用方向传感器,你可以计算重力产生的矢量,并将其从x中移除,在计算加速度向量的范数之前,先计算y和z。下面是一个例子,说明为什么不能从最终值中去掉g:假设你的手机静止在一个正在经历1g横向加速度的火箭中。你会看到x=0,y=10,z=10。标准是14.14。如果你现在去掉g,你会得到4.14。但是如果你忽略g,你会读到y=10,z=0,标准值是10。现在,我认为你不应该试图删除或忽略g。如果加速度的标准值正好是g,那么装置很有可能仍然存在。如果为0,则为自由落体。如果它比g更重要,那它就是撞到了什么东西上。我真的很沮丧-u-你说得对,谢谢!你可以把这个贴在评论上,我会把它解决:)嗯,这只是另一个问题,现在我在做这个时有一些负值:double e=Math.sqrt(Math.pow(x,2)+Math.pow(y,2)+Math.pow(z,2))-重力;对例如,如果你在手机上施加一个向上的力,你的测量值将小于重力。如果去掉重力,那么总数是负数。我不确定你是否可以简单地移除重力值,但是可以使用方向传感器,你可以计算重力产生的矢量,并将其从x中移除,在计算加速度向量的范数之前,先计算y和z。下面是一个例子,说明为什么不能从最终值中去掉g:假设你的手机静止在一个正在经历1g横向加速度的火箭中。你会看到x=0,y=10,z=10。标准是14.14。如果你现在去掉g,你会得到4.14。但是如果你忽略g,你会读到y=10,z=0,标准值是10。现在,我认为你不应该试图删除或忽略g。如果加速度的标准值正好是g,那么装置很有可能仍然存在。如果为0,则为自由落体。如果它比g有意义的多,那么它正在撞到某个东西上。