gpt4 book ai didi

android - "Custom"传感器事件率似乎不适用于 SensorManager.registerListener(SensorEventListener listener, Sensor sensor, int rate)

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:46:02 26 4
gpt4 key购买 nike

更新:

我能够通过引入类范围静态计数器并忽略 x 数量的事件来解决我遇到的特定问题。但我仍然想知道我做错了什么:以微秒为单位用提示注册监听器,而不是使用四个给定常量之一。


我的应用程序中的一个 Activity 正在连接传感器以获取设备的方向、确定滚动并使用它。

我正在使用

SensorManager.registerListener(SensorEventListener listener, Sensor sensor, int rate)

注册我的传感器。来自Android Documentation for this method:

Parameters

[...]

rate

The rate sensor events are delivered at. This is only a hint to the system. Events may be received faster or slower than the specified rate. Usually events are received faster. The value must be one of SENSOR_DELAY_NORMAL, SENSOR_DELAY_UI, SENSOR_DELAY_GAME, or SENSOR_DELAY_FASTEST or, the desired delay between events in microsecond.

如果我使用 4 个预定义常量之一,那么该应用程序可以正常工作;然而,这些常数都提供了对我的需要来说太快的速率提示。我必须发送一个 UDP 数据包,其中包含每个事件更改的一些信息,并且接收端似乎完全被使用任何预定义速率的消息淹没了。使用 30000 之类的整数(因为 API 以微秒为单位指定数量)会导致应用停止报告所有传感器事件。

我错过了什么阻止我使用我自己的事件率提示?

最佳答案

我很确定传感器收听率做了它应该做的事情。在你的问题中你写了 30000,也就是 30 毫秒。在文档中,它说速度通常比提示快。所以你做的比 30ms 快。是否有可能是您其他与网络相关的例程进行得太快了?它可能导致了一些阻塞,使您认为传感器报告已停止。

在我的申请中,我也发现给定的 NORMAL rate 太高了。因此我将比率设置为 250000。我还使用移动平均计算将数字平滑 5。我发现结果行为接近 iPhone 指南针。

尽管如此,我不建议您在传感器监听器中进行网络报告。不应该这样做。但是,您可以在监听器中进行一些简单的计算并记录该值。然后,使用一个像 Handler.postDelayed 这样的定时器来处理网络发送等等。

关于android - "Custom"传感器事件率似乎不适用于 SensorManager.registerListener(SensorEventListener listener, Sensor sensor, int rate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5873545/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com