繁体   English   中英

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

[英]how to detect a metal using magnetic sensor in android phone?

  1. 我想使用磁传感器值检测金属。 我正在不断获取值,例如x = 30.00,y = -20.00,z = -13.00

  2. 现在我想知道如何使用这些值来检测任何金属(mathameticalcalu,公式)

代码是

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]);

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

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

然后,您需要将此值与地球上您所在位置的磁场预期值进行比较。 幸运的是,Android提供了这样做的功能。 看看GeomagneticField ,参考文献在这里https://developer.android.com/reference/android/hardware/GeomagneticField.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.40.6值,使其适合您的应用程序。 请注意,这永远不会100%地起作用,因为智能手机上的磁传感器非常便宜且令人讨厌。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM