1

Android 支持许多传感器,API 支持定期采样,即我可以在每个指定的采样时间对传感器数据进行采样。理想情况下,周期性采样是有用的,但当手机长时间不振动时(例如在充电期间),通常没有必要连续读取传感器,比如加速度计。我想随机读取加速度计的数据,其中采样频率不固定,即两个样本之间的持续时间是随机的。我怎么做 ?

我尝试使用以下代码读取加速度计数据:

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