没有磁传感器,指南针不工作

时间:2016-03-31 08:24:33

标签: android compass-geolocation

我正在开展一个项目,我必须找到方向。我写了一个代码并做了测试。它在某些设备上运行良好,但在其他设备中它(指针)甚至没有移动。我对此进行了研究,并了解到磁传感器是Compass工作的唯一关键。

    public class Compass extends Activity implements SensorListener {
  SensorManager sensorManager;
  static final int sensor = SensorManager.SENSOR_ORIENTATION;
  ViewCOm viewcom;


  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Set full screen view
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
    requestWindowFeature(Window.FEATURE_NO_TITLE);

    viewcom = new ViewCOm(this);

    setContentView(viewcom);

    // get sensor manager
    sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
  }

  // register to listen to sensors
  @Override
  public void onResume() {
    super.onResume();
    sensorManager.registerListener(this, sensor);
  }

  @Override
  public void onPause() {
    super.onPause();
    sensorManager.unregisterListener(this);
  }

  // Ignore for now
  public void onAccuracyChanged(int sensor, int accuracy) {
  }

  // Listen to sensor and provide output
  public void onSensorChanged(int sensor, float[] values) {
    if (sensor != Compass.sensor)
      return;
    int orientation = (int) values[0];
    viewcom.setDirection(orientation);
  }
}

我的问题是,有没有其他方式像GPS或MAP来创建指南针?

提前致谢。

2 个答案:

答案 0 :(得分:2)

  

我的问题是,有没有其他方式像GPS或MAP来创建指南针?

如果不涉及磁传感器,则无法创建罗盘功能。 GPS在这里也没有帮助,它只会让你计算你要移动的方向(并且因为你需要至少两个不同的坐标,你站立时不能这样做)。您可以尝试计算North的位置,但请注意,这将需要更大的坐标差异,而不是5步。

答案 1 :(得分:1)

  

基本上可以使用三种主要类型的审查   罗盘。

1) HALL传感器

2)各向异性磁阻(AMR)。

3)巨磁阻(GMR)。

  

这些类型中的任何一种都具有改变其电阻的磁传感器   与特定方向的磁场成比例。

     

芯片上的电路检测磁场强度并制造   该字段及其方向可用作数字数据。上的CPU   只要需要罗盘数据,手机就会提取此数据。

     

所以,如果手机中有任何一个,你可以使用指南针。