android - 如何使用计步器计算步数

标签 android

<分区>

我开发了应用程序来计算步行消耗的卡路里,因为我使用 SensorEventListener (ACCELEROMETER) 我从 X、Y、Z 获得三个值。 我的问题是如何使用这三个 X、Y、Z 计算步数。 这是我获取 X、Y、Z 值的代码。我也使用 GPS。但我需要在 Android 中使用计步器计算步数 guyzz PLZ 帮助我。

package com.mxicoders.prashant;

import android.app.ActivityGroup;
import android.content.Intent;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Chronometer;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;

public class MyWorkout extends ActivityGroup implements SensorEventListener {

    ImageButton btnfacebook, btnstartwalk, btnstopwalk;
    Chronometer mchoronometer;
    Intent getintent;
    String _getname, _getage, _gethight, _getwidth;
    TextView txtx, txty, txtz;
    private SensorManager sensorManager;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.my_workout);

        txtx = (TextView) findViewById(R.id.txtview_steps_myworkout);
        txty = (TextView) findViewById(R.id.txtview_distance_myworkout);
        txtz = (TextView) findViewById(R.id.txtview_calary_myworkout);
        btnfacebook = (ImageButton) findViewById(R.id.imgview_facebook_myworkout);

        btnfacebook.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent inn = new Intent(getParent(), MyworkoutFacbook.class);
                WorkoutTabGroupActivity parantActivity = (WorkoutTabGroupActivity) getParent();
                parantActivity.startChildActivity("MyworkoutFacbook", inn);

            }
        });
        btnstartwalk = (ImageButton) findViewById(R.id.imgbtn_start_myworkout);
        btnstartwalk.setOnClickListener(new OnClickListener() {

            public void onClick(View arg0) {
                // TODO Auto-generated method stub

                sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);

                sensorManager.registerListener(MyWorkout.this, sensorManager
                        .getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
                        SensorManager.SENSOR_DELAY_NORMAL);
                Toast.makeText(getApplicationContext(), "Start",
                        Toast.LENGTH_LONG).show();


            }
        });

        btnstopwalk = (ImageButton) findViewById(R.id.imgbtn_stop_myworkout);
        btnstopwalk.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub


            }
        });

    }

    public void onAccuracyChanged(Sensor sensor, int accuracy) {
        // TODO Auto-generated method stub

    }

    public void onSensorChanged(SensorEvent event) {
        // TODO Auto-generated method stub
        if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
            float x = event.values[0];
            float y = event.values[1];
            float z = event.values[2];
            txtx.setText("X: " + x);
            txty.setText("X: " + y);
            txtz.setText("X: " + z);
        }

    }
}

最佳答案

我的建议是您应该跟踪全局 Z 轴的变化(您的 body 向上/向下运动)。您不能保证用户会以特定方向握住手机,因此您将不得不依靠试验。此外,您可能需要监控运动速度(例如,以免将汽车运动转化为脚步)。

我会做的是:

1- 在移动设备上创建一个文本文件并记录我行走时 X、Y 和 Z 的值(除了 GPS 速度),移动设备处于不同的方向(在我的口袋里,在腰包里, ...ETC)。另外,记录我执行的步数。

2- 根据第一步中的数据,形成一个公式,将此数据转换为步数。

关于android - 如何使用计步器计算步数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12476024/

相关文章:

android - 什么是android音轨的最大和最小值,音频类型为float?

android - 旋转布局并放置在相对布局问题之后

android - 如何使用 minSDK 7 为应用程序设置 ICS 主题?

android - JSONObject 到 JSONArray

android - 使用 LongClick 打开 Dialog 并聚焦 Dialog

java - 使用 Intent 选择特定大小的图像

android - 新发布的应用程序包名称 'ClassNotFoundException'

android - 协程中的 Job.Cancel 与 Scope.Cancel 有什么区别?

android - 如何在 Linux 上构建适用于 Android 的 MuPDF

android - 适用于 Android 的类似 Excel 的垂直和水平标题