在 Android Wear OS(即 CSV)上保存和传输智能手表传感器数据的最佳方式是啥?

Posted

技术标签:

【中文标题】在 Android Wear OS(即 CSV)上保存和传输智能手表传感器数据的最佳方式是啥?【英文标题】:What is the best way to save and transfer smartwatch sensor data on Android Wear OS (i.e. as CSV)?在 Android Wear OS(即 CSV)上保存和传输智能手表传感器数据的最佳方式是什么? 【发布时间】:2022-01-11 22:40:10 【问题描述】:

我为 Fossil Gen 6 智能手表编写了一个 Wear 应用程序,它从板载传感器中提取光电容积描记 (PPG) 数据并不断更新屏幕上的值。这是我的onSensorChanged 方法,它识别来自PPG 传感器的事件并相应地更新TextView 对象。我还尝试使用 FileWriter 对象将每个数据写入 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();
        
    

我不知道该怎么做实际上是这个文件可以写入,它是否应该以某种方式存储在手表或配对的手机上,以及我如何最终检索我的电脑上的 CSV 数据,用于在 MATLAB 等中进行分析。(有更好的方法吗?)谢谢!

【问题讨论】:

【参考方案1】:

首先我想说的是,有很多方法可以做到这一点,而被认为是“最佳”的方法在很大程度上取决于您的用例的具体情况(有时还取决于个人喜好)。

最重要的是要记住,与典型的手机相比,手表的资源(电池、内存、CPU)非常有限。

无论您的确切解决方案是什么样的,都需要牢记以下几点:

    写入文件是一项昂贵的操作。对您从传感器接收到的每个数据点执行此操作并不理想。请考虑将您的数据保存到数据库using Room。如果应用程序崩溃或设备意外重启,只要您确定可能会丢失一些数据,一个更简单的替代方法是将其保存在内存中。这可以使用基本数组或某种 Map(时间戳和值)来完成,具体取决于您需要的数据。您还可以混合使用这两种方法并批量保存数据。

    在手表和手机之间发送数据也很昂贵。我强烈建议将东西存放在手表本身上,并仅在需要时将其转移到手机上。这可以是手动触发,每天在特定时间,当手表充电时,或其他一些巧妙的策略,以尽量减少对手表电池寿命的影响。

    您可以使用Wearable Data Layer API 将您的数据发送到手机。您必须根据需要传输的数据量设置MessageClientChannelClient。如果您坚持使用 android 支持的数据结构(而不​​是创建自己的数据结构),那么发送它们应该相当简单。

    如果您需要处理或格式化数据以便在 MATLAB 中轻松分析,请考虑在手机而不是手表上执行此操作。对大小合理的数据集进行更简单的操作当然可以直接在手表上执行。

您决定如何将文件传输到您的计算机超出了我在此试图回答的范围。有很多有据可查的方法来做到这一点。最简单的是手动transfer it via adb。这也可以直接在手表上完成,因此您甚至不必向手机发送数据。

【讨论】:

以上是关于在 Android Wear OS(即 CSV)上保存和传输智能手表传感器数据的最佳方式是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Wear OS 更新一览 | 2021 Android 开发者峰会

Wear OS 上 Firebase 授权的最佳实践

Wear OS 上 Jetpack Compose 中的 BasicTextField 问题

Android Wear OS 在后台检索计步器

从 Wear 应用程序启动 OS 的连接屏幕

为 Wear OS 和普通应用程序构建的 Android Studio 项目,但共享源文件