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

2024-03-28

我为 Fossil Gen 6 智能手表编写了一个 Wear 应用程序,它从板载传感器中提取光电体积描记图 (PPG) 数据并不断更新屏幕上的值。这是我的onSensorChanged方法,它识别来自 PPG 传感器的事件并更新TextView相应地反对。我还尝试使用 a 将每个数据写入 CSV 文件FileWriter object.

@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 method:

protected void onResume() {
        super.onResume();
        try {
            writer = new FileWriter("data.csv",true);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

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


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

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

无论您的具体解决方案是什么样子,都需要记住以下几点:

  1. 写入文件是一项昂贵的操作。对从传感器收到的每个数据点都执行此操作并不理想。考虑将数据保存到数据库使用房间 https://developer.android.com/training/data-storage/room反而。一个更简单的选择是将其保留在内存中,只要您同意在应用程序崩溃或设备意外重启时可能会丢失一些数据。这可以使用基本数组或某种映射(时间戳和值)来完成,具体取决于您需要的数据。您还可以混合使用这两种方法并批量保存数据。

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

  3. 您可以使用以下方式将数据发送到手机可穿戴数据层API https://developer.android.com/training/wearables/data/data-layer。您必须设置一个MessageClient or a ChannelClient取决于您需要传输多少数据。如果您坚持使用 Android 支持的数据结构(而不​​是创建自己的数据结构),那么发送它们应该相当简单。

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

您决定如何将文件传输到计算机上的具体方式超出了我在此尝试回答的范围。有很多有据可查的方法可以做到这一点。最简单的是手动通过adb传输 https://developer.android.com/studio/command-line/adb#copyfiles。这也可以直接从手表完成,因此您甚至不必将数据发送到手机。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 使用 JDBC 连接到 PostgreSql 的本地实例

    我在 Linux 机器上有一个正在运行的 PostgreSql 本地实例 当我使用psql来自 shell 的命令我成功登录 没有任何问题 我需要通过 JDBC 连接到 PostgreSql 但我不知道我到底应该传递什么url参数为Driv
  • 如何使用双重调度来分析图形基元的交集?

    我正在分析图形基元 矩形 直线 圆形等 的交互并计算重叠 相对方向 合并等 这被引用为双重调度的一个主要示例 例如维基百科 http en wikipedia org wiki Double dispatch 自适应碰撞算法通常要求 不同的
  • AndEngine MenuScene - 无法单击按钮

    我有一个关于 android 和 andengine 的小问题 这是我的主菜单的源代码 AbstractScene is extending Scene public class MainMenuScene extends Abstract
  • 如何在同一设备上运行的 Android 应用程序之间传输文件?

    我正在编写一个与 RESTful 服务交互的 Android 应用程序 该 Web 服务本质上是一个文件系统 并提供元数据以及对文件的 CRUD 访问 我的应用程序检索元数据 并通过ContentProvider 我需要添加与我的应用程序在
  • 在java程序中使用c++ Dll

    我正在尝试使用System LoadLibrary 使用我用 C 编写的一个简单的 dll UseDllInJava java import com sun jna Library import com sun jna Native imp
  • UseCompressedOops JVM 标志有什么作用以及何时应该使用它?

    HotSpot JVM 标志是什么 XX UseCompressedOops我应该做什么以及什么时候使用它 在 64 位 Java 实例上使用它 与不使用它 时 我会看到什么样的性能和内存使用差异 去年大多数 HotSpot JVM 都默认
  • 使用 Proguard 通过 Dropbox.com 库混淆 Android 应用程序

    我刚刚创建了一个需要 Dropbox com API 库的 Android 应用程序 我现在尝试在 发布 模式下构建应用程序 并希望在代码上运行混淆器以对其进行混淆 但是 每当我尝试运行 Proguard 时 都会收到以下错误 Progua
  • 类更改(例如字段添加或删除)是否保持 Serialized 的向后兼容性?

    我有一个关于 Java 序列化的问题 在这种情况下 您可能需要修改可序列化类并保持向后兼容性 我有丰富的 C 经验 所以请允许我将 Java 与 NET 进行比较 在我的Java场景中 我需要使用Java的运行时序列化机制序列化一个对象 并
  • Java 8 Stream,获取头部和尾部

    Java 8 引入了Stream http download java net jdk8 docs api java util stream Stream html类似于 Scala 的类Stream http www scala lang
  • 如何向页面添加 HTML 页眉和页脚?

    如何使用 itext 从 html 源添加标题到 pdf 目前 我们已经扩展了 PdfPageEventHelper 并重写了这些方法 工作正常 但当我到达 2 个以上页面时 它会抛出 RuntimeWorkerException Over
  • 文本视图不显示全文

    我正在使用 TableLayout 和 TableRow 创建一个简单的布局 其中包含两个 TextView 这是代码的一部分
  • java实现excel价格、收益率函数[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Android计算两个日期之间的天数

    我编写了以下代码来查找两个日期之间的天数 startDateValue new Date startDate endDateValue new Date endDate long diff endDateValue getTime star
  • 使 Recyclerview 固定高度并可滚动

    已解决以下检查答案 所以我试图为我的 Android 应用程序创建评论功能 我想在 recyclerview 中显示评论 然后在 recyclerview 下方有一个按钮和文本视图来添加评论 我想让 recyclerview 具有一定的高度
  • 如何知道我的应用程序的活动计数?

    我的应用程序中有多项活动 请考虑以下案例 Activity A 调用 Activity B B 调用 C 当用户按后退键时 C 生成通知并转到 B 现在再次按后退 因此将显示 A 再次按后退键也会终止 A 并显示通知 现在 当用户按下通知图
  • 通过 Gradle 和 Android Studio 构建和运行应用程序比通过 Eclipse 慢

    我有一个多项目 10 个模块 每次构建大约需要 20 30 秒 当我在 Android Studio 中按 运行 时 每次都必须等待才能重建应用程序 这非常慢 是否可以在 Android Studio 中自动化构建过程 或者您对如何加快此过
  • 我所有的 java 应用程序现在都会抛出 java.awt.headlessException

    所以几天前我有几个工作Java应用程序使用Swing图书馆 JFrame尤其 他们都工作得很好 现在他们都抛出了这个异常 java awt headlessexception 我不知道是什么改变了也许我的Java版本不小心更新了 谢谢你尽你
  • 动态更改按钮上的图像视图

    在我的应用程序中 我有按钮和ImageView 当我按下按钮时我想改变ImageView 我的可绘制文件夹中有 5 张图像 按下按钮时 ImageView 根据按钮单击一张一张地更改图像 我想要它的解决方案 感谢任何可以提供帮助的人 维护一
  • 带 getClassLoader 和不带 getClassLoader 的 getResourceAsStream 有什么区别?

    我想知道以下两者之间的区别 MyClass class getClassLoader getResourceAsStream path to my properties and MyClass class getResourceAsStre
  • 使用 DBCP 配置 Tomcat

    在闲置一段时间 几个小时 后 我们收到了 CommunicationsException 来自 DBCP 错误消息 在异常中 位于这个问题的末尾 但我没有看到任何配置文件中定义的 wait timeout 我们应该看哪里 在 tomcat

随机推荐