【发布时间】:2011-05-27 05:05:59
【问题描述】:
基本上,我所做的是从两个不同的项目中获取源代码并将它们拼凑在一起,以尝试创建一个实时绘制蓝牙数据的新应用程序。中间结果显然比我能够理解的要复杂。我已经提出了问题,得到了反馈,做了很多阅读,但我仍然坚持我所看到的问题:如何将数据从数据采集线程实时获取到绘图活动中?这个问题需要解释一下。
我从Blueterm的源代码开始,这是一个支持SPP/RfComm的蓝牙终端仿真程序。第一步是在我的 Android 手机上构建和运行 Blueterm,让它与外部蓝牙数据采集设备连接和通信。这很顺利 - 设备数据很好地在屏幕上滚动。
接下来我去了 AndroidPlot 并获得了 OrientationSensorExample 的源代码,并将其添加到我的项目中,以便我可以从选项菜单启动此活动。这也很顺利。我的应用程序启动了方向传感器活动,该活动实时绘制方向传感器数据,同时还在后台继续从蓝牙设备实时获取数据。
我现在要做的是修改我的应用程序,以便方向传感器活动实时绘制蓝牙数据(而不是方向传感器数据)。使用 logcat 我知道方向传感器活动正在实时绘制方向传感器数据并继续在后台实时获取蓝牙数据。
这表明了一种架构:当我的应用程序实时绘制方向传感器数据时,有一个后台线程继续实时获取蓝牙数据。或另一种看待它的方式:有一个蓝牙活动产生/生成/创建/无论后台线程(或只是一个线程),即使在我启动了方向传感器活动后仍继续运行(所有这些都通过 logcat 观察到)。
所以问题仍然存在:如何将数据从这个后台线程(由蓝牙活动启动)传递到方向传感器活动?
【问题讨论】:
-
我有同样的问题,我正在读取来自 BT 设备的输入,该设备以非常快的速度吐出数据。我基本上每秒得到大约 6k 字节。将其更新为静态数组是不可行的。我希望为另一个线程提供的 BT 机制能够像 AudioRecord 或 Sensor 一样产生。相反,我必须使用 AsyncTask 创建一个单独的线程来处理这些数据。
标签: android multithreading android-activity background real-time