SensorManager:磁场范围

时间:2012-02-19 13:02:37

标签: android android-sensors

我正在寻找几个小时,但我找不到磁场传感器范围的例子或定义

links说:

MAGNETIC_FIELD_EARTH_MIN : 30.0 
MAGNETIC_FIELD_EARTH_MAX : 60.0

我的传感器检测值< 0 ...我在月球上吗? ;)

谢谢!

3 个答案:

答案 0 :(得分:4)

你不能获得负磁(总)功率。负值表示根据x,y,z轴的磁场位置。

计算你必须使用的总磁力:

double teslaXYZ = Math.sqrt((magnetX*magnetX)+(magnetY*magnetY)+(magnetZ*magnetZ));

此值最小值为0 nt,最大值为200 nt。

地球的最小值是20 nt到70 nt取决于你在地球上的位置..

答案 1 :(得分:4)

要获得磁场强度,必须得到磁场的x,y,z值(来自Sensor.TYPE_MAGNETIC_FIELD),并应用以下公式:

double magnetic_field_strength = Math.sqrt( (Xvalue*Xvalue) + (Yvalue*Yvalue) + (Zvalue*Zvalue) );

magnetic_field_strength实际上以 microtesla(μT)表示,而不是前面答案中建议的nanotesla(nT) 可以注意到,根据this website,地球的平均磁场强度为50μT。


所以可能的代码是:

private SensorEventListener sensorEventListener = new SensorEventListener() {   
    @Override
    public void onSensorChanged(SensorEvent event) {

        switch (event.sensor.getType()) {
        case Sensor.TYPE_MAGNETIC_FIELD:
            magnetic_field_strength = Math.sqrt((event.values[0]*event.values[0])+(event.values[1]*event.values[1])+(event.values[2]*event.values[2]));
            break;                      
        default: 
            return;
        }                
    }
}

答案 2 :(得分:0)

您可以在此处找到答案:http://code.google.com/p/openintents/wiki/SensorSimulator适用于所有传感器

无论如何,磁场本身没有最大值,因此最大范围必须由设备决定。查看文档。