java - 写入文本复制以前的数据

标签 java

所以我有一个(也许是微不足道的)无法解决的问题。因此,我正在使用 Android(传感器等为 standard libraries )设备收集一些传感器数据,如下所示(几乎是标准的):

private final SensorEventListener MultiSensorListener
            = new SensorEventListener() {
    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
        // TODO Auto-generated method stub
    }

    // Printing of data to screen happens here. File will be written here async.
    @Override
    public void onSensorChanged(SensorEvent event) {
        if (event.sensor.getType() == Sensor.TYPE_LIGHT) {
            String sensorReading = "\nLight Reading: " + String.valueOf(event.values[0]);
            side_output.append(sensorReading);                
        }
        //previous code, let's assume that both or any one has been done
        if (event.sensor.getType() == Sensor.TYPE_PROXIMITY) {
            //textLIGHT_reading.setText("LIGHT: " + event.values[0]);
            side_output.append("\nProximity Reading: " + String.valueOf(event.values[0]));
        }
        if()...

        // Many more can go
    }
};

所以我想要的是这样的:首先,当触发 onSensorChanged(SensorEvent event) 时,首先获取所有传感器值 event.values[index] ,然后创建一个string 表(csv,可能存储在静态变量中)。

对于下面的示例,我们假设第一个是加速度计,然后是陀螺仪,最后是环境光等。即:

+--------------------+--------------------+--------------------+
| event.values[0]    | event.values[0]    | event.values[0]    |
+--------------------+--------------------+--------------------+
| event.values[new]  | copy from previous | copy from previous |
+--------------------+--------------------+--------------------+
| copy from previous | event.values[new]  | copy from previous |
+--------------------+--------------------+--------------------+

这里发生的是:

  1. 使用第一个读取的值填充第一行
  2. 对于每个 onSensorChanged(SensorEvent event),都会更新该特定传感器的行,并从之前的传感器复制未更改的值。

如何做到这一点?我尝试了字符串操作并使用 += 但事实是对于大量数据,处理正在成为一个大问题,我真的不希望我的数据收集为此而变慢!

感谢和问候。

最佳答案

您可以向传感器监听器或使用匿名类实例化的任何其他对象添加方法,然后在逻辑中调用这些日志记录方法:

private final SensorEventListener MultiSensorListener
            = new SensorEventListener() {

    // the overriden methods here ...

    private Map<String, String> map = new HashMap<>();

    private void logHistory(String key, String value) {
        // ...
        // for example:
        map.put(key, value);
    }

    private Map<String, String> getLoggedHistory() {
        Map<String, String> mapCopy = new HashMap<>();
        mapCopy.putAll(map);
        return mapCopy;
    }
    ...
    // Printing of data to screen happens here. File will be written here async.
    @Override
    public void onSensorChanged(SensorEvent event) {
       ...
       // log event:
       map.put(event.getId(), event); // just an example
    }

关于java - 写入文本复制以前的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39259700/

相关文章:

java - 使用 Stream 还是 Loop 之间的决定

java - 如何在netbeans gradle中使用类图创建Javadoc

java - 从命令行注入(inject) map

java - 当没有构造函数的类的默认构造函数是 'automatically' 时,为什么编译器会提示父类(super class)没有构造函数?

java - 获取任何文件的二进制值

Java何时启动新线程?

java - 如何区分开源jar和商业jar

java - 只要 activemq 连接没有关闭,我的简单程序就不会完成并退出

java - 从 tomcat sprinf 应用程序获取 pdf 文件时不允许加载本地资源

java - 为什么 BigQuery 加载作业统计信息会返回查询信息?