如何使用计步器计算脚踏 [英] How to calculate Foot step using Pedometer

查看:201
本文介绍了如何使用计步器计算脚踏的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我开发应用的卡路里计算由步行烧我使用SensorEventListener (加速度计)我从那个X,Y,Z三个值。
我的问题是如何使用三个X,Y,Z计算踏上一步。
这是我的code为获得X,Y,Z值。我使用GPS也。但我需要使用Android的计步器计数步 guyzz PLZ帮我。

 包com.mxi coders.prashant;进口android.app.ActivityGroup;
进口android.content.Intent;
进口android.hardware.Sensor;
进口android.hardware.SensorEvent;
进口android.hardware.SensorEventListener;
进口android.hardware.SensorManager;
进口android.os.Bundle;
进口android.view.View;
进口android.view.View.OnClickListener;
进口android.widget.Chronometer;
进口android.widget.ImageButton;
进口android.widget.TextView;
进口android.widget.Toast;公共类MyWorkout扩展的ActivityGroup实现SensorEventListener {    的ImageButton btnfacebook,btnstartwalk,btnstopwalk;
    天文台mchoronometer;
    意图getintent;
    串_getname,_getage,_gethight,_getwidth;
    TextView的txtx,txty,txtz;
    私人的SensorManager的SensorManager;    公共无效的onCreate(捆绑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(新OnClickListener(){            公共无效的onClick(视图v){
                // TODO自动生成方法存根
                意图客栈=新意图(的getParent(),MyworkoutFacbook.class);
                WorkoutTabGroupActivity parantActivity =(WorkoutTabGroupActivity)的getParent();
                parantActivity.startChildActivity(MyworkoutFacbook,INN);            }
        });
        btnstartwalk =(的ImageButton)findViewById(R.id.imgbtn_start_myworkout);
        btnstartwalk.setOnClickListener(新OnClickListener(){            公共无效的onClick(查看为arg0){
                // TODO自动生成方法存根                的SensorManager =(的SensorManager)getSystemService(SENSOR_SERVICE);                sensorManager.registerListener(MyWorkout.this,的SensorManager
                        .getDefaultSensor(Sensor.TYPE_ACCELEROMETER)
                        SensorManager.SENSOR_DELAY_NORMAL);
                Toast.makeText(getApplicationContext(),开始,
                        Toast.LENGTH_LONG).show();
            }
        });        btnstopwalk =(的ImageButton)findViewById(R.id.imgbtn_stop_myworkout);
        btnstopwalk.setOnClickListener(新OnClickListener(){            公共无效的onClick(视图v){
                // TODO自动生成方法存根
            }
        });    }    公共无效onAccuracyChanged(传感器传感器,精度INT){
        // TODO自动生成方法存根    }    公共无效onSensorChanged(SensorEvent事件){
        // TODO自动生成方法存根
        如果(event.sensor.getType()== Sensor.TYPE_ACCELEROMETER){
            浮X = event.values​​ [0];
            浮Y = event.values​​ [1];
            浮Z = event.values​​ [2];
            txtx.setText(X:+ X);
            txty.setText(X:+ y)基
            txtz.setText(X:+ Z);
        }    }
}


解决方案

我的建议是你应该跟踪全球Z轴的变化(你的身体向上/向下运动)。你不能机制保障用户将持有的中移动一个特定的方向,因此您将不得不依赖于实验。此外,您可能需要监控移动的速度(以免转化汽车运动,脚步骤例如)。

我会做的是:

1 - 创建上移动一个文本文件,并记录X,Y和放大器的价值; Z(除GPS速度),而我走,在不同的方向移动(在我的口袋里,在一个腰包,...等)。另外,保持的我执行的步骤的数量的轨道。

-2-基于该数据,在步骤之一,形成一个公式来将此数据转换为的脚步数。

i develop application for calculation of calories burn by walking for that i use SensorEventListener (ACCELEROMETER) i get three value from that X,Y,Z. my question is how to calculate foot step using that three X,Y,Z. this is my code for getting X,Y,Z value. i use GPS also. but i required count step using Pedometer in Android guyzz PLZ help me.

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);
        }

    }
}

解决方案

My suggestion is that you should track variations in Global Z axis (your body up/down movement). You cannot guarentee that the user will hold the mobile in a specific orientation, so you will have to rely on experimenting. Also, you may need to monitor the speed of movement (so as not to translate car movement to foot steps for e.g.).

What I would do is:

1- Create a text file on the Mobile and record the values of X, Y & Z (in addition to GPS speed) while I am walking, with the mobile in different orientations (in my pocket, in a belt pouch, ...etc). Also, keep track of the number of steps I performed.

2- Based on this data in step one, form a formula to convert this data to number of foot steps.

这篇关于如何使用计步器计算脚踏的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆