如何在android中使用加速度计计算步数

M.A*_*ali 27 android

我需要在走路时不计算步数.所以我正在使用加速度计.在上面的编码中,我得到了加速计传感器的x,y,z值.这是我到目前为止所做的.我的问题是由x,y,z如何计算步行时的步数?我从链接中获取以下代码

http://pedometer.googlecode.com/svn/trunk/src/name/bagi/levente/pedometer/Pedometer.java

我的代码:

 import android.app.Activity;
 import android.content.Context;
 import android.os.Bundle;
 import android.widget.TextView;
 import android.widget.Toast;

 public class Accelerometer extends Activity implements AccelerometerListener {

private static Context CONTEXT;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    CONTEXT = this;
}

protected void onResume() {
    super.onResume();
    if (AccelerometerManager.isSupported()) {
        AccelerometerManager.startListening(this);
    }
}

protected void onDestroy() {
    super.onDestroy();
    if (AccelerometerManager.isListening()) {
        AccelerometerManager.stopListening();
    }

}

public static Context getContext() {
    return CONTEXT;
}

/**
 * onShake callback
 */
public void onShake(float force) {
    Toast.makeText(this, "Phone shaked : " + force, 1000).show();
}

/**
 * onAccelerationChanged callback
 */
public void onAccelerationChanged(float x, float y, float z) {
    ((TextView) findViewById(R.id.x)).setText(String.valueOf(x));
    ((TextView) findViewById(R.id.y)).setText(String.valueOf(y));
    ((TextView) findViewById(R.id.z)).setText(String.valueOf(z));
}

 }
Run Code Online (Sandbox Code Playgroud)

请帮我.

Ale*_*dam 16

你不会在这里找到一个只计算步骤的简单代码(它太复杂了).但如果您有兴趣,那里有信息:


tim*_*ror 8

您可以使用x,y,z值估算手机上的重力...

float g = (x * x + y * y + z * z) / (SensorManager.GRAVITY_EARTH * SensorManager.GRAVITY_EARTH);
Run Code Online (Sandbox Code Playgroud)

...这里的值为1 =正常(1g是正常的)

通过计算给定样本周期内指定g值以上的峰值数量(例如,每分钟步数为6秒和10乘以10),可以非常轻松地构建原始计步器

比如说记录以ms为单位记录> 2的ag的时间...然后峰值将继续上升....然后回到2以下...可能是0.5或者什么......那么它会上升再次> 2 ...此时停止时钟.

...然后你有一个完整的循环定时!

为了稳定结果,最好计算几个周期.