本文介紹了在Android Wear OS(即CSV)上保存和傳輸智能手表傳感器數據的最佳方式是什么?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我已經為Fossil Gen 6智能手表編寫了一個Wear應用程序,它從機載傳感器提取光體積圖(PPG)數據,并不斷更新屏幕上的值。下面是我的onSensorChanged
方法,它識別來自PPG傳感器的事件并相應地更新TextView
對象。我還嘗試使用FileWriter
對象將每個數據寫入CSV文件。
@Override
public void onSensorChanged(SensorEvent event) {
// On event from PPG sensor, update text on screen and
// write to CSV file.
if (event.sensor.getType() == 65572) {
sensorData = event.values[0];
String dataString = Float.toString(sensorData);
textView.setText(dataString);
try {
writer.write(dataString);
} catch (IOException e) {
e.printStackTrace();
}
}
}
文件編寫器在MainActivity
:
的頂部聲明
private FileWriter writer;
,并在onResume
方法中定義:
protected void onResume() {
super.onResume();
try {
writer = new FileWriter("data.csv",true);
} catch (IOException e) {
e.printStackTrace();
}
}
我不確定要做的是讓有這個文件可供寫入,它應該以某種方式存儲在手表上還是配對的手機上,以及我如何最終在我的PC上檢索CSV數據以便在MATLAB中進行分析,等等。(有沒有更好的方法來做到這一點?)謝謝!
推薦答案
我首先想說的是,有很多方法可以做到這一點,而最佳方法在很大程度上取決于您的用例的具體情況(有時還包括個人喜好)。
要記住的最重要的一點是,與普通手機相比,這款手表的資源(電池、內存、CPU)非常有限。
無論您的確切解決方案是什么樣子,都要記住以下幾點:
寫入文件是一項開銷很大的操作。對從傳感器接收到的每個數據點執行此操作并不理想。請考慮將數據保存到數據庫using Room。一個更簡單的替代方案是,如果應用程序崩潰或設備意外重啟,可能會丟失一些數據,只要你沒有問題,就是將其保存在內存中。這可以使用一個基本數組或某種類型的映射(時間戳和值)來完成,具體取決于您需要什么數據。您還可以混合使用這兩種方法并成批保存數據。
在手表和手機之間發送數據也很昂貴。我強烈建議把東西儲存在手表上,只有在需要的時候才轉移到手機上。這可以是手動觸發,每天在手表充電時的特定時間,也可以是其他一些巧妙的策略,以將對手表電池壽命的影響降至最低。
您可以使用Wearable Data Layer API將數據發送到手機。您必須根據需要傳輸的數據量設置MessageClient
或ChannelClient
。如果您堅持使用Android支持的數據結構(而不是創建自己的數據結構),那么將它們發送過來應該是相當簡單的。
如果您需要處理或格式化數據,以便在MatLab中輕松分析數據,請考慮在手機上而不是在手表上執行此操作。當然,對大小合理的數據集進行更簡單的操作可以直接在手表上執行。
您決定如何將文件發送到您的計算機的具體方式超出了我在此嘗試回答的范圍。要做到這一點,有很多有據可查的方法。最簡單的方法是手動transfer it via adb。這也可以直接從手表上完成,因此您甚至不必向手機發送數據。
這篇關于在Android Wear OS(即CSV)上保存和傳輸智能手表傳感器數據的最佳方式是什么?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,