2

我正在做这个应用程序,它就像一个计步器计算步数,但我希望它显示每一步的方向。

我正在做的是注册两个事件侦听器,然后对于每个onsensorchanged事件,我获取 的值sensor.TYPE_ORIENTATION以获取方位角,以及 的值sensor.TYPE_ACCELEROMETER,我查看是否给出了步骤。

此时我得到了正确的值,但我只想在步数完成后达到方位角的峰值!我该怎么做?

我假设它将在OnSensorChanged方法内部完成,但我不知道如何在加速计传感器被激活并且步数被计算时调用方向传感器。

查看代码内部会是这样的:注册两个监听器后,ACCELEROMETERORIENTATION

OnSensorChanged(SensorEvent event)
{
    if((event.sensor.getType()==Sensor.TYPE_ACCELEROMETER))

    accValues=event.values;

    // NOW get the orientation azimuth value at this time..
    orientationValues=event.values;
}

希望有人能澄清我这个..

4

1 回答 1

2

嘿,如果你想要方位角,你可以使用加速度计和磁力计传感器得到它。首先获取加速度计数据和磁力计数据。接下来使用SensorManager.getRotationMatrix(Rotation_data, Inclination_data, acc_data, mag_data)函数。您必须将acc_datamag_data作为输入,然后将Rotation_dataInclination_data作为输出。最初只需将它们作为空数组传递。获得Rotation_data后,使用SensorManager.getOrientation(Rotation_data, Angles)角度是您作为输出获得的数组。最初也将其作为空数组传递。在函数调用之后,您会得到角度 [0]作为方位角,角度 [1]是俯仰角度,角度 [3]是滚动角度。使用的所有数组都是 3 个元素的单维数组。

于 2012-02-29T04:36:03.350 回答