我的要求是在每毫秒精确采样一次android传感器数据。
尝试使用timer、alarmManager和handler。任务重复,但持续时间不是精确的n毫秒。
代码::
手柄:
Handler sensorHandler = new Handler();
private Runnable sensorRunnable = new Runnable() {
@Override
public void run() {
sendAllSensorData();
sensorHandler.postDelayed(sensorRunnable, 50);
}
};
private void postSensorMsgHandler() {
sensorHandler.postDelayed(sensorRunnable, 50);
}Timer ::私有的void initTimer() {
timer =新计时器();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
sendAllSensorData();
}
}, TelemetricConstant.delay, TelemetricConstant.SAMPLE_PERIOD);}
日志:
06-22 15:34:53.201 D/Telemetric(27434): Telemetric Gyroscope Y mean = -0.000533 sd = 0.000958 variance = 0.000001
06-22 15:34:53.212 D/Telemetric(27434): Telemetric Gyroscope Y mean = 0.001057 sd = 0.000000 variance = 0.000000
06-22 15:34:53.253 D/Telemetric(27434): Telemetric Gyroscope Y mean = 0.000524 sd = 0.000754 variance = 0.000001
06-22 15:34:53.264 D/Telemetric(27434): Telemetric Gyroscope Y mean = -0.000009 sd = 0.001066 variance = 0.000001
06-22 15:34:53.306 D/Telemetric(27434): Telemetric Gyroscope Y mean = 0.000524 sd = 0.001376 variance = 0.000002
06-22 15:34:53.317 D/Telemetric(27434): Telemetric Gyroscope Y mean = 0.000844 sd = 0.001390 variance = 0.000002
06-22 15:34:53.361 D/Telemetric(27434): Telemetric Gyroscope Y mean = 0.000702 sd = 0.001291 variance = 0.000002
06-22 15:34:53.370 D/Telemetric(27434): Telemetric Gyroscope Y mean = 0.000600 sd = 0.001209 variance = 0.000001
06-22 15:34:53.414 D/Telemetric(27434): Telemetric Gyroscope Y mean = 0.000391 sd = 0.001266 variance = 0.000002
06-22 15:34:53.423 D/Telemetric(27434): Telemetric Gyroscope Y mean = 0.000465 sd = 0.001205 variance = 0.000001发布于 2017-06-22 10:07:27
试试这个,
//Create Timer Object
Timer t = new Timer();
//Set your schedule time
t.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
//Called each time when 1000 milliseconds (1 second)
}
},
//Set start timing (milliseconds)
0,
//Set interval time(milliseconds)
1000);发布于 2017-06-22 10:26:35
Android并不是一个“实时操作系统”来获得你想要的高度精确,你可能需要另一个硬件,例如,一些嵌入了Raspberry的硬件.和另一个操作系统,例如一些"RealTime Linux“13x.pdf。
发布于 2017-06-22 11:43:02
https://stackoverflow.com/questions/44696275
复制相似问题