0

我在订阅发送的值时遇到了一些麻烦。以前,我设法通过创建自己的服务同时获取加速度计和陀螺仪数据,其中包含两者,正如 user1987093 建议的那样,作为以下问题的答案:同时读取加速度计和陀螺仪

这在新设备更新发布之前一直正常工作,当我想使用更新中的新功能(基本上来自快速传感器的更高采样率)时,我意识到我的 Android 应用程序不再工作,即使我调整了类到现在应该从传感器接收的内容,这在以下问题的答案中进行了简要说明: 如何在 Movesense 设备中设置采样率?.

总而言之,我无法读取传感器正在发送的数据,我什至不知道传感器是否正在发送一些东西。

要查看这是否是我创建以读取服务值(同时包括 acc&gyro 值)的类的问题,还是导致当前 android 应用程序过时的新更新结构的问题,我尝试了建议的 AccelerometerSampleService,它提供大约每 5 秒有一个新的最大线性加速度值和一个时间戳。我直接使用了来自以下链接的新更新提供的 dfu 包https://bitbucket.org/aschaer/movesense-device-lib/src/23b4512dbc128a8c1f17a33cd453160bc3256f67/samples/accelerometer_app/bin/?at=master. 据我所知,该服务在新版本中保持不变(除了函数 get 已被删除但我们正在尝试订阅该服务吗?)并且应该每 5 秒提供一个值和时间戳。问题出在以下代码行中:

      listenMaxAccelerationDisposable = movesense.getDevice(address)
            .listen("/Sample/Accelerometer/Data", MaxLinearAcceleration.class)
            .observeOn(AndroidSchedulers.mainThread())
            .subscribeWith(new DisposableObserver<MovesenseResponse<MaxLinearAcceleration>>() {
                @Override
                public void onNext(MovesenseResponse<MaxLinearAcceleration> maxLinearAcceleration) {
                    if (maxLinearAcceleration.body != null) {
                        dismissInitializingDialog();

它从不调用 onNext 方法,因此我没有得到任何值,我不知道是不是因为它们没有在该路径上发送(我也尝试使用相同的路径Sample/Accelerometer/Data/Subscription负面结果)或者因为我不知道如何从 android 端正确读取它们。

我有以下问题:

  • Android App 的新版本什么时候发布?目前最新版本是从四月开始的,从那时起嵌入式方面发生了很多变化。

  • 我如何首先有效地订阅这个 AccelerometerSampleService 以获得这个最大值和时间戳并在应用程序上看到它。

  • 我没有找到任何关于函数 listen 的工作原理以及它与 post 有何不同的参考。使用post的时候,是不是总得用delete after?

对于像我这样尝试使用 android 应用程序的人,如果您发布更多有关 android 应用程序的文档,以便我们更轻松地跟踪设备端的更新,我想我们将不胜感激。

4

2 回答 2

0

订阅新的 Api 所需的 URI 和合同。

看起来你试图使用旧的 api/lib。

请查看 BitBucket 存储库中的示例 Android 应用程序。

它已经更新了。

有一些示例如何使用新 API 以及如何使用“新”订阅。

于 2017-07-14T10:41:16.963 回答
0

导致同时订阅失败的问题已在最新的 Movesense-mobile-lib 中得到修复。然而,最近的传感器改进引入了一个错误,如果先订阅加速度计然后订阅陀螺仪,则会导致陀螺仪不起作用。

简而言之:

  • 现在您可以直接从移动设备订阅多项服务
  • 您必须(至少在修复最近的错误之前)先订阅Gyro,然后再订阅Accelerometer

完全免责声明:我为 Movesense 团队工作

于 2017-07-14T09:04:11.740 回答