本文介紹了在Android Wear OS(即CSV)上保存和傳輸智能手表傳感器數(shù)據(jù)的最佳方式是什么?的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
我已經(jīng)為Fossil Gen 6智能手表編寫了一個(gè)Wear應(yīng)用程序,它從機(jī)載傳感器提取光體積圖(PPG)數(shù)據(jù),并不斷更新屏幕上的值。下面是我的onSensorChanged
方法,它識(shí)別來自PPG傳感器的事件并相應(yīng)地更新TextView
對(duì)象。我還嘗試使用FileWriter
對(duì)象將每個(gè)數(shù)據(jù)寫入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();
}
}
我不確定要做的是讓有這個(gè)文件可供寫入,它應(yīng)該以某種方式存儲(chǔ)在手表上還是配對(duì)的手機(jī)上,以及我如何最終在我的PC上檢索CSV數(shù)據(jù)以便在MATLAB中進(jìn)行分析,等等。(有沒有更好的方法來做到這一點(diǎn)?)謝謝!
推薦答案
我首先想說的是,有很多方法可以做到這一點(diǎn),而最佳方法在很大程度上取決于您的用例的具體情況(有時(shí)還包括個(gè)人喜好)。
要記住的最重要的一點(diǎn)是,與普通手機(jī)相比,這款手表的資源(電池、內(nèi)存、CPU)非常有限。
無論您的確切解決方案是什么樣子,都要記住以下幾點(diǎn):
寫入文件是一項(xiàng)開銷很大的操作。對(duì)從傳感器接收到的每個(gè)數(shù)據(jù)點(diǎn)執(zhí)行此操作并不理想。請(qǐng)考慮將數(shù)據(jù)保存到數(shù)據(jù)庫using Room。一個(gè)更簡(jiǎn)單的替代方案是,如果應(yīng)用程序崩潰或設(shè)備意外重啟,可能會(huì)丟失一些數(shù)據(jù),只要你沒有問題,就是將其保存在內(nèi)存中。這可以使用一個(gè)基本數(shù)組或某種類型的映射(時(shí)間戳和值)來完成,具體取決于您需要什么數(shù)據(jù)。您還可以混合使用這兩種方法并成批保存數(shù)據(jù)。
在手表和手機(jī)之間發(fā)送數(shù)據(jù)也很昂貴。我強(qiáng)烈建議把東西儲(chǔ)存在手表上,只有在需要的時(shí)候才轉(zhuǎn)移到手機(jī)上。這可以是手動(dòng)觸發(fā),每天在手表充電時(shí)的特定時(shí)間,也可以是其他一些巧妙的策略,以將對(duì)手表電池壽命的影響降至最低。
您可以使用Wearable Data Layer API將數(shù)據(jù)發(fā)送到手機(jī)。您必須根據(jù)需要傳輸?shù)臄?shù)據(jù)量設(shè)置MessageClient
或ChannelClient
。如果您堅(jiān)持使用Android支持的數(shù)據(jù)結(jié)構(gòu)(而不是創(chuàng)建自己的數(shù)據(jù)結(jié)構(gòu)),那么將它們發(fā)送過來應(yīng)該是相當(dāng)簡(jiǎn)單的。
如果您需要處理或格式化數(shù)據(jù),以便在MatLab中輕松分析數(shù)據(jù),請(qǐng)考慮在手機(jī)上而不是在手表上執(zhí)行此操作。當(dāng)然,對(duì)大小合理的數(shù)據(jù)集進(jìn)行更簡(jiǎn)單的操作可以直接在手表上執(zhí)行。
您決定如何將文件發(fā)送到您的計(jì)算機(jī)的具體方式超出了我在此嘗試回答的范圍。要做到這一點(diǎn),有很多有據(jù)可查的方法。最簡(jiǎn)單的方法是手動(dòng)transfer it via adb。這也可以直接從手表上完成,因此您甚至不必向手機(jī)發(fā)送數(shù)據(jù)。
這篇關(guān)于在Android Wear OS(即CSV)上保存和傳輸智能手表傳感器數(shù)據(jù)的最佳方式是什么?的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,