1

Android は多くのセンサーをサポートしており、API は定期的なサンプリングをサポートしています。つまり、指定されたサンプリング時間ごとにセンサー データをサンプリングできます。理想的には、定期的なサンプリングは便利ですが、電話が長時間振動していないとき (充電中など) に、加速度計などのセンサーを継続的に読み取る必要がないことがよくあります。サンプリング周波数が固定されていない、つまり 2 つのサンプル間の期間がランダムな場合に、加速度計のデータをランダムに読み取りたいと考えています。それ、どうやったら出来るの ?

加速度計データを読み取るために、次のコードを試しました。

final  public SensorEventListener listener=new SensorEventListener() {

    public void onSensorChanged(SensorEvent e) {
        Log.d(TAG, "in sensor changed");
      if (e.sensor.getType()==Sensor.TYPE_ACCELEROMETER) {
        double netForce=e.values[0]*e.values[0];

        netForce+=e.values[1]*e.values[1];
        netForce+=e.values[2]*e.values[2];

        AccelX=e.values[0];
        AccelY=e.values[1];
        AccelZ=e.values[2];

        message_acc= String.valueOf(AccelX)+","+String.valueOf(AccelY)+","+String.valueOf(AccelZ);

        Log.d(TAG, message_acc);

        //check if the phone is shaking
        if (threshold<netForce) {
          isShaking();
        }
        else {
          isNotShaking();
        }
      }

    }

このメソッドは、定期的に呼び出されるスレッドで呼び出されます。上記のコードでは、API により、データに変更があるたびにデータを収集できます。私の疑問は、このアプローチは特定のサンプリング期間の定期的なデータ収集ですか? サンプリング期間を確定的に指定するにはどうすればよいですか?

第二に、ランダムなデータ収集を実行したい場合は、スレッド レベルで実行する必要があります。つまり、上記のメソッドをランダムに呼び出し/スケジュールしますか? これを実装するための指針、またはこれを達成するためのより良い方法はありますか?

4

0 に答える 0