如何在Android手机中使用磁传感器检测金属?

问题描述 投票:0回答:3
  1. 我想使用磁传感器值检测金属。我不断获得像 x=30.00 ,y=-20.00 ,z=-13.00

  2. 这样的值
  3. 现在我想知道如何使用这些值来检测任何金属(数学计算,公式)

代码是

sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
// get compass sensor (ie magnetic field)
myCompassSensor = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);

float azimuth = Math.round(event.values[0]);
float pitch = Math.round(event.values[1]);
float roll = Math.round(event.values[2]);
android android-sensors
3个回答
7
投票

要检测金属,必须检查磁场强度,即磁场矢量的大小。

float mag = Math.sqrt(x^2 + y^2 + z^2);

然后您需要将该值与地球上您所在位置的磁场预期值进行比较。幸运的是,Android 提供了这样做的功能。看一下

GeomagneticField
,参考在这里https://developer.android.com/reference/android/hardware/GeotropicField.html

然后,如果您从传感器中读出的值与预期值相差甚远,则说明有“某种东西”(您猜对了,是金属)正在干扰传感器附近的地球磁场。例如,您可以实施的测试如下:

if (mag > 1.4*expectedMag || mag < 0.6*expectedMag) {
    //there is a high probability that some metal is close to the sensor
} else {
    //everything is normal
}

您应该对

1.4
0.6
值进行一些试验,以使其适合您的应用。请注意,这永远不会 100% 有效,因为智能手机上的磁传感器非常便宜且令人讨厌。


0
投票

您可以使用 Android 磁场传感器检测磁场,而不是金属。但是具有磁场的金属也会被检测到,例如铁、镍等。因为含铁金属的行为与带电电缆相同。


0
投票

如果您想了解如何使用金属探测器的值来检测金属、硬币和文物,请访问我们的网站 themetalDetecting.us

© www.soinside.com 2019 - 2024. All rights reserved.