1

アプリケーションで加速度計を使用していますが、ユーザーが開始ボタンを押した後、一定時間だけ加速度計がアクティブになるようにできるかどうか疑問に思っています。ユーザーが停止ボタンを押すと停止するはずです。基本的に、より大きなアプリケーションの一部である歩数計として機能します。これは、加速度計を実装するために使用されるコードです:-

SensorManager sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
    int sensorType = Sensor.TYPE_ACCELEROMETER;
    sensorManager.registerListener(sensorListener, sensorManager.getDefaultSensor(sensorType),SensorManager.SENSOR_DELAY_NORMAL);

私は次のステップをカウントするコードを持っています:-

final SensorEventListener sensorListener = new SensorEventListener()
{

    public void onSensorChanged(SensorEvent event)
    {
            if(event.values[2]<3)
            {
                counter ++;
            }
            else if(event.values[2]>5)
            {
                counter --;
                counter ++;

            }
            sensorData.setText("Steps = "+ counter);

      }

      public void onAccuracyChanged(Sensor sensor, int accuracy){}
      };

onSensorChanged メソッドでステップを数えているので、これをボタンを押す状態だけに制限するにはどうすればよいのでしょうか。前述の 2 つのボタンを押してからどれくらいの時間が経過したかをカウントするタイマーを追加することは可能でしょうか?

4

1 に答える 1

1

はい、もちろん。

マネージャーを準備します。

mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

加速度計を開始します。

mSensorManager.registerListener(this, mAccelerometer, 
     SensorManager.SENSOR_DELAY_NORMAL);

止まる:

mSensorManager.unregisterListener(this);

onPause() メソッドでリスナーの登録を解除することを忘れないでください。

于 2012-04-06T23:15:08.300 に答える