android获取平面设备的角度

时间:2016-02-04 10:54:47

标签: android sensor

这是移动角度相对于移动平放的角度0的倾斜度。 我想在角墙(两面墙之间)上精确测量角度

我已经使用了这段代码,并获得了结果:

public void onAccuracyChanged(Sensor sensor, int accuracy) {

    float[] mGravity;
    float[] mGeomagnetic;
    public void onSensorChanged(SensorEvent event){
      if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
           mGravity = event.values.clone();
      }
      if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD)
          mGeomagnetic = event.values.clone();
      if (mGravity != null && mGeomagnetic != null) {
        float R[] = new float[9];
        float I[] = new float[9];
        boolean success = SensorManager.getRotationMatrix(R, I, mGravity, mGeomagnetic);
        if (success) {
          float orientation[] = new float[3];
          SensorManager.getOrientation(R, orientation);
          azimut = orientation[0]; 
          mAzimuthView.setText(String.format("%.2f",Math.toDegrees(azimut)) + '°');
          tv.setText(String.format("%.2f", Math.toDegrees(azimut-angle_reset)) + '°');
        }
    }

}

1 - GSM是扁平垂直 - >方位角= 37°。 2 - 水平旋转90° - > = -111°方位角。 所以差异(111-37)是74°!!!! (但通常我必须达到90°)

0 个答案:

没有答案