【问题标题】:magnetic field sensor in Moto 360 not sending updatesMoto 360 中的磁场传感器未发送更新
【发布时间】:2014-10-04 18:59:09
【问题描述】:

我想知道其他人是否也经历过这种情况。当连接到 Moto 360 (Android Wear) 上的 Sensor.TYPE_MAGNETIC_FIELD 传感器时,我没有收到任何更新。

以下代码均有效:

SensorManager sm = (SensorManager) this.getSystemService(Context.SENSOR_SERVICE);
Sensor magnetic = sm.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
Log.i("Wear", "magnetic: " + magnetic);

输出:

I/Wear    (17471): magnetic: {Sensor name="Compass Sensor", vendor="Motorola", version=1, type=2, maxRange=4900.0, resolution=0.15, power=0.45, minDelay=40000}

但在向该传感器注册监听器后,不会触发任何事件。

其他传感器(如加速度计和陀螺仪)工作正常。

【问题讨论】:

    标签: android wear-os moto-360


    【解决方案1】:

    你能试着摇晃一下设备,看看罗盘读数是否出现。您也可以尝试将其移动到另一个区域(磁干扰较小).. 并且可以做一些数字八来校准设备。

    【讨论】:

    • 你能解释一下为什么这会有所帮助吗?
    • 我已经尝试了以上所有方法(以及更多,例如使用 TYPE_MAGNETIC_FIELD_UNCALIBRATED),但似乎没有任何东西可以“唤醒”指南针。是否有可能在固件中被禁用?
    【解决方案2】:

    我怀疑这不仅仅是 360 的问题。我刚收到 LG Watch R,指南针无法工作。有一个带有指南针的股票表盘,它总是指向同一个方向。我为 C|Geo 安装了一个地理缓存扩展,它应该指示到目标的距离和方位,它始终指向 12:00。
    开发人员的注释表明这是 SDK 的一个已知问题,他在未来开发的计划功能中列出了此项目符号:

    完全实现对手表指南针的支持(目前不可能 由于 Android Wear SDK 问题)。

    来自:https://github.com/culmor30/cgeo-wear

    因此,这似乎是 SDK 的一个已知问题/限制。

    【讨论】:

    • 有点有趣的是,我的文档将作为源链接到我一直在观看的同一线程中,以尝试找到解决此问题的方法:p 我的意思是“由于 Android 不可能Wear SDK 问题”是在让它工作时遇到问题,但这也是我第一个用于 Wear 的应用程序,所以我可能做错了。我不知道这是否真的是 AOSP 中的“已知问题”。我在论坛上看到有人说他们遇到过确实可以工作的 Android Wear 指南针应用程序的帖子,但我自己没有尝试过任何一个。
    【解决方案3】:

    我遇到了同样的问题。但前提是手表与 moto x 2013 (kitkat 4.4.4) 配对。使用华硕 padfone 2 (kitkat 4.4.2) 和 nexus 5 (Lollipop 5.1) 我没有问题。 例如我试过这个应用程序: https://play.google.com/store/apps/details?id=jack.campbell.messive.compass

    在 moto 360 和 nexus 5 中可以使用 moto360,而 moto x 2013 则无法使用。 我不知道为什么,但我想随着 Android Wear 的下一次更新会解决。

    【讨论】:

      【解决方案4】:

      您想注册一个侦听器并让该侦听器在返回值时读取它们:

      sm.registerListener(this, magnetic, SensorManager.SENSOR_DELAY_NORMAL);
      

      然后实现监听器并获取值(例如,类似这样的东西):

      /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
       * sensors
       * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
      @Override public void onSensorChanged(SensorEvent event) {
      
          if(event.sensor.getType() == magnetic.getType()) {
              float mag = event.values[0];
          }
      }
      
      @Override public void onAccuracyChanged(Sensor sensor, int accuracy) {
      
      }
      

      【讨论】:

      • 嗯,是的,我确实有监听器,但在 Moto 360 上从不调用它。对于其他传感器(陀螺仪、加速度计),调用监听器。在通用的安卓手机上,监听器也被称为
      • 我可以验证不只是 OP 有这个问题。有人能从 Moto 360 获取指南针更新吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多