Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 每n秒获取一次传感器值_Android_Android Sensors - Fatal编程技术网

Android 每n秒获取一次传感器值

Android 每n秒获取一次传感器值,android,android-sensors,Android,Android Sensors,我需要每n秒获取一个传感器的值。 在register listener中设置时间似乎不够,因为如果没有发生任何更改,则不会调用任何事件,而我希望获得传感器的值,即使它没有更改…您可以创建一个线程,让它休眠n秒,然后侦听传感器数据。您还可以在其中创建一个名为getSensorData()的方法,该方法将返回数据类型 我希望这能有所帮助。那几天我也遇到了这个问题。我用以下方法解决了这个问题: 在onSensorChanged方法中,我首先将所有数据存储到一个数组中,比如acc[time,acc_x,

我需要每n秒获取一个传感器的值。
在register listener中设置时间似乎不够,因为如果没有发生任何更改,则不会调用任何事件,而我希望获得传感器的值,即使它没有更改…

您可以创建一个线程,让它休眠n秒,然后侦听传感器数据。您还可以在其中创建一个名为
getSensorData()
的方法,该方法将返回数据类型


我希望这能有所帮助。

那几天我也遇到了这个问题。我用以下方法解决了这个问题:

在onSensorChanged方法中,我首先将所有数据存储到一个数组中,比如acc[time,acc_x,acc_y,acc_z]。 每次传感器发生变化时,我都会检查此时间戳与存储在acc中的第一个时间戳(即acc[0])之间的差异。如果差值大于0.2s(使用您想要的时间跨度),我将使用时间跨度中acc的平均值,比如meanAcc,并将其存储到另一个数组中。 然后acc将被清除。并重复上述步骤


帮助这可能会有所帮助。

哪个传感器?一般来说,如果传感器自上次报告以来没有改变它的值以减少CPU和电池的使用,那么传感器报告它的值是没有意义的。为什么你记不住这个值,如果你没有收到报告,就用以前记下的值?加速度计…不过你的建议是对的,但我不知道如何设置频率。假设我希望每n秒更新一次:如果我只将其设置为n秒,我在阅读时可能会错过该事件。另一方面,如果我将其设置为小于n,并且事件发生(加速度>0),加速度停止(加速度=0),那么我的变量将包含零:没有移动,这将是一个伪变量。你无法控制频率,但是,当事件发生变化时,你可以接收事件,可以静态读取当前值并静态存储。因此,当您启动时,获取该值,然后启动计时器。重要的概念是,计时器只是你想更新的频率,而不是你读取传感器的频率。注册SensorEventListener,以更新静态存储的值。