Просто простое обновление первого ответа: 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;
}
Если вы не хотите использовать значение trueHeading
, и предполагая, что компас лежит идеально горизонтально, направление можно вычислить следующим образом:
(они взяты из http://www.m Magneticsensors.com/datasheets/an203.pdf )
... плюс направление должно быть исправлено на Магнитное отклонение и Магнитное склонение
в случае, если компас не горизонтален, вы должны использовать только горизонтальный компонент (вы не можете игнорировать z ось), проецируя вектор (x, y, z) на плоскость, параллельную поверхности земли, а затем вычислите направление на основе этих спроецированных x и y.
Надеюсь, это поможет.