计算垂直跳跃时间

时间:2016-04-04 20:16:17

标签: java android accelerometer android-sensors gyroscope

你好我正在使用一个应用程序来计算你正在进行多少跳跃,我使用陀螺仪为这个应用程序计算你正在进行的跳跃。但我遇到的问题是,当我稍微移动设备时,它算作跳跃,而这不是我想要的。我想要它,当它达到一个高度时它会被视为一个跳跃。

int count = 0;
public void onSensorChanged(SensorEvent event) {
    double d = Math.round(Math.sqrt(Math.pow(2, event.values[0]) + Math.pow(2, event.values[1]) + Math.pow(2, event.values[2])) - 2);
    String result ="";

    if(d != 0){
        count++;
        result = String.valueOf(d/100.0);
    }
    text.setText("jump counts" + " " + count);
    text.invalidate();
    Log.i("Gyro", result);
}

1 个答案:

答案 0 :(得分:1)

如果陀螺仪返回的距离大于或等于该阈值,您可以引入一个计算跳跃的阈值。

int count = 0;

    public void onSensorChanged(SensorEvent event) {
        double d = Math.round(Math.sqrt(Math.pow(2, event.values[0]) + Math.pow(2, event.values[1]) + Math.pow(2, event.values[2])) - 2);
        String result ="";
        SharedPreferences preferences=PreferenceManager.getDefaultSharedPreferences(context);

        float threshold=preferences.getFloat(KEY,defaulttValue)
        if(d != 0 && d>=threshold){
            count++;
            result = String.valueOf(d/100.0);
        }
        text.setText("jump counts" + " " + count);
        text.invalidate();
        Log.i("Gyro", result);
    }

此阈值可由用户校准,存储在共享首选项中,以便以后修改。