Сфотографируйте, когда телефон прямой

Я просто хочу задать вопрос, потому что я искал в Google, и я не могу найти что-то полезное, и читал об этом и об этом.

Вопрос в том, могу ли я сделать снимок с камеры только тогда, когда телефон прямо с использованием датчиков в устройстве Android?

Просто ищете совет, как это сделать?

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(). ориентация;

через это вы получите текущую ориентацию мобильного телефона, если это портрет, то только захватить изображение.

Другие вопросы по тегам