我正在寻找几个小时,但我找不到磁场传感器范围的例子或定义
而links说:
MAGNETIC_FIELD_EARTH_MIN : 30.0
MAGNETIC_FIELD_EARTH_MAX : 60.0
我的传感器检测值< 0 ...我在月球上吗? ;)
谢谢!
答案 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适用于所有传感器
无论如何,磁场本身没有最大值,因此最大范围必须由设备决定。查看文档。