tnew
和 anew
是包含时间戳和加速度的arraylists
。 double distance=0;
double init_vel=0;
long time_prev=tnew.next();
while(anew.hasNext())
{
float temp_acc=anew.next();
long temp_time=tnew.next();
interval=(temp_time-time_prev)/1000f; //milliseconds to seconds
double fin_vel=init_vel+(temp_acc*interval);
distance+=(init_vel*interval)+0.5f*temp_acc*interval*interval;
init_vel=fin_vel;
time_prev=temp_time;
}
这段代码中有逻辑错误吗?因为我得到的值比实际长度小得多。
LogCat
的输出结果:
--------- beginning of /dev/log/system
--------- beginning of /dev/log/main
V/PhonetapeActivity( 8842): Sensor Listener Registered
V/PhonetapeActivity( 8842): Sensor Unregistered
V/PhonetapeActivity( 8842): No. of Iterations : 49
V/PhonetapeActivity( 8842): Value of acceleration : 3.5762787E-7
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665585965
V/PhonetapeActivity( 8842): Value of acceleration : -0.15275347
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665586017
V/PhonetapeActivity( 8842): Value of acceleration : 0.15585232
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665586077
V/PhonetapeActivity( 8842): Value of acceleration : 1.075269
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665586138
V/PhonetapeActivity( 8842): Value of acceleration : 3.6529458
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665586199
V/PhonetapeActivity( 8842): Value of acceleration : 9.645137
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665586257
V/PhonetapeActivity( 8842): Value of acceleration : 17.022213
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665586316
V/PhonetapeActivity( 8842): Value of acceleration : 9.721476
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665586376
V/PhonetapeActivity( 8842): Value of acceleration : -18.729362
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665586437
V/PhonetapeActivity( 8842): Value of acceleration : -22.868385
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665586497
V/PhonetapeActivity( 8842): Value of acceleration : -16.777517
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665586557
V/PhonetapeActivity( 8842): Value of acceleration : -7.0492268
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665586617
V/PhonetapeActivity( 8842): Value of acceleration : -3.860828
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665586677
V/PhonetapeActivity( 8842): Value of acceleration : 1.7244682
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665586737
V/PhonetapeActivity( 8842): Value of acceleration : 5.0734243
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665586797
V/PhonetapeActivity( 8842): Value of acceleration : 6.4193974
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665586857
V/PhonetapeActivity( 8842): Value of acceleration : 2.739545
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665586917
V/PhonetapeActivity( 8842): Value of acceleration : 5.559997
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665586977
V/PhonetapeActivity( 8842): Value of acceleration : 4.2290807
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665587037
V/PhonetapeActivity( 8842): Value of acceleration : 5.0012918
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665587097
V/PhonetapeActivity( 8842): Value of acceleration : 5.9317436
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665587157
V/PhonetapeActivity( 8842): Value of acceleration : 5.20226
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665587217
V/PhonetapeActivity( 8842): Value of acceleration : 7.1381693
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665587276
V/PhonetapeActivity( 8842): Value of acceleration : 7.6460614
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665587337
V/PhonetapeActivity( 8842): Value of acceleration : 5.566694
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665587396
V/PhonetapeActivity( 8842): Value of acceleration : 3.355657
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665587457
V/PhonetapeActivity( 8842): Value of acceleration : 1.8876343
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665587517
V/PhonetapeActivity( 8842): Value of acceleration : -0.8815446
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665587577
V/PhonetapeActivity( 8842): Value of acceleration : -0.9595623
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665587646
V/PhonetapeActivity( 8842): Value of acceleration : -4.233544
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665587697
V/PhonetapeActivity( 8842): Value of acceleration : -1.9580669
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665587765
V/PhonetapeActivity( 8842): Value of acceleration : -1.4569702
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665587822
V/PhonetapeActivity( 8842): Value of acceleration : -0.6058636
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665587876
V/PhonetapeActivity( 8842): Value of acceleration : -0.21207428
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665587937
V/PhonetapeActivity( 8842): Value of acceleration : 0.5068469
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665587997
V/PhonetapeActivity( 8842): Value of acceleration : 5.614555
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665588057
V/PhonetapeActivity( 8842): Value of acceleration : -4.5297813
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665588122
V/PhonetapeActivity( 8842): Value of acceleration : -0.29250193
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665588178
V/PhonetapeActivity( 8842): Value of acceleration : -2.4922757
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665588237
V/PhonetapeActivity( 8842): Value of acceleration : -1.7652755
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665588297
V/PhonetapeActivity( 8842): Value of acceleration : -2.3279366
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665588357
V/PhonetapeActivity( 8842): Value of acceleration : -1.8127642
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665588419
V/PhonetapeActivity( 8842): Value of acceleration : -1.956768
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665588477
V/PhonetapeActivity( 8842): Value of acceleration : -0.8337221
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665588537
V/PhonetapeActivity( 8842): Value of acceleration : -0.24841261
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665588601
V/PhonetapeActivity( 8842): Value of acceleration : 0.23997736
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665588657
V/PhonetapeActivity( 8842): Value of acceleration : 0.14441395
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665588723
V/PhonetapeActivity( 8842): Value of acceleration : 0.23150349
V/PhonetapeActivity( 8842): Value of timestamp(milli) : 1350665588777
V/PhonetapeActivity( 8842): 1st while loop ended
V/PhonetapeActivity( 8842): 2nd while loop ended
V/PhonetapeActivity( 8842): Avg value : 0.4006781578063965
V/PhonetapeActivity( 8842): Max Value : 17.022213
V/PhonetapeActivity( 8842): Min Value : -22.868385
V/PhonetapeActivity( 8842): Standard Deviation : -0.0031174493
V/PhonetapeActivity( 8842): 3rd while loop started
V/PhonetapeActivity( 8842): startpos=3 endpos=8
V/PhonetapeActivity( 8842): acceleration=0.1558523178100586 interval=0.061000000685453415
V/PhonetapeActivity( 8842): distance=5.799264876044276E-4
V/PhonetapeActivity( 8842): next init velocity=0.009506991493243078
V/PhonetapeActivity( 8842): acceleration=1.0752689838409424 interval=0.061000000685453415
V/PhonetapeActivity( 8842): distance=0.005160928954000712
V/PhonetapeActivity( 8842): next init velocity=0.07509840024458736
V/PhonetapeActivity( 8842): acceleration=3.6529457569122314 interval=0.057999998331069946
V/PhonetapeActivity( 8842): distance=0.021805144861910285
V/PhonetapeActivity( 8842): next init velocity=0.2869692480489858
V/PhonetapeActivity( 8842): acceleration=9.645136833190918 interval=0.05900000035762787
V/PhonetapeActivity( 8842): distance=0.07231105232279186
V/PhonetapeActivity( 8842): next init velocity=0.8560323246566197
V/PhonetapeActivity( 8842): acceleration=17.022212982177734 interval=0.05999999865889549
V/PhonetapeActivity( 8842): distance=0.18495295465057213
V/PhonetapeActivity( 8842): next init velocity=1.8773650807587172
V/PhonetapeActivity( 8842): 3rd while loop ended
V/PhonetapeActivity( 8842): final distance=0.18495295465057213
V/PhonetapeActivity( 8842): values of acceleration, timestamp, distance, start_time and calibrating reset
如果您观察logcat,首先它会迭代49个加速度值及其对应的时间戳(以毫秒为单位)。然后有一个平均值、总和、最大值、最小值等等。接着,如果您看到
startpos=3
和endpos=8
,这是我用来计算距离的迭代次数范围,即我仅使用从第三个到第八个迭代中的加速度和时间戳的值。这是因为我检测到距离计算的开始是从加速度上升到方向突然改变。您可以看到3-8的值符合这个逻辑。从3开始,加速度显著上升,在8之后突然下降。
SENSOR_DELAY_FASTEST
注册sensorEventListner,以查看您的设备可以获取的最大样本数。 - TheCodeArtist