В наши дни каждое смарт-устройство поставляется с несколькими встроенными датчиками, которые мы можем использовать, написав специальный собственный код. Разве это не сложно, когда вы хотите написать разный нативный код для разных устройств, поскольку интеграция датчиков Apple может отличаться от Android, а Android может отличаться от ноутбуков. Вот вам и использование Generic Sensor API для Интернета, которое абстрагирует внутреннюю работу и дает нам API для работы с датчиками, присутствующими в устройствах. Используя это, вы можете использовать датчики всех устройств, которые поддерживаются браузером (проверьте сайт caniuse, для которого браузеры поддерживают этот API). Это наиболее полезно, когда вы хотите использовать определенные датчики и не хотите усложнять реализацию написание разных нативных кодов для разных платформ.

В этом разделе я расскажу о нескольких датчиках, которые поддерживаются Generic Sensor API и их реализации. Прежде чем непосредственно перейти к знанию того, как использовать определенный датчик, я рассмотрю общий обзор или рабочий процесс использования датчика.

Термин «датчик устройства» относится к основному экземпляру физического датчика устройства. Каждое показание датчика состоит из значений физической величины, измеренной датчиком устройства в момент времени tn, которая называется временной меткой показания. Вот интерфейс датчика (обозначаются доступные методы работы с датчиком и его данными).

Таким образом, существует параметр частоты, который должен быть установлен пользователем перед инициализацией датчика. Несколько других методов, таких как onreading, onacivate, onerror, используются для доступа к данным и обработки ошибок. Пройдите сенсор-интерфейс, если хотите узнать о нем больше.

Некоторые из доступных универсальных датчиков включают в себя:

  • окружающий свет
  • акселерометр
  • линейное ускорение
  • сила тяжести
  • гироскоп
  • магнитометр
  • некалиброванный магнитометр
  • абсолютная ориентация
  • относительная ориентация
  • геолокация
  • близость

Давайте рассмотрим использование датчика акселерометра для этой демонстрации (вместо акселерометра можно использовать любой датчик).

Проверьте, поддерживает ли ваш браузер Generic API:

Здесь мы не будем беспокоиться, если интерфейс Акселерометра не поддерживается браузером. Однако в этом случае мы можем использовать полифилл. Используя pollyfill, вы можете импортировать только релевантные датчики и работать с ними. Подробнее о работе с полифиллом читайте в статье sensor-polyfill.

Разрешения

В настоящее время нет никакого API для запроса разрешения для универсальных датчиков, таких как акселерометр. Если вы хотите запросить другие датчики, такие как геолокация, есть способ запросить разрешение:

Список всех ключевых слов, которые можно использовать с разрешением API, находится здесь в разделе Разрешения API.

Чтение данных

Вы можете изменить частоту по своему желанию, но вы не гарантируете одинаковую частоту, так как все датчики устройства не поддерживают заданную частоту.

Итак, вот и конец. Теперь вы можете читать данные с универсального датчика в Интернете. Ниже приведен полный код, объединяющий все три вышеуказанных метода, и вы можете обратиться к универсальному датчику, чтобы узнать о нем больше.

Для активной реализации вы можете посетить этот сайт: accelerometer-demo.netlify.app
Код этой реализации находится по адресу: github.com/veerresh/accelerometer-demo

Если вам понравился пост, подумайте над тем, чтобы ответить на статью. ❤

Первоначально опубликовано на https://blog.veereshr.me.