Я пытаюсь сделать приложение, которое будет действовать как секстант (чтобы найти высоту объекта). Можно ли использовать данные с акселерометра, чтобы найти угол, на который указывает телефон? В идеале пользователь будет держать свой телефон в ландшафтном положении и смотреть вдоль его края, чтобы увидеть угол.
Вы CAN используете акселерометр ТОЛЬКО, чтобы использовать мобильное устройство в качестве секстанта.
Чтобы найти высоту структуры, выполните следующую процедуру:
Пользователь держит телефон и смотрит вдоль его края на снизу структуры.
Здесь он нажимает ButtonA.
Пользователь держит телефон и смотрит по краю его на верх структуры.
Здесь он нажимает ButtonB.
Ваше приложение должно сохранять значение ускорения z при нажатии кнопок.
Теперь угол можно рассчитать как:
Theta = обратный косинус (Zb/Za)
Данные акселерометра могут рассказать вам, какое направление гравитации тянет, и от этого вы можете выяснить, какой угол телефон удерживается по отношению к земле. Это вряд ли будет очень стабильным или точным, поэтому я не уверен, насколько хорошо он будет работать для точного использования, как то, что вы описываете.
http://code.google.com/p/moonblink/wiki/Tricorder Это приложение представляет собой отличную демонстрацию как данных акселерометра, так и данных компаса, которые может дать ваш телефон. Я рекомендую взглянуть на него, чтобы узнать, могут ли данные, предоставленные вами датчиками, использовать вашу идею.
Используйте датчик ориентации. См. документацию SensorManager.
Если вы этого не видели, есть приложение, которое называется Surveyor, которое делает что-то похожее на то, что вам нужно.
Я не думаю, что это возможно. Единственные данные, которые даст вам телефон - это ускорение, изменение скорости во времени.
Вам нужен телефон с функцией компаса, описанной здесь здесь. Я думаю, используя этот датчик, вы сможете реализовать секстант, как приложение.