Датчик акселерации

Датчик ориентации

Устройство с предустановленной ОС Android включает датчик ориентации, который используется для распознавания положения телефона в пространстве. Как трактуются координатные оси в Android продемонстрировано на рис. 9.1.

Ориентация в Android определяется тремя величинами:

· Азимут в градусах - угол между осью X и северным направлением

0 <= azimuth <= 360.

· Высота в градусах - угол между осью У и горизонтальным положением устройства.

-180<= pitch <= 180.

· Вращение в градусах - угол между осью X и горизонтальным положением устройства.

-90 <= roll <= 90.


Рис. 9.1.Направление координатных осей в датчике ориентации

Используйте метод getSystemService(Context.SENSOR_ SERVICE) чтобы инициализировать SensorManager. Далее используйте метод getDefaultSensor(Sensor.TYPE_ORIENTATION) чтобы создать объект класса Sensor и инициализировать его как датчик ориентации.

Для работы с датчиком ориентации необходимо реализовывать два метода, объявленные в интерфейсе: первый проверяет изменение точности, второй вызывается всякий раз, когда происходит изменение показаний датчика.

Android поддерживает большое число датчиков, которые могут быть использованы для получения информации о среде, окружающей мобильное устройство. Сейчас мы познакомимся, как в приложении использовать датчик ускорения.

Для того, чтобы использовать датчик ускорения, в программах необходимо реализовывать тот же интерфейс, что был описан выше.Параметр rate метода registerlistener() позволяет задавать точность показаний датчика ускорения устройства. Используйте метод getSystemService(Context.SENSOR_SERVICE) чтобы инициализировать SensorManager. Далее используйте методgetDefaultSensor(Sensor.TYPE_ACCELEROMETER) чтобы создать объект класса Sensor и инициализировать его как датчик акселерации. Рассмотрим поля объекта события метода onSensorChanged(SensorEvent):

· int accuracy - определяет точность измерений.

· long timestamp - время в наносекундах, идентифицирующее начало события.

· float[] values - значения в системе СИ.

· values[0] - текущее ускорение по X минус ускорение свободного падения по оси X.

· values[1] - текущее ускорение по Y минус ускорение свободного падения по оси Y.

· values[2] - текущее ускорение по Z минус ускорение свободного падения по оси Z.