Android接近传感器-值不正确

Android接近传感器-值不正确,android,proximity,sensormanager,Android,Proximity,Sensormanager,我在尝试创建跟踪接近传感器值的应用程序时遇到了一个问题。应用程序的目的是定期(比如30秒)记录瞬时接近值 遵循API文档,将为该类型的传感器创建并附加标准侦听器。但是,即使我用手盖住传感器,该值始终报告为“5.0”(5cm,传感器的最大值) 但是,如果我启动另一个应用程序(同时监测接近传感器值),两个应用程序都会正确报告接近情况。当我关闭另一个应用程序(Android Sensor Box)时,我的应用程序将始终恢复为报告5.0 我已经调试了应用程序,并在“onSensorChanged”事件中

我在尝试创建跟踪接近传感器值的应用程序时遇到了一个问题。应用程序的目的是定期(比如30秒)记录瞬时接近值

遵循API文档,将为该类型的传感器创建并附加标准侦听器。但是,即使我用手盖住传感器,该值始终报告为“5.0”(5cm,传感器的最大值)

但是,如果我启动另一个应用程序(同时监测接近传感器值),两个应用程序都会正确报告接近情况。当我关闭另一个应用程序(Android Sensor Box)时,我的应用程序将始终恢复为报告5.0

我已经调试了应用程序,并在“onSensorChanged”事件中设置了一个断点,以再次检查传递给onSensorChanged方法的SensorEvent对象,该对象始终为5.0

编辑#2:它似乎不限于接近传感器。当加速计和磁强计显示正确和最新的值时,陀螺仪传感器以相同的方式工作。所有四个都以相同的方式引用和访问


有什么想法吗

好吧,事实证明我将再次回答我自己的问题

应用程序的结构方式(这有很好的理由)意味着注册了侦听器,并将来自传感器的第一个报告值作为读数,而不连续接受新的读数。这对于加速计读数来说效果很好,但事实证明,一些传感器在第一次读数中报告了它们的默认值(例如接近传感器的“FAR”或陀螺仪的0.0/0.0/0.0)。只有在2-3次“onSensorChanged”事件之后,才开始报告正确的值

我假设这与省电和某些传感器需要时间来“准备”报告数据有关。我不知道为什么可以接受的做法是用不正确的值触发sensorChanged事件,但这似乎就是正在发生的事情


尽管如此,我的解决办法是丢弃前2-3个读数(它们以毫秒间隔出现),而简单地使用第四个读数作为更可靠的读数

如果不显示您的代码,您不可能得到任何推荐。代码与Android SDK的建议完全相同。问题是传感器更改事件返回的值不正确。这不是我代码的一部分。你在哪台设备上进行测试?出现这个问题的三台设备是三星Galaxy S2、Nexus 4和我现在记不起型号的华为手机。我用更多的信息编辑了原始问题,如果你只使用接近传感器,那么就没有持续的读数“流动”。只有一两个错误,而不是正确的一个。所以我不能丢弃第一个X读数。我想我将使用异步任务来确保正确识别“最后一次”读取。显然,这取决于您如何构造其余代码。我们使用的线程,如果它们没有及时发送响应,线程调度程序将获取最后记录的值(因此为什么等待一定数量的事件对我们有效)。