如何在Android中执行传感器的随机和定期采样/数据采集?

如何在Android中执行传感器的随机和定期采样/数据采集?,android,multithreading,accelerometer,sensors,android-sensors,Android,Multithreading,Accelerometer,Sensors,Android Sensors,Android支持许多传感器,API支持定期采样,即我可以在每个指定的采样时间对传感器数据进行采样。理想情况下,周期性采样是有用的,但当手机长时间不振动(例如充电期间)时,通常不需要连续读取传感器(如加速计)。我想随机读取加速度计的数据,其中采样频率不是固定的,即两个采样之间的持续时间是随机的。我该怎么做 我尝试了以下代码来读取加速计数据: final public SensorEventListener listener=new SensorEventListener() { pu

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允许在数据发生更改时收集数据。我的疑问是,这种方法是在给定的采样周期内定期收集数据吗?如何确定指定采样周期

其次,如果我想执行随机数据收集,是否应该在线程级别执行,我的意思是,随机调用/调度上述方法?有没有实现这一点的指针或更好的方法来实现这一点