Получение магнитного севера от xyz магнитометра (iPhone 3.0)

Просто простое обновление первого ответа: mActivity.managedQuery() устарела. Я обновил код новым методом.

private String getRealPathFromURI(Uri contentUri) {
    String[] proj = { MediaStore.Images.Media.DATA };
    CursorLoader loader = new CursorLoader(mContext, contentUri, proj, null, null, null);
    Cursor cursor = loader.loadInBackground();
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    String result = cursor.getString(column_index);
    cursor.close();
    return result;
}

android dev source

10
задан Kevin Montrose 31 July 2009 в 17:52
поделиться

1 ответ

Если вы не хотите использовать значение trueHeading , и предполагая, что компас лежит идеально горизонтально, направление можно вычислить следующим образом:

  • (y > 0) заголовок = 90 - atan2 (x, y) * 180 / pi
  • (y <0) заголовок = 270 - atan2 (x, y) * 180 / pi
  • (y = 0, x <0 ) заголовок = 180,0
  • (y = 0, x> 0) заголовок = 0,0

(они взяты из http://www.m Magneticsensors.com/datasheets/an203.pdf )

... плюс направление должно быть исправлено на Магнитное отклонение и Магнитное склонение

в случае, если компас не горизонтален, вы должны использовать только горизонтальный компонент (вы не можете игнорировать z ось), проецируя вектор (x, y, z) на плоскость, параллельную поверхности земли, а затем вычислите направление на основе этих спроецированных x и y.

Надеюсь, это поможет.

8
ответ дан 4 December 2019 в 02:26
поделиться