我想知道其他人是否也经历过这种情况。当连接到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}
但是在向此传感器注册侦听器之后,不会触发任何事件。
其他传感器(如加速度计和陀螺仪)工作正常。
答案 0 :(得分:0)
你可以尝试稍微摇动设备,看看罗盘读数是否显示出来。您也可以尝试将其移动到另一个区域(磁干扰较小)..也许可以做一些数字8来校准设备。
答案 1 :(得分:0)
我怀疑这是一个比360更大的问题。我刚收到LG Watch R并且指南针不起作用。有一个带有指南针的库存表面,它总是指向同一个方向。我为C | Geo安装了一个geocaching扩展,它应该指示目标的距离和方位,它总是指向12:00。 开发人员的注释表明这是SDK的一个已知问题,他在计划的功能中列出了这个项目符号以供将来开发:
全面实施对指南针的支持(目前无法实现) 由于Android Wear SDK问题)。
来自:https://github.com/culmor30/cgeo-wear
因此,这似乎是SDK的已知问题/限制。
答案 2 :(得分:0)
我遇到了同样的问题。但只有当手表与moto x 2013(kitkat 4.4.4)配对时。使用华硕padfone 2(kitkat 4.4.2)和nexus 5(棒棒糖5.1),我不会遇到问题。 例如,我尝试过这个应用程序: https://play.google.com/store/apps/details?id=jack.campbell.messive.compass
使用moto 360和nexus 5与moto360和moto x 2013配合使用并不起作用。 我不知道为什么,但我想Android安装的下一次更新将会解决。
答案 3 :(得分:-1)
您希望注册一个侦听器,并让该侦听器在返回时读取值:
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) {
}