【发布时间】:2013-05-30 18:55:16
【问题描述】:
我对 Android 很陌生,目前正在做一个小相机应用程序,它可以保存从相机快门打开到关闭时的陀螺仪/加速度计数据样本。基本上,我在图像捕获按钮侦听器中初始化陀螺传感器(使用camera.takePicture())并在ShutterCallback 内停止传感器。这是我的问题。每次我得到一个新样本时,我应该将记录的传感器数据写入 .txt 还是有一些聪明的方法?
【问题讨论】:
我对 Android 很陌生,目前正在做一个小相机应用程序,它可以保存从相机快门打开到关闭时的陀螺仪/加速度计数据样本。基本上,我在图像捕获按钮侦听器中初始化陀螺传感器(使用camera.takePicture())并在ShutterCallback 内停止传感器。这是我的问题。每次我得到一个新样本时,我应该将记录的传感器数据写入 .txt 还是有一些聪明的方法?
【问题讨论】:
我编写了一个应用程序,以最快的速度记录传感器数据 (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; }
}
【讨论】: