在android中找到磁铁

时间:2012-12-07 05:23:50

标签: android sensor

我想要的是什么: - 我想用我的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)都没有变化。

感谢。

2 个答案:

答案 0 :(得分:0)

我猜你的设备不能测量磁铁,而是测量地球的磁场。当您以这种方式连接值时,独立于设备的方向,您总是会返回相同的值。除了返回的值始终为0,那么您只需测量一下,它可能是硬件故障。

答案 1 :(得分:0)

我也是Android开发的新手,并且有兴趣创建一个类似的应用程序,当磁铁充分靠近我的手机时,我会收到通知。

我使用相同的公式来计算净磁场,如果您参考传感器管理器上的此Android文档here,您将找到地球磁场的MAX和MIN值。

我的应用程序使用相同的范围来检测磁铁,它工作正常。根据您需要的“promixity”,您可以根据需要调整值。

如果你把磁铁拉得更近,你没有注意到磁场值有任何相当大的差异,我想,这是一些硬件问题。