如何在Android中执行传感器的随机和定期采样/数据采集?
Android支持许多传感器,API支持定期采样,即我可以在每个指定的采样时间对传感器数据进行采样。理想情况下,周期性采样是有用的,但当手机长时间不振动(例如充电期间)时,通常不需要连续读取传感器(如加速计)。我想随机读取加速度计的数据,其中采样频率不是固定的,即两个采样之间的持续时间是随机的。我该怎么做 我尝试了以下代码来读取加速计数据:如何在Android中执行传感器的随机和定期采样/数据采集?,android,multithreading,accelerometer,sensors,android-sensors,Android,Multithreading,Accelerometer,Sensors,Android Sensors,Android支持许多传感器,API支持定期采样,即我可以在每个指定的采样时间对传感器数据进行采样。理想情况下,周期性采样是有用的,但当手机长时间不振动(例如充电期间)时,通常不需要连续读取传感器(如加速计)。我想随机读取加速度计的数据,其中采样频率不是固定的,即两个采样之间的持续时间是随机的。我该怎么做 我尝试了以下代码来读取加速计数据: final public SensorEventListener listener=new SensorEventListener() { pu
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允许在数据发生更改时收集数据。我的疑问是,这种方法是在给定的采样周期内定期收集数据吗?如何确定指定采样周期
其次,如果我想执行随机数据收集,是否应该在线程级别执行,我的意思是,随机调用/调度上述方法?有没有实现这一点的指针或更好的方法来实现这一点