![](/img/trans.png)
[英]Android Sensor.TYPE_MAGNETIC_FIELD Vs WindowsPhone Sensor.TYPE_MAGNETIC_FIELD
[英]How to utilize the type_magnetic_field_uncalibrated-sensor on Android?
我正在創建一個應用程序,用於使用Android 7.1.2 API 25讀取手機的磁場。到目前為止,我已經成功使用TYPE_MAGNETIC_FIELD-sensor制作了一個應用程序,但是我無法使用TYPE_MAGNETIC_FIELD_UNCALIBRATED-sensor檢索任何數據。
public class MainActivity extends AppCompatActivity implements SensorEventListener {
TextView textViewX;
TextView textViewY;
TextView textViewZ;
private static SensorManager sensorManager;
private Sensor magnetometer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textViewX = (TextView) findViewById(R.id.textViewX);
textViewY = (TextView) findViewById(R.id.textViewY);
textViewZ = (TextView) findViewById(R.id.textViewZ);
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
magnetometer = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD_UNCALIBRATED);
}
@Override
protected void onResume() {
super.onResume();
sensorManager.registerListener(this, magnetometer, SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
protected void onPause() {
super.onPause();
sensorManager.unregisterListener(this);
}
@Override
public void onSensorChanged(SensorEvent Event) {
if (Event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD_UNCALIBRATED) {
float xAxis = (Event.values[0]);
float yAxis = (Event.values[1]);
float zAxis = (Event.values[2]);
String textX = String.format("%.0f", xAxis);
textViewX.setText(textX + "µTr");
String textY = String.format("%.0f", yAxis);
textViewY.setText(textY + "µTr");
String textZ = String.format("%.0f", zAxis);
textViewZ.setText(textZ + "µTr");
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int i) {
}
}
似乎從未使用未校准的磁場傳感器記錄任何事件。 是否有我缺少的東西,或者未校准的傳感器不可用?
我發現TYPE_MAGNETIC_FIELD_UNCALIBRATED在我的設備上不可用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.