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

标签 java android android-sensors

我正在构建一个应用程序,它将读取传感器数据并将其存储到 kafka 中,并以休息 Controller 作为中间人。 (第一次使用传感器) UI由传感器名称+开始或停止发送传感器数据的开关按钮组成。 我正在尝试调节发送的传感器数据量,因为我的 Android 应用程序在某些传感器开始发送数据时无法跟上,我的 UI 只是阻塞。 我正在使用模拟器和名称中含有金鱼的传感器进行测试,它们正常工作,游戏旋转 vector 传感器、重力传感器和其他一些传感器刚刚开始发送大量数据,而应用程序无法跟上。 (我每次都用新线程发送数据)。

SensorManager.registerListener(sensorEventListener,sensor,500000000);

更改采样周期根本没有帮助,有些传感器正常工作,有些传感器只是不断发送大量数据,无论数量如何。

我尝试过,每次传感器更改事件时,新线程都会从发送数据开始,这样 UI 就能正常工作,但我的应用程序无法跟上某些传感器的速度。

public void onSensorChanged(SensorEvent sensorEvent) {
Thread t = new Thread(new MyOwnRunnableClass(sensorEvent,username));
t.start();
}

最佳答案

  1. 制作一个原生应用来学习传感器
  2. 不要在每次传感器更新时创建线程,因为每个线程都会产生开销。您需要一个线程来管理传感器,一个线程用于用户界面。应该够了。
  3. 如果您的需要太多,您的传感器线程可能会丢失读数(只需处理十分之一)
  4. 当我在 Android 原生中进行开发时,采样率或多或少地起作用。
  5. 阅读教程,使用传感器是移动设备的关键,因此每个框架都有关于如何正确使用传感器的教程

祝你好运

关于java - 如何限制某些传感器每隔几秒发送一次数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58791869/

相关文章:

java - Android - 将 MediaMuxer 与 MediaExtractor 和 PCM 流一起使用会导致视频帧损坏

java - 如何在 Android 中保存 FCM token ?

android - Rajawali 旋转相机与 Sensor.TYPE_ROTATION_VECTOR 奇怪的行为

android - android中的SensorManager.getRotationMatrix重力参数或加速度计参数值?

java - RxAndroid : Class must either be declared abstract or implement abstract method error

java - 如何在 Spring Boot 中注册自定义转换器?

Android Studio 3.0 子模块编译失败

android - RG 3.0 中注入(inject)的 View 为空

android - 如何通过仿真器测试湿度或温度传感器?

java - java从postman中发布的URI获取json数据