Я тебя чувствую: использование платформы Sensor в Windows 7
Итак, мы вернулись. После длительного перерыва пришло время написать о замечательных новых API, используемые Windows 7 для определения местоположения и расширения возможностей ваших приложений. Я еще должен две статьи о панели задач Windows 7, чтобы завершить серию публикаций, но платформа Sensor and Location слишком хороша, чтобы оставлять ее напоследок.
Прежде, чем мы погрузится в API, я должен объяснить,что двигало нами, когда мы разрабатывали платформу Sensor and Location для Windows 7. Про местоположение я расскажу в будущих публикациях.
Почему сенсоры?
В последнее время мы являемся свидетелями возрастающей роли сенсоров в некоторых весьма захватывающих сценариях. Взять, к примеру, мобильное устройство, которое автоматически меняет ориентацию экрана с портретной на пейзажную на базе относительного положения устройства по отношению к земле (центра тяжести), или компьютеры, которые автоматически управляют яркостью экрана при изменении условий освещения для облегчения нагрузки при чтении. Однако, я думаю, наилучшим примером является автоматическое изменение часового пояса на мобильном устройстве - когда вы путешествуете, одной из первых вещей, которую вы делаете, - включаете устройство после приземления самолета - и оно магическим образом показывает правильное время, даже если вы пересекли несколько часовых поясов.
Помимо очевидных причин, другим серьезным основанием создать "платформу" является тот факт, что она унифицирует API, снижая затраты на использование этих API и разработку архитекторам ПО. В прошлом использование сенсоров было довольно-таки вертикальным решением. Не было определенного определения тому, что за сенсор используется, какие данные использует, как обратиться к этим данным. Отсутствие стандартизации делала программирование для сенсоров трудной задачей. Используя сенсор, например сенсор местоположения GPS, вы должны были выбрать устройство из широкого ряда производителей, у каждого из которых был определенный набор драйверов и API, которые требовалось изучить для работы с этим устройством. Если вы хотели сменить устройство или вендора, то часто приходилось изучать новые API.
В Windows 7 мы поставили задачу решить эту проблему в самом ее корне. Мы приняли меры к решению этих проблем, обеспечив встроенную поддержку для сенсоров. Платформа Sensor and Location в Windows 7 обеспечивает ряд стандартных интерфейсов, которые освободили разработчиков от необходимости изучать устройства различных производителей и позволили сосредоточиться на приложение, используя сенсоры в качестве еще одного устройства ввода данных. Предоставляя эти стандартные интерфейсы, платформа Sensor and Location в Windows 7 предлагает громадные преимущества разработчикам, упростив им обнаружение, доступ и получение информации от сенсоров и предоставляя разработчикам больше возможностей для оптимизации приложений к изменениям окружающих условий. В свою очередь, это создает спрос на устройства с сенсорами и если вы относитесь к вендорам аппаратного обеспечения, к вашим услугам стандартизированный способ использования единого API, который интегрирован в Windows. И что еще более важно, конечные пользователи получат в свое распоряжение приложения, способные чувствовать окружающую среду.
Часть головоломки, связанная с определением местоположения, добавляет абстрактный уровень поверх платформы Sensor с единственной целью обеспечить простой способ получения данных о географическом местоположении, сохраняя при этом конфиденциальность пользователей.
Сенсоры изнутри
Чтобы лучше понять API платформы Sensor, я сделаю краткий обзор архитектуры платформы, объяснив роль главных компонентов платформы. Следующее изображение иллюстрирует главные компоненты в системе. Обратите внимание, что эта схема охватывает не всю платформу - на ней отсутствует часть, отвечающая за местоположение, но сейчас этого более чем достаточно.
Первый компонент в платформе - сам сенсор - отмечено номером 1 на рисунке. Обычно это - реальное физическое устройство, которое измеряет такие физические явления, как количество света, температура, влажность, относительная сила тяжести и т.д. Однако, сенсор может быть и логическим устройством (иначе виртуальным). Виртуальный сенсор - это программный сенсор, который может имитировать функциональные возможности сенсора, олицетворяя сенсор и предоставляя данные платформе. Виртуальные сенсоры могут использоваться для симуляции реальных сенсоров, помогая процессу разработки, поскольку вы можете сразу видеть результат.
Каждому сенсору требуется драйвер, обеспечивающий взаимодействие между Windows 7 и устройством. Эта интеграция достигается через драйвер User-mode Device (UMD), отмеченный на рисунке под номером 2.
Для облегчения процесса написания драйвера устройства, который обеспечивает общение сенсора с Windows 7, в платформе предусмотрено расширение класса сенсоров, отмеченное номером 3. По сути, это библиотека драйвера, в которой реализован общий код, необходимый для драйверов сенсора. Хотя в сегодняшней статье мы не будем говорить о устройствах или драйверах, у нас есть два превосходных видео (
После того, как сенсор установлен и интегрирован, он становится доступен приложению через API сенсора, отмеченный номером 4.
Одно из главных преимуществ платформы Sensor and Location в Windows 7 состоит в том, что она позволяет различным приложениям получать данные от одного и того же сенсора в одно и то же время - это продемонстрировано номером 5. В предыдущих версиях Windows для взаимодействия с системой устройства использовали виртуальные COM-порты. Одной из проблем работы с виртуальными COM-портами было то, что они не масштабировались и не поддерживали работу с несколькими приложениями одновременно, поэтому наличие платформы, поддерживающей параллельную работу нескольких приложений, является огромным преимуществом.
Последний компонент платформы - это диалог "Location and Other Sensors", который является частью панели управления Windows. Этот диалог, отмеченный номером 6, позволяет пользователям управлять настройками разрешений и другими параметрами, которыми обладают сенсоры. Нижеприведенное изображение - это снимок этой панели управления. Как вы видите, в настоящее время у меня установлен два сенсора - Sensor Development Kit и виртуальный датчик освещенности, при этом оба они разрешены для использования.
Последней задачей перед тем, как перейти к API, является объяснение того, каким образом сенсоры представлены в платформе.
Как мы видели выше, сенсор может быть как физическим устройством, так и логическим (виртуальным) сенсором. Независимо от типа сенсора, все сенсоры имеют схожие свойства, представленные в нижеприведенном списке:
- Категория (Category) - набор сенсоров, определенным образом связанных между собой. Например, погодная станция могла бы включать температуру, атмосферное давление, скорость ветра и другие сенсоры, имеющие отношение к погоде.
- Тип (Type) - определение физических явлений, которые могут измеряться, например, скорость ветра или количество света.
- Свойства (Properties) - мета-данные, которые может содержать сенсор, например, дружелюбное для сенсора название. Они могут быть "только для чтения" или для "чтения-записи". Название сенсора и его серийный номер являются примеров свойств "только для чтения", а интервал опроса сенсора - пример свойства "чтения - записи".
- Типы данных (Data Types) - фактические типы данных, которые сенсор передает после измерения. Например, освещенность измеряется в люксах, которые сенсор передает в качестве переменной с плавающей точкой. Информация о местоположении включает широту и долготу, и при этом обе характеристики - переменные с плавающей точкой. Однако, как вы скоро узнаете, информация о местоположении может включать и адрес, являющийся набором из нескольких строк. Типы данных меняются от сенсора к сенсору и предполагается, что вы знаете, какие типы данных возвращает используемый тип сенсора.
- События (Events) - основной способ взаимодействия платформы Sensor and Location с вашим приложением, благодаря которому приложение знает, что приняты новые данные или состояние сенсора изменилось.
- Состояние (State) - определение возможных рабочих состояний для сенсоров, отвечающих на вопросы: "действительно ли сенсор готов к использованию" или "активировал ли пользователь сенсор?"
Вооруженные этой информацией, вы готовы начать работу с сенсорами и погрузиться в API. Но прежде вам придется прочитать следующую статью о платформе Sensor and Location.
Источник:
Перевод: evgeniya.zwezdina
По теме
- Федеративный поиск в Windows 7
- Программируем панель задач Windows 7: панель миниатюр
- Использование сенсоров в приложении: реализация в managed-коде (ч.1)
- Использование сенсоров в приложении: реализация в native-коде (ч.1)
- Доступны записи с Windows 7 PDC Boot Camp
- Fishbowl для Facebook с использованием новой панели задач Windows 7
- Программируем для Windows 7 в Visual Studio 2010
- Новая версия Windows API Code Pack
- Программирование служб Windows 7 с триггерами (ч.2)
- Программирование служб Windows 7 с триггерами (ч.1)