Я сделал это, просто отбрасывая значения, которые раньше, чем я хочу. Не идеально с точки зрения расхода батареи, так как мне нужно, чтобы датчики питали меня чаще, чем мне нужно, но, по крайней мере, тогда я могу контролировать, что они поступают через регулярные промежутки времени.
Что-то вроде:
static final int ACCEL_SENSOR_DELAY = 100; // the number of milisecs to wait before accepting another reading from accelerometer sensor
long lastAccelSensorChange = 0; // the last time an accelerometer reading was processed
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
if (sensorEvent.accuracy == SensorManager.SENSOR_STATUS_UNRELIABLE) return;
long now = System.currentTimeMillis();
if (now-ACCEL_SENSOR_DELAY > lastAccelSensorChange) {
lastAccelSensorChange = now;
mCompassValues = event.values.clone();
//... do your stuff
}