2013-05-30 18 views
0

我對Android非常陌生,目前正在做一個小型相機應用程序,可以節省從相機快門打開到關閉時的陀螺儀/加速度計數據樣本。基本上,我初始化陀螺儀傳感器在圖像捕捉按鈕偵聽器(與camera.takePicture())並停止傳感器在ShutterCallback內。這是我的問題。我應該每次獲取新樣本時將記錄的傳感器數據寫入.txt,還是有一些聰明的方法?捕獲圖像時保存陀螺儀數據

回答

0

我寫了一個應用程序,以最快的速度記錄傳感器數據(SensorManager.SENSOR_DELAY_FASTEST)。我擔心與執行其他任務時不斷寫入文本文件相關的性能問題,因此我創建了AsyncTask類來在後臺執行此操作。下面的代碼對我來說工作得很好,即使應用程序運行了幾個小時。在你的情況下,因爲你只想記錄一小段時間,另一個想法是將日誌信息保存在一個集合對象的內存中(例如ArrayList<>),然後記錄ShutterCallback上的所有內容。

public void LogSensor(long SystemTime, int SensorType, float[] SensorValues) { 
    String LogString = Integer.toString(SensorType); 
    for(int i=0; i<SensorValues.length; i++) LogString += "," + SensorValues[i]; 
    (new LogSensor_in_background()).execute(SystemTime+","+LogString); 
} 

private class LogSensor_in_background extends AsyncTask<String, Void, Void> { 
    @Override 
    protected Void doInBackground(String... LogStrings) {  
    // do logging 
    return null; } 
}