スマートフォン・ジン | Smartphone-Zine

引っ越し先→ https://smartphone-zine.com/

歩数をカウントできるようにする

It worked! 普通に歩いたときの歩数はうまく取得できているようです。今のところ閾値の上限を1200mG, 下限を981mGに設定しています。 簡単ですが以下にソースコードを貼り付けて説明をつけておきます。 特徴としては、xyzすべてについて処理してあるので、どの方向であってもちゃんとカウントされるという点です。 [CPP] /* * Measuring the number of steps . * @file Counter.cpp * @author emboss * @date 2010/09/12 * @version 1.0 /

include "StdAfx.h"

include "Counter.h"

/ * コンストラクタ. * 変数初期化を行う. */ Counter::Counter(void) { mSteps = 0; mMinThreshold = 981; mMaxThreshold = 1200; mStepFlag = FALSE; } / * デストラクタ. / Counter::~Counter(void) { } /** * 歩数を0歩に戻す. / void Counter::ResetSteps(void){ mSteps = 0; } / * 歩数を返す. */ UINT Counter::GetSteps(void){ return mSteps; } / * SetAcc:重力加速度を受け取る. * 歩数のカウントを行う. * @param INT 重力加速度(mG) / void Counter::SetAcc( INT acc){ // もし、歩数カウント用のフラッグmStepFlagがTRUEの場合、閾値(上限)を超えている状態 // そのため、閾値(下限)を超えたら1歩とカウントして、歩数カウント用フラグをFALSEに戻す。 // mStepFlagがFALSEの場合は、閾値(上限)をこえたら // 歩数カウント用のフラッグmStepFlagをTRUEにしておく。 if ( mStepFlag == TRUE ){ if ( acc < mMinThreshold ){ mSteps++; mStepFlag = FALSE; } } else { if ( acc > mMaxThreshold ){ mStepFlag = TRUE; } } } [/CPP] [CPP] /** * Measuring the number of steps . * @file Counter.h * @author emboss * @date 2010/09/12 * @version 1.0 /

pragma once

class Counter { public: Counter(void); ~Counter(void); void ResetSteps(void); // カウンターを0に設定 UINT GetSteps(void); // 現在の歩数をカウント void SetAcc(INT); // 重力加速度を渡す。 private: UINT mSteps ; // 歩数カウンタ INT mMinThreshold; // 閾値(下限) INT mMaxThreshold; // 閾値(上限) BOOLEAN mStepFlag; // ステップフラッグ、閾値(上限)を超えたらフラグを立てる }; [/CPP] 歩いたときだけではなく、走ったときにもうまくカウントが出来ているようです。