2013-05-30 2 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; } 
} 
Смежные вопросы