Ответ 1
Акселерометр дает вам три направления (x, y, z). Это измерения ускорения, которые сложнее узнать, что такое положение устройства. Но помните, что ускорение связано с позицией через интеграцию:
a(t) = a[x]
v(t) = a[x]t + c
x(t) = a[x]t ^ 2 + ct + d
Проблема в том, что вы не можете знать c или d, потому что, когда вы берете производную, константы выпадают. Таким образом, есть некоторая сумма, которую вы не можете получить с помощью c и d. Вы можете попытаться компенсировать это, вспомнив значения, которые вы использовали для них. Таким образом, после захвата 3 образцов вы можете начать вычислять позицию из этого.
Существует значительная информация о том, как интерпретировать данные с датчиков. Как выяснение, где гравитация для ориентации, и вычитание силы тяжести для получения линейного ускорения.
http://developer.android.com/reference/android/hardware/SensorEvent.html
Здесь вы можете найти положение с помощью акселерометра вместе с алгоритмом поиска позиции в деталях:
http://www.freescale.com/files/sensors/doc/app_note/AN3397.pdf