首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何限制某些传感器每隔几秒发送一次数据?

如何限制某些传感器每隔几秒发送一次数据?
EN

Stack Overflow用户
提问于 2019-11-11 02:47:34
回答 2查看 137关注 0票数 0

我正在构建一个应用程序,将读取传感器数据,并将其存储到kafka与rest控制器作为中间人。(首次使用传感器) UI由传感器名称+开关按钮组成,用于开始或停止发送传感器数据。我正在尝试控制发送多少传感器数据,因为当一些传感器开始发送数据时,我的android应用程序无法跟上它们,我的UI就会阻塞。我测试了Emulator和传感器,里面有金鱼的名字,它们工作正常,游戏旋转矢量传感器,重力传感器和其他几个刚刚开始发送大量数据和应用程序无法跟上。(我每次都用新线程发送数据)。

代码语言:javascript
复制
SensorManager.registerListener(sensorEventListener,sensor,500000000);

更改samplingPeriod根本没有任何帮助,一些传感器工作正常,而另一些则继续发送大量数据,而不管数据是多少。

我试过了,每次传感器改变事件,新的线程都从发送数据开始,这样UI就可以正常工作了,但是我的应用程序跟不上一些传感器。

代码语言:javascript
复制
public void onSensorChanged(SensorEvent sensorEvent) {
Thread t = new Thread(new MyOwnRunnableClass(sensorEvent,username));
t.start();
}
EN

回答 2

Stack Overflow用户

发布于 2019-11-11 03:10:07

  1. 制作一个本机应用程序来学习传感器
  2. 不要在每次传感器更新时都创建一个线程,因为每个线程都会产生开销。您需要一个线程来管理传感器,一个线程来管理ui。应该足够了。
  3. 你的传感器线程可能会丢弃读数,如果有太多的读数满足你的需要(只需处理十分之一)
  4. 采样率在我使用android原生开发时或多或少是有效的。
  5. 阅读教程,使用传感器是移动中的关键,所以每个框架都有关于如何正确使用它的教程

祝好运

票数 0
EN

Stack Overflow用户

发布于 2019-11-11 05:14:36

第二种方法:你可以在共享偏好中设置上一次时间,并在OnSensorChanged方法中检查当前时间与上次时间的差异是否超过500000设置您的数据。

第一种方式:您可以使用警报管理器每隔500000秒执行一次;

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58791869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档