3

我正在尝试什么:- 我想使用我的 android 设备找到磁铁。

我已经做了什么:- 我正在注册我的磁场类型传感器,如下所示

Sensor magnetometer = mSensorManager
            .getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);

onSensorChanged(SensorEvent event)方法中,如果类型是磁场,我将从 event.value 获取 x,y,z。

到目前为止一切都很好,然后我从这三个值中
Math.sqrt((x*x)+(y*y)+(z*z))得到绝对值,我得到一个绝对值。
但我认为这仅与设备有关,因为当我将一块磁铁靠近我的设备时,什么都不会发生(绝对值和它的 (x,y,z) 都不会改变。

谢谢。

4

2 回答 2

0

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

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

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

以防万一,我认为将磁铁靠近时,您没有注意到磁场值有任何显着差异,这是一些硬件问题。

于 2013-01-16T08:15:46.900 回答
0

我猜你的设备测量的不是你的磁铁,而是地球的磁场。当您以这种方式连接值时,与设备的方向无关,您始终可以返回相同的值。除了返回值始终为 0 外,您只需测量任何内容,这可能是硬件故障。

于 2012-12-07T07:56:38.517 回答