Когда вы поворачиваете телефон набок, экран переворачивается в соответствии с «альбомной» перспективой. Это очень удобно при фотосъемке, записи и просмотре видео. Это функция, которую мы воспринимаем как должное в наших смартфонах уже более десяти лет. Многие приложения также позволяют встряхнуть телефон в качестве ярлыка для некоторых команд, а в iOS даже есть встроенная функция «встряхнуть, чтобы отменить ввод».

Есть и более тонкие эффекты движения, такие как «перспективный зум / эффект движения», перемещение обоев вашего телефона в зависимости от угла, под которым вы его держите, и некоторые игры, в которых положение телефона используется как вход контроллера. Приложения компаса и карты могут точно знать, куда смотрит ваш телефон, и подключать его к большему миру.

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

Акселерометр - это устройство, которое измеряет ... как вы уже догадались, ускорение. Через какие-то датчики он отслеживает силы ускорения, вызванные гравитацией и движением, а также их направление и количественно определяет их. Движение, прикладываемое к датчику, позволяет устройству вычислять, насколько быстро оно движется, и обнаруживать вибрации. Изменения силы и направления силы тяжести позволяют устройству знать, где находится «вниз», и делать точные показания относительно угла, под которым оно удерживается в космосе.

Большинство современных мобильных устройств оснащены емкостными акселерометрами, созданными с использованием технологии изготовления микро-электрических механических систем (МЭМС). Эти микросхемы MEMS крошечные, дешевы в изготовлении и легко добавляются к устройствам, поэтому они являются наиболее распространенным типом акселерометров, используемых сегодня.

Емкостные акселерометры состоят из датчика, окруженного крошечными подвижными микроструктурами. Датчик отслеживает емкость между этими структурами. Когда к устройству прикладывается сила, микроструктуры перемещаются, и электрический заряд и потенциал между ними изменяются пропорционально. Датчик обнаруживает эти изменения емкости и преобразует их в напряжения, которые устройство использует для определения направления и степени приложенной силы.

Отслеживание движения и положения телефона - важная часть современных операционных систем для телефонов, и эти значения предназначены для легкого доступа к собственным приложениям. Классы iOS CMMotionManager и Android Sensor Service предоставляют мощные API для работы с невероятно точными данными движения.

Если вы создаете мобильные приложения с помощью React Native, встроенного способа доступа к этой информации нет, поэтому вам придется создавать отдельный собственный код с этими API на основе ОС телефона пользователя, что отнимает много времени и раздражает.

К счастью, люди из Expo, работающие над созданием замечательных оптимизированных управляемых универсальных рабочих процессов, создали инструмент, который можно использовать как с Andriod, так и с iOs - Expo Sensor. Вам даже не нужно специально работать с expo, вы можете просто потребовать его как зависимость в любом рабочем процессе реакции, который вы, возможно, уже используете!

Expo-sensor использует различные датчики окружающей среды, обычные для современных смартфонов, и превращает их в один простой в использовании универсальный API для вашего собственного приложения, которое будет работать со всеми датчиками телефонов прямо из коробки.

Акселерометр Expo-sensor позволяет считывать данные с акселерометра пользовательского устройства. Вы просто import { Accelerometer } from 'expo-sensors'; и читаете данные с Accelerometer.addListener(). Вы предоставляете addListener функцию обратного вызова, и ей предоставляется объект в качестве аргумента, содержащий значения x, y и z, которые измеряют текущее ускорение вдоль соответствующей оси. Слушатель фактически возвращает подписку на все непрерывные обновления, записанные на акселерометре, и встроенный .remove() метод, который можно использовать, когда пришло время отказаться от подписки. С помощью этих записей движения ваше приложение может реагировать на любое движение, которое вы хотите!

Вот отрывок, который я отредактировал из документации, демонстрирующий базовый вариант использования для настройки акселерометра:

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

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









Https://developer.android.com/guide/topics/sensors/sensors_overview