我想要的是什么: - 我想用我的Android设备找到磁铁。
我还做了什么: - 我正在注册我的类型磁场传感器
Sensor magnetometer = mSensorManager
.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
并且在onSensorChanged(SensorEvent event)
方法中,如果type是磁场,我将从event.value获取x,y,z。
到目前为止一切都很好,然后我用这三个值得到绝对值
Math.sqrt((x*x)+(y*y)+(z*z))
我得到一个绝对值。
但我认为这只与设备有关,因为当我将一个磁铁靠近我的设备时,没有任何事情发生(绝对值和它的(x,y,z)都没有变化。
感谢。
答案 0 :(得分:0)
我猜你的设备不能测量磁铁,而是测量地球的磁场。当您以这种方式连接值时,独立于设备的方向,您总是会返回相同的值。除了返回的值始终为0,那么您只需测量一下,它可能是硬件故障。
答案 1 :(得分:0)
我也是Android开发的新手,并且有兴趣创建一个类似的应用程序,当磁铁充分靠近我的手机时,我会收到通知。
我使用相同的公式来计算净磁场,如果您参考传感器管理器上的此Android文档here,您将找到地球磁场的MAX和MIN值。
我的应用程序使用相同的范围来检测磁铁,它工作正常。根据您需要的“promixity”,您可以根据需要调整值。
如果你把磁铁拉得更近,你没有注意到磁场值有任何相当大的差异,我想,这是一些硬件问题。