Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在图形上绘制加速度变化_Java_Android_Accelerometer_Sensors - Fatal编程技术网

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有意义的多,那么它正在撞到某个东西上。