3

基本上,我所做的是從兩個不同的項目中獲取源代碼,並將它們拼湊在一起以嘗試創建一個實時繪製藍牙數據的新應用程序。中間結果顯然比我能理解的更復雜。我提出了問題,得到了反饋,做了大量的閱讀,但我仍然堅持我看到的問題:如何從數據採集線程實時獲取數據到繪圖活動中?這個問題需要一些解釋。如何將數據/流從線程實時傳遞到Android中的活動?

我從Blueterm的源代碼開始,這是一個支持SPP/RfComm的藍牙終端仿真程序。第一步是在我的Android手機上構建並運行Blueterm,並讓它連接並與外部藍牙數據採集設備進行通信。這進展順利 - 設備數據很好地在屏幕上滾動。

接下來我去了AndroidPlot並獲得了OrientationSensorExample的源代碼,並且將其添加到我的項目中,以便我可以從選項菜單啓動此活動。這也很好。我的應用程序啓動方向傳感器活動,實時繪製方向傳感器數據,同時繼續從後臺實時獲取藍牙設備的數據。

我現在想要做的是修改我的應用程序,使方位傳感器活動實時繪製藍牙數據(而不是方向傳感器數據)。使用logcat我知道一個事實,即方向傳感器活動正在實時繪製方向傳感器數據並繼續實時獲取背景中的藍牙數據。

這表明了一個架構:雖然我的應用程序正在實時繪製方向傳感器數據,但仍有一個後臺線程正在繼續實時獲取藍牙數據。或者觀察它的另一種方式:有一個藍牙活動產生/生成/創建/任何後臺線程(或只是一個線程),即使在我開始定向傳感器活動後仍會繼續運行(所有這些都是通過logcat )。

所以問題依然存在:我如何從後臺線程(由藍牙活動啓動)將數據傳遞到方向傳感器活動?

+0

我有同樣的問題,我正在從一個以非常快的速度吐出數據的BT設備讀取輸入。我基本上每秒獲得大約6k字節。將其更新爲靜態數組是不可行的。我希望爲另一個線程提供的BT機制像AudioRecord或Sensor一樣產生。相反,我必須使用AsyncTask來創建一個單獨的線程來處理這些數據。 – JPM 2011-06-21 17:29:05

回答

3

您可以將數據設置爲靜態或者您可以使用Android框架的Application類。 爲了讓後臺線程不斷更新靜態數據,您將在活動中檢索更新的數據。

+0

我不明白@Sujit。你能更具體一些,提供一個例子嗎? – Vince 2011-05-27 05:20:15

+0

您不需要將數據傳遞給後臺線程。只需將對象設置爲靜態並且線程將不斷更新它,並且您的活動將在需要時隨時獲取更新的數據。 – Sujit 2011-05-27 05:23:11

+0

謝謝@Sujit,但人們說一次只有一個活動運行,所以我不能做我想做的事情。但根據你的建議,我會讓後臺線程中的數據處於靜態狀態。現在告訴我哪些活動可以閱讀它?他們如何閱讀它? – Vince 2011-05-27 05:34:07

相關問題