API 19でSensorに歩数計"TYPE_STEP_COUNTER"が追加されました。
http://developer.android.com/reference/android/hardware/Sensor.html#TYPE_STEP_COUNTER
Initialize Sensor
SensorManagerを使い、Sensorオブジェクトを取得します。
public class StepCounterActivity extends Activity {
    private SensorManager mSensorManager;
    private Sensor mStepSensor;
    private TextView mTextView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mTextView = (TextView) findViewById(R.id.text_step);
        mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
        mStepSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
    }
    protected void onResume() {
        super.onResume();
        mSensorManager.registerListener(mSensorEventListener, mStepSensor,
                SensorManager.SENSOR_DELAY_NORMAL);
    }
    protected void onPause() {
        super.onPause();
        mSensorManager.unregisterListener(mSensorEventListener);
    }
Create a SensorListener
歩数はonSensorChangedのコールバックメソッドで取得します。
値はevent.values[0]に格納されています。
端末機起動後から計測した歩数の値を返します。0に戻るときは端末再起動時だけです。
    private SensorEventListener mSensorEventListener = new SensorEventListener() {
        private float mStepOffset;
        @Override
        public void onAccuracyChanged(Sensor sensor, int accuracy) {
        }
        @Override
        public void onSensorChanged(SensorEvent event) {
            if (mStepOffset == 0) {
                mStepOffset = event.values[0];
            }
            mTextView.setText(Float.toString(event.values[0] - mStepOffset));
        }
    };
0 件のコメント:
コメントを投稿