Датчики
Датчики позволяют приложению знать связь между устройством и физическим миром вокруг него. Датчики могут указывать приложению направление, ориентацию и перемещение устройства. Эти датчики могут помочь сделать игру, дополненное приложение реальности или служебные приложения более полезными и интерактивными, предоставляя уникальную форму ввода, например использование движения устройства для упорядочивания символов на экране или имитации в кабине и использования устройства в качестве рулевого колеса.
В качестве общего правила определите, будет ли ваше приложение зависеть исключительно от датчиков или если датчики просто предлагают дополнительный механизм управления. Например, игра вождения с помощью устройства в качестве виртуального рулевого колеса может управляться с помощью графического интерфейса графического интерфейса на экране, таким образом, приложение работает независимо от датчиков, доступных в системе. С другой стороны, мраморная наклонная лабиринта может быть закодирована только для работы с системами с соответствующими датчиками. Необходимо сделать стратегический выбор того, следует ли полностью полагаться на датчики. Обратите внимание, что схема управления мышью и сенсорным элементом управления торгует иммерсией для большего контроля.
Раздел | Описание |
---|---|
Датчики калибровки | Датчики на устройстве на основе магнитометра - компаса, инклинометра и датчика ориентации - могут потребоваться калибровки из-за экологических факторов. Перечисление MagnetometerAccuracy может помочь определить ход действий, когда устройство нуждается в калибровке. |
Положение датчиков в пространстве | Данные датчика из классов OrientationSensor определяются их ссылочными осями. Эти оси определяются альбомной ориентацией устройства и поворачиваются с устройством по мере того, как пользователь превращает его. |
Использование акселерометра | Узнайте, как использовать акселерометр для реагирования на перемещение пользователей. |
Использование компаса | Узнайте, как использовать компас для определения текущего заголовка. |
Использование гирометра | Узнайте, как использовать гирометр для обнаружения изменений в движении пользователей. |
Использование инклинометра | Узнайте, как использовать инклинометр для определения шага, рулона и рывка. |
Использование датчика освещения | Узнайте, как использовать датчик внешнего света для обнаружения изменений в освещении. |
Использование датчика ориентации | Узнайте, как использовать датчики ориентации для определения ориентации устройства. |
Пакетная обработка датчиков
Некоторые датчики поддерживают концепцию пакетной обработки. Это зависит от доступных отдельных датчиков. Когда датчик реализует пакетную обработку, он собирает несколько точек данных за указанный интервал времени, а затем передает все эти данные одновременно. Это отличается от нормального поведения, когда датчик сообщает о своих результатах, как только он выполняет чтение. Рассмотрим следующую схему, в которой показано, как собираются и затем передаются данные, сначала с обычной доставкой, а затем пакетной доставкой.
Основным преимуществом пакетирования датчиков является продление срока работы батареи. Если данные не отправляются немедленно, что экономит мощность процессора и предотвращает немедленное обработку данных. Части системы могут спать до тех пор, пока они не потребуются, что приводит к значительной экономии энергии.
Вы можете повлиять на частоту отправки пакетов датчиком, изменив задержку. Например, датчик Accelerometer имеет свойство ReportLatency. Если это свойство задано для приложения, датчик будет отправлять данные после указанного периода времени. Вы можете контролировать, сколько данных накапливается по заданной задержке, задав свойство ReportInterval .
Существует несколько предостережений, которые следует учитывать при настройке задержки. Первое предупреждение заключается в том, что каждый датчик имеет MaxBatchSize , который он может поддерживать на основе самого датчика. Это количество событий, которые датчик может кэшировать, прежде чем он будет вынужден отправлять их. При умножении MaxBatchSize на ReportInterval определяется максимальное значение ReportLatency. Если указать более высокое значение, то будет использоваться максимальная задержка, чтобы не потерять данные. Кроме того, несколько приложений могут задать нужную задержку. Для удовлетворения потребностей всех приложений будет использоваться самый короткий период задержки. Из-за этих фактов задержка, заданная в приложении, может не соответствовать наблюдаемой задержке.
Если датчик использует пакетную отчетность, вызов GetCurrentReading очистит текущий пакет данных и начнет новый период задержки.
Accelerometer
Датчик Accelerometer измеряет значения G-force вдоль осей X, Y и Z устройства и отлично подходит для простых приложений на основе движения. Обратите внимание, что значения силы G включают ускорение из-за тяжести. Если устройство имеет SimpleOrientation FaceUp в таблице, то акселерометр считывает -1 Г на оси Z. Таким образом, акселерометры не обязательно измеряют просто ускорение координат — скорость изменения скорости. При использовании акселерометра обязательно различает гравитационный вектор от гравитации и вектор линейного ускорения от движения. Обратите внимание, что гравитационный вектор должен нормализоваться до 1 для стационарного устройства.
На следующих схемах показано:
- V1 = Vector 1 = Force из-за тяжести
- V2 = Vector 2 = -Z оси шасси устройства (указывает на задней части экрана)
- Yi = угол наклона (наклон) = угол между оси –Z корпуса устройства и вектора тяжести
Приложения, которые могут использовать датчик акселерометра, включают игру, где мрамор на экране свернут в направлении наклона устройства (гравитационный вектор). Этот тип функциональных возможностей тесно отражает то, что в инклинометре и может быть также сделано с этим датчиком с помощью сочетания шага и рулона. Использование вектора гравитации акселерометра упрощает это несколько, предоставляя легко математически управляемый вектор для наклона устройства. Еще одним примером будет приложение, которое делает звук трещины хлыста, когда пользователь щелкает устройство через воздух (вектор линейного ускорения).
Пример реализации см. в примере акселерометра.
Датчик активности
Датчик действия определяет текущее состояние устройства, подключенного к датчику. Этот датчик часто используется в фитнес-приложениях для отслеживания того, когда пользователь, перевозящий устройство работает или ходить. Список возможных действий, обнаруженных этим API датчика, см. в разделе ActivityType.
Пример реализации см. в примере датчика активности.
Высотомер
Датчик Altimeter возвращает значение, указывающее высоту датчика. Это позволяет отслеживать изменение высоты с точки зрения метров от уровня моря. Одним из примеров приложения, которое может использовать это, будет запущенное приложение, которое отслеживает изменения высоты во время выполнения, чтобы вычислить калории, сгоревшие. В этом случае эти данные датчика можно объединить с датчиком активности , чтобы обеспечить более точные сведения об отслеживании.
Пример реализации см. в примере алтимера.
Барометр
Датчик Барометра позволяет приложению получать показания барометрики. Приложение погоды может использовать эту информацию для обеспечения текущего атмосферного давления. Это можно использовать для предоставления более подробной информации и прогнозирования потенциальных изменений погоды.
Пример реализации см. в примере барометра.
Compass
Датчик Компаса возвращает 2D-заголовок относительно магнитного севера на основе горизонтальной плоскости земли. Датчик компаса не должен использоваться при определении конкретной ориентации устройства или для представления ничего в трехмерном пространстве. Географические функции могут вызвать естественное снижение в заголовке, поэтому некоторые системы поддерживают как ЗаголовокMagneticNorth, так и ЗаголовокTrueNorth. Подумайте о том, какой из ваших приложений предпочитает, но помните, что не все системы сообщают об истинном северном значении. Датчики гирометра и магнитометра (устройство, измеряющее величину магнитной силы) объединяют свои данные для создания заголовка компаса, который имеет чистый эффект стабилизации данных (сила магнитного поля очень неустойчива из-за компонентов электрической системы).
Приложения, которые хотят отобразить компас розы или навигации по карте, обычно используют датчик компаса.
Пример реализации см. в примере компаса.
Gyrometer
Датчик Gyrometer измеряет угловые скорости вдоль осей X, Y и Z. Это очень полезно в простых приложениях на основе движения, которые не беспокоятся о ориентации устройства, но заботятся о том, как устройство поворачивается на разных скоростях. Гирометры могут страдать от шума в данных или постоянной предвзятости вдоль одной или нескольких осей. Необходимо запросить акселерометр, чтобы проверить, перемещается ли устройство, чтобы определить, страдает ли гирометр от предвзятости, а затем компенсировать соответствующим образом в приложении.
Пример приложения, которое может использовать датчик гирометра, — это игра, которая крутит колесо рулетки на основе быстрого поворота рывка устройства.
Пример реализации см. в примере гирометра.
Inclinometer
Датчик Inclinometer указывает значения рывка, шага и свертки устройства и лучше всего работают с приложениями, которые заботятся о расположении устройства в пространстве. Шаг и свертка являются производными, принимая вектор гравитации акселерометра и интегрируя данные из гирометра. Yaw устанавливается из магнитометра и гирометра (аналогично заголовку компаса) данных. Inclinometers предлагает расширенные данные ориентации в легкой и понятной форме. Используйте инклинометры, если требуется ориентация устройства, но не требуется управлять данными датчика.
Приложения, изменяющие свое представление в соответствии с ориентацией устройства, могут использовать датчик инклинометра. Кроме того, приложение, отображающее самолет, соответствующий язю, шагу и рулону устройства, также будет использовать показания инклинометра.
Пример реализации см. в примере https://github.com/Microsoft/Windows-universal-samples/tree/main/Samples/Inclinometerинклинометра.
Датчик света
Датчик освещения может определять внешний свет, окружающий датчик. Это позволяет приложению определить, когда изменился световый параметр, окружающий устройство. Например, пользователь с сланцевым устройством может пройти от помещений к открытому воздуху в солнечный день. Интеллектуальное приложение может использовать это значение для повышения контрастности фона и отрисовки шрифта. Это сделает содержимое по-прежнему читаемым в более ярком, открытом режиме.
Пример реализации см. в примере датчика света.
Датчик ориентации
Ориентация устройства выражается как в кватернионе, так и в матрице поворота. OrientationSensor предлагает высокую степень точности в определении того, как устройство расположено в пространстве относительно абсолютного заголовка. Данные OrientationSensor являются производными от акселерометра, гирометра и магнитометра. Таким образом, датчики инклинометра и компаса могут быть производными от значений кватерниона. Кватернионы и матрицы поворота хорошо поддаются расширенной математической манипуляции и часто используются в графическом программировании. Приложения, использующие сложные манипуляции, должны использовать датчик ориентации, так как многие преобразования основаны на кватернионах и матрицах поворота.
Датчик ориентации часто используется в расширенных приложениях дополненной реальности, которые красит наложение на окружающую среду на основе направления назад устройства указывает.
Пример реализации см. в примере датчика ориентации.
Шагомер
Датчик Pedometer отслеживает количество шагов, выполненных пользователем с подключенным устройством. Датчик настроен для отслеживания количества шагов за заданный период времени. Несколько фитнес-приложений, как следить за количеством шагов, принятых для того, чтобы помочь пользователю установить и достичь различных целей. Затем эти сведения можно собирать и хранить для отображения хода выполнения с течением времени.
Пример нарушения см. в примере педометра.
Датчик близкого взаимодействия
Датчик близкого взаимодействия можно использовать для указания того, обнаружены ли объекты датчиком. Помимо определения того, находится ли объект в пределах диапазона устройства, датчик близкого взаимодействия также может определить расстояние от обнаруженного объекта. Один из примеров, где это можно использовать, — это приложение, которое хочет выйти из состояния сна, когда пользователь входит в указанный диапазон. Устройство может находиться в состоянии спящего режима с низким питанием, пока датчик близкого взаимодействия не обнаружит объект, а затем может ввести более активное состояние.
Пример реализации см. в примере датчика близкого взаимодействия.
Простая ориентация
SimpleOrientationSensor обнаруживает текущую квадрантную ориентацию указанного устройства или лицом вверх или вниз. Он имеет шесть возможных состояний SimpleOrientation (NotRotated, Rotated90, Rotated180, Rotated270, FaceUp, FaceDown).
Приложение чтения, которое изменяет его отображение на основе устройства, удерживаемого параллельно или перпендикулярно к земле, будет использовать значения из SimpleOrientationSensor, чтобы определить, как проводится устройство.
Пример реализации см. в примере простого датчика ориентации.