КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Интерфейс традиционных датчиков в Android API
Сенсорные возможности Android Один из приятных аспектов работы с платформой Android заключается в возможности получить доступ к некоторым полезным компонентам самого устройства. До сих пор разработчиков мобильных устройств разочаровывала невозможность доступа к их внутреннему оборудованию. Хотя между вами и металлом все же остается прослойка Java -среды Android, команда разработчиков Android вывела многие возможности аппаратуры на поверхность. А так как Android - платформа с открытым исходным кодом, то можно засучить рукава и написать собственный код для решения своих задач. В Android существует много различных датчиков, используя которые, разработчики могут создавать интересные и полезные программные решения. Рассмотрим более подробно работу с датчиками в Android. Пакет android. hardware представляет разработчику API, который может быть использован при необходимости в приложениях, опирающихся на аппаратные возможности устройства. К примеру, пакет представляет интерфейс управления камерой и другими датчиками устройства. Операционная система Android по умолчанию представляет программную абстракцию любого физического элемента устройства, будь то камера или датчик движения, но программируя приложения для работы с датчиками устройства, необходимо первоначально убедится, что требуемый датчик присутствует в мобильном устройстве. Чтобы обезопасить себя от таких ошибок нужно в манифест-файле программы использовать директиву <uses-feature>. В табл. 9.1 приведено описание аппаратно-ориентированных интерфейсов Android.
Рассмотрим более подробно несколько классов и интерфейсов. SensorEventLstener. Используется для получения уведомлений от SensorManager, в тот момент, когда показания датчика меняются. Содержит описание двух основных методов, которые необходимо описать в реализующем классе. · 1) public abstract void onAccuracyChanged (Sensor sensor, int accuracy); Вызывается тогда, когда точность показаний датчика изменяется. Параметр sensor определяет датчик - объект класса Sensor. Параметр accuracy определяет точность измерений датчика. Точность может быть: высокая, низкая, средняя, ненадежные данные. · 2) public abstract void onSensorChanged (SensorEvent event, float values[]); Метод вызывается всякий раз, когда изменяется значение датчика. Этот метод вызывается только для датчиков контролируемых самим приложением. В число аргументов метода входит целое, которое указывает, что значение датчика изменилось, и массив значений с плавающей запятой, отражающих собственно значение датчика. Некоторые датчики выдают только одно значение данных, тогда как другие предоставляют три значения с плавающей запятой. Датчики ориентации и акселерометр дают по три значения данных каждый. SensorManager. Предоставляет доступ к различным датчикам устройства. Используя метод getSystemService с параметром SENSOR_SERVICE, можно получить экземпляр класса. Программируя приложения использующие датчики всегда необходимо убедиться в том, что датчики не функционирует, когда приложение приостановлено. Пример демонстрирует основы работы с классом SensorManager и Sensor. Объект интересующего датчика может быть получен при помощи вызова метода, объекта класса SensorManager, getDefaultSensor(Sensor.<тип>). Все типы датчиков Android описаны в виде констант в классе Sensor. Методы onResume() и onPause() необходимы для экономичного использования энергоресурсов устройства. Всякий раз, когда приложение приостанавливает свою работу, сбрасывайте слушатель датчика. Для взаимодействия с датчиком приложение должно зарегистрироваться на прием действий, связанных с одним или несколькими датчиками. Регистрация осуществляется с помощью метода SensorManager.registerListener(). SensorEvent. Класс описывает различные типы событий датчиков, которые вычисляются устройством по -разному в зависимости от разновидности датчика. Будучи шаблоном, описывающим процесс функционирования различных датчиков (ускорения, ориентации…), класс представляет очень гибкое средство получения показаний от этих компонентов устройства. Рассмотрим более подробно структуру класса. Класс имеет четыре основных поля, раскрывающих процесс взаимодействия датчика устройства с окружающим миром. 1. Accuracy - поле определяет точность показаний сенсора, обычно значение этой величины - константа, которая задается при регистрации слушателя на объект класса Sensor. 2. Sensor - объект сгенерировавший событие. 3. Timestamp - величина типа long, сообщающая время (в наносекундах) возникновения события. 4. Float values[] - значения с датчика, которые отображают процесс взаимодействия устройства с окружающим миром. Этот параметр зависит от типа датчика. public class SensorActivity extends Activity, implements SensorEventListener { private final SensorManager mSensorManager; private final Sensor mAccelerometer; public SensorActivity() { mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE); mAccelerometer = mSensorManager.getDefaultSensor (Sensor.TYPE_ACCELEROMETER); } protected void onResume() { super.onResume(); mSensorManager.registerListener(this,mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL); } protected void onPause() { super.onPause(); mSensorManager.unregisterListener(this); } public void onAccuracyChanged(Sensor sensor, int accuracy) { } public void onSensorChanged(SensorEvent event) { }}
Дата добавления: 2014-11-26; Просмотров: 487; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |