Сфотографируйте, когда телефон прямой
2 ответа
Вы должны быть в состоянии использовать датчик ориентации и SensorEvents.
Датчик ориентации позволяет вам контролировать положение устройства относительно> системы координат Земли (в частности, магнитного севера).
Датчик ориентации получает свои данные, используя геомагнитный> датчик поля устройства в сочетании с акселерометром устройства. Используя эти два> аппаратных датчика, датчик ориентации предоставляет данные для следующих> трех измерений:
Азимут (градусы поворота вокруг оси z). Это угол между магнитным севером и осью y устройства. Например, если ось y устройства выровнена с магнитным севером, это значение равно 0, а если ось y устройства направлена на юг, это значение равно 180. Аналогично, когда ось y указывает на восток, это значение равно 90, а когда оно указывает. запад это значение 270.
Шаг (градусы поворота вокруг оси х). Это значение является положительным, когда положительная ось z поворачивается к положительной оси y, и отрицательным, когда положительная ось z поворачивается к отрицательной оси y. Диапазон значений составляет от 180 градусов до -180 градусов.
Крен (градусы вращения вокруг оси у). Это значение является положительным, когда положительная ось z поворачивается к положительной оси x, и отрицательным, когда положительная ось z поворачивается к отрицательной оси x. Диапазон значений составляет от 90 градусов до -90 градусов.
Используя эти значения, вы сможете определить, когда телефон находится "прямо" в любом положении. На странице под заголовком "Использование датчика ориентации" есть примеры: http://developer.android.com/guide/topics/sensors/sensors_position.html
Также посмотрите на http://developer.android.com/reference/android/hardware/SensorEvent.html который показывает, как использовать события датчика
В вашей деятельности, где вы снимаете изображения, используйте
int i = getResources().getConfiguration(). ориентация;
через это вы получите текущую ориентацию мобильного телефона, если это портрет, то только захватить изображение.