Какие бывают датчики в смартфонах. Что такое датчик холла в смартфоне

Современный смартфон - это мини компьютер, который уже давно стал персональным помощником человека в бытовых и бизнес делах. Чтобы смартфон или любой другой "умный" гаджет обладал столькими функциями, в нем размещено множество датчиков. В рамках этой статьи поговорим про датчик Холла в телефоне. Что это такое, читайте ниже.

Что это за датчик?

Датчик Холла - датчик определения положения который основан на эффекте Эдвина Холла. Используется в смартфоне в роли магнитометра, как основа для работы электронного компаса и не только. Его задача - фиксировать наличие магнитного поля и определять его изменение.

Эффект Холла был открыт еще 1879 году в тонких пластинках золота, но использовать его в технике смогли только через 75 лет, когда наладили производство полупроводниковых пленок с нужными для него свойствами. Ему нашли применение в автомобилях - он помогал делать измерения угла положения распредвала/коленвала.

В смартфоне используется упрощенный аналог устройства, определяющий только наличие магнитного поля без определения напряженности по осям. Реализация довольно проста: помещенный в магнитное поле проводник, по которому проходит электрических ток, способствует тому, что электроны отклоняются к одной из граней пластины. Электроны в этой части накапливают отрицательный заряд, на противоположной грани - положительный. Процесс продолжается до момента, пока образовавшееся электрическое поле не компенсирует магнитную составляющую силы Лоренца. Образованная разность потенциалов (которую именуют холловским напряжением) на краях пластины фиксируется датчиком Холла. В телефоне он реализован микросхемой, на выходе которой создается сигнал в двух состояниях:

  • единица (1 - есть сигнал);
  • ноль (0 - сигнала нет).

В зависимости от считанной информации с датчика смартфон выполняет запрограммированное действие.

Сейчас этот эффект применяется в разных технических реализациях. Кроме современных телефонов, повседневное применение нашлось:

  • в системах электронного зажигания ДВС;
  • в приводах дисководов;
  • двигателях кулеров компьютерной техники;
  • в электроизмерительных приборах для реализации бесконтактного измерения силы тока;
  • в ионных реактивных двигателях.

Для чего он нужен в телефоне?

Несколько лет назад, магнитометр с дюжиной возможностей можно было встретить только во флагманских смартфонах. Сейчас же, он установлен практически в каждый телефон. Смартфон, укомплектованный магнитометром (работающим по принципу датчика Холла) позволял измерять величину электромагнитной индукции различных приборов, управлять бесконтактно некоторыми функциями телефона (например листание фотографий с помощью жестов, без физического контакта) и т.д.

Хотя магнитометр и установлен во множество мобильных устройств, не в каждом его функции реализованы на полную.

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

  1. Цифровой компас. Используется навигационными программами для ускорения позиционирования и более точного определения направления движения. При помощи датчика, GPS поиск происходит быстрее.
  2. Взаимодействие с аксессуарами. Приобретя магнитный чехол для смартфона, датчик позволит смартфону включать и отключать дисплей в зависимости от удаления/приближения магнита на аксессуаре.

Эффект "выключения дисплея" можно заметить при закрытой крышке в раскладных телефонах.

Взаимодействие датчика и магнитного чехла

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

Как вы уже догадались, при закрытии чехла происходит обратное и экран блокируется.


В Некоторых чехлах сделаны окошка, для отображения информации при закрытой крышки чехла. Отображение информации и блокировка экрана происходит по тому же принципу. Датчик холла определяет положение смартфона и "решает", блокировать ли дисплей телефона, или оставить включенным.


Если вы переживаете, что магнит на флипе навредит смартфону, сбросте этот груз с плечь. Магнит не вредит смартфону! Чтобы в этом убедится, посмотрите видео.

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

Акселерометр

Как сообщают наши коллеги из phonearena , акселерометр является одним из наиболее распространённых датчиков. Согласно классическому определению, его задачей является расчет разности между истинным ускорением объекта и гравитационным ускорением.
О способах его применения вы наверняка наслышаны. Без акселерометра смартфоны вряд ли бы меняли портретную ориентацию на ландшафтную и обходились без нажатий пользователя во всевозможных симуляторах гонок.

Гироскоп

Гироскоп также предоставляет данные о положении устройства в пространстве, однако делает это со значительно большей точностью. Именно благодаря его помощи приложение Photo Sphere узнает, на сколько градусов был повёрнут смартфон, и в каком направлении это было проделано.

Магнитометр

Всё верно, магнитометр создан для определения магнитных полей. Не будь его внутри смартфона – приложению компаса вряд ли бы удалось понять, где находится северный полюс.

Данный сенсор является соединением инфракрасного диода и детектора инфракрасного излучения. Принцип его работы невероятно прост. Диод излучает невидимое для человеческого глаза излучение, а детектор пытается уловить его отражение. Смартфон блокирует дисплей именно тогда, когда луч попадает обратно.

Датчик света

Самостоятельно изменять яркость дисплея – то еще занятие, верно? То ли дело функция автояркости, которая меняет уровень яркости экрана в зависимости от окружающего излучения. Возможно это, как вы уже наверняка догадались, благодаря датчику света.
Стоит отметить, что некоторые представители линейки Galaxy от южнокорейского производителя Samsung используют обновлённый датчик света. Главной его особенностью является умение измерять долю белого, красного, зелёного и синего света для дальнейшей настройки картинки на экране.

Барометр

Нет, это не ошибка. Некоторые смартфоны действительно оснащены встроенным барометром для измерения уровня атмосферного давления. Среди первых девайсов с данной особенностью были XOOM и Samsung Galaxy Nexus.
Барометр также используется для измерения высоты над уровнем моря, что увеличивает точность работы GPS-навигатора.

Термометр

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

Датчик влажности воздуха

В этом, к слову, также преуспел четвёртый представитель линейки Galaxy S. Благодаря этому датчику четвёртая «Галактика» сообщала об уровне комфорта – соотношении температуры и влажности.

Педометр

Несмотря на довольно не очевидное название, задачей педометра является определение количества пройденных пользователем шагов. Да, совсем как в большинстве умных часов и фитнес-браслетов. Одним из первых устройств с настоящим педометром стал Nexus 5.

Сканер отпечатков пальцев

Об этом вы, конечно же, слышали. Благодаря сканеру отпечатков пальцев можно не только сократить время разблокировки смартфона, но и надёжно защитить свои данные. Среди наиболее популярных девайсов с пресловутым сканером – , HTC One Max и Samsung Galaxy S5.

Датчик сердцебиения

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

Датчик вредного излучения

Поверить довольно непросто, однако в этом мире действительно есть смартфон со встроенным датчиком вредного излучения. Прихвастнуть его наличием может японский Sharp Pantone 5. После запуска специального приложения последний демонстрирует окружающий уровень радиации. Неожиданно, не так ли?

В итоге получилось целых 12 датчиков. Какие из них чаще всего используете вы?

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

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

Акселерометр – один из основных датчиков смартфона; его также называют G-сенсором . Функция акселерометра заключается в измерении линейного ускорения смартфона по 3-м осям координат. Данные о перемещениях устройства аккумулируются и обрабатываются специальным контроллером – естественно, происходит это за считанные доли секунды. Размещает крохотный датчик примерно по центру корпуса смартфона. Самостоятельная замена акселерометра при поломке исключена – придётся идти в сервис.

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

Впервые акселерометр появился на телефоне Nokia 5500 . Этот датчик вызвал бурный восторг у сторонников активного образа жизни, потому как позволял пользоваться шагомером.

У акселерометра есть один существенный недостаток: он может фиксировать положение только тогда, когда происходит ускорение – то есть когда гаджет перемещается в пространстве. Определить положение аппарата, лежащего на столе, акселерометр не способен. Нивелировать этот недостаток призван датчик-«партнёр» под названием гироскоп . Такой датчик измеряет скорость углового вращения и обеспечивает более высокую точность данных по сравнению с акселерометром. У гироскопа, который прошёл процедуру калибровки, погрешность не будет составлять более 2 градусов.

Гироскоп активно используется в мобильных играх – в сочетании с акселерометром. Кроме того, этот датчик делает возможными оптическую стабилизацию камеры, создание панорамных снимков (гироскоп определяет, на сколько градусов был повёрнут смартфон), жестовое управление.

Первым смартфоном с гироскопом стал iPhone 4 . Сейчас гироскоп – далеко не экзотика; им (как и акселерометром) оснащается большинство современных девайсов.

Датчики приближения и освещения

Наличие датчика приближения (Proximity Sensor) в смартфоне – объективная необходимость. Если б такой сенсор отсутствовал, пользователю приходилось бы терпеть неудобства всякий раз во время разговора по телефону. Достаточно было бы легко коснуться щекой кнопки сброса – и разговор прекращён, нужно вызывать абонента снова. Функция датчика приближения очевидна: он блокирует экран гаджета, как только пользователь подносит устройство к уху . Этот сенсор позволяет владельцу смартфона не только общаться с комфортом, но и экономить заряд аккумулятора.

Датчик приближения «прячется» под фронтальным стеклом мобильного устройства. Состоит он из 2-х элементов: диода и детектора . Диод отправляет инфракрасный импульс (невидимый глазу человека), а детектор пытается поймать его отражение. Если детектору это удаётся, экран «затемняется». Сенсор способен регистрировать всего лишь 2 состояния: «посторонний предмет ближе 5 см » и «посторонний предмет дальше 5 см ».

Потрясающих результатов в экспериментах с датчиком приближения добилась компания Samsung . На основе этого сенсора корейский производитель создал датчик жестов , благодаря которому стало возможным бесконтактное управление смартфоном. Первый датчик жестов появился на Samsung Galaxy S3 – в 2012 году это стало настоящим прорывом.

Датчик освещённости (Light Sensor) не зря рассматривается в паре с датчиком приближения – как правило, эти два сенсора располагаются в непосредственной близости по отношению друг к другу. Датчик света – самый «старый» из всех датчиков, которые используются в мобильной электронике. Также он и самый простой – с конструкционной точки зрения этот сенсор представляет собой полупроводник, чувствительный к потоку фотонов. Функция у датчика освещения не такая ответственная, как у датчика приближения: Light Sensor всего лишь регулирует яркость дисплея в соответствии с окружающими условиями.

В некоторых моделях Samsung (например, Galaxy Note 3 и Galaxy S5) установлены RGB-датчики . Сенсор RGB способен не только менять яркость дисплея, но и корректировать доли красного, зелёного, синего и белого цветов изображения на экране.

Разработчики Samsung Galaxy Note 4 дошли до абсурда: они научили датчик фаблета измерять освещённость в невидимом для человека диапазоне – ультрафиолетовом. Благодаря такой любопытной новации пользователь может, например, выбрать оптимальное время для загара.

Барометр и температурный датчик

Человеку с высокой чувствительностью к резким перепадам атмосферного давления просто необходимо иметь в смартфоне приложение-барометр. В Google Play, например, одна из подобных программ так и называется — «Барометр ».

Датчик-барометр способен не только предупреждать пользователя о приближении циклона – антициклона; это даже не основная его функция. Сенсор увеличивает эффективность и точность работы GPS-навигатора гаджета. Спутники GPS показывают, в какой точке земного шара находится искомое место – но не на какой высоте . Этот недостаток их работы и устраняется барометром. Датчик давления может помочь найти, скажем, офис определённой компании в многоэтажном здании бизнес-центра.

Температурные датчики, в отличие от барометров, присутствуют в большей части смартфонов – однако температуру на улице с их помощью не измеришь. Речь идёт о внутренних термометрах , задача которых – следить за тем, чтобы гаджет не перегревался. В одном смартфоне может быть уйма подобных сенсоров: первый контролирует графический ускоритель, второй – ядра процессора и так далее. Если возникает перегрев, внутренний термометр автоматически прекращает зарядку или снижает выходной ампераж.

Внешние термометры на гаджетах тоже встречаются, но они пока «в диковинку». Первым смартфоном со встроенным термометром стал Samsung Galaxy S4. Датчик оказался необходим для улучшения работы предустановленного приложения S Health.

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

Для нужд приложения S Health на Samsung Galaxy S4 был установлен ещё один любопытный датчик – гигрометр . Этот сенсор измеряет уровень влажности, предоставляя пользователю возможность эффективно управлять микроклиматом в помещении.

Какие датчики позволяют следить за здоровьем?

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

Педометр (шагомер)

Функция педометра – считать расстояние, преодолённое пользователем, на основании количества совершённых шагов. Эту функцию способен выполнять и акселерометр, однако точность его измерений оставляет желать лучшего. Шагомер как отдельный датчик впервые появился на смартфоне Nexus 5.

Пульсометр (датчик сердцебиения)

Встроенный пульсометр – одна из инноваций Samsung Galaxy S5. Разработчики Samsung посчитали, что именно датчика пульса не хватает программе S Health для того, чтоб она могла считаться полноценным личным тренером. Среди пользователей пульсометр Samsung пока популярным не стал, потому как достаточно привередлив. Чтобы обеспечить точные данные, сенсору необходим тесный контакт с той частью тела пользователя, где кровеносные сосуды находятся неглубоко – например, с подушечкой пальца. Совершать пробежку, удерживая палец на датчике – удовольствие небольшое.

Датчик оксигенации крови (датчик SpO2)

Этот сенсор определяет степень насыщения крови кислородом. Он присутствует только на 2 смартфонах фирмы Samsung (Galaxy Note 4 и Note Edge) и «заточен» под приложение S Health. На девайсах датчик SpО2 совмещён со вспышкой для камеры и пульсометром. Пользователю достаточно активировать соответствующее приложение и приложить палец к вспышке на 30-40 секунд – после чего он увидит результат замера в процентах на экране гаджета.

Дозиметр

Таким датчиком оснащён выпущенный в Японии смартфон Sharp Pantone 5. Функция дозиметра – измерение радиации. Для японцев эта функция важна, потому как после аварии на АЭС в Фукусиме в 2011 году они вынуждены более внимательно следить за радиационным фоном. На европейском рынке смартфонов с дозиметрами нет.

Сканеры отпечатков пальцев и сетчатки глаза

Пользователи, которые считают, будто первый дактилоскопический датчик появился на iPhone 5S, сильно заблуждаются. Телефоны, способные сканировать отпечатки пальцы, выпускались и раньше. Ещё в 2004 году продавалась «раскладушка » Pantech GI 100, оснащённая подобной технологией. 7 лет спустя Motorola представила модель Atrix 4g c дактилоскопическим датчиком. В обоих случаях пользователи отнеслись к технологии довольно прохладно.

Когда же в 2013 году Apple встроила сканер отпечатков пальцев в кнопку «Home» Айфона 5S, «яблочной» компании рукоплескали как эксперты, так и рядовые потребители. Apple больше повезло с эпохой: в «нулевых» вопрос о безопасности безналичных платежей не стоял так остро.

Сканер отпечатков пальцев избавляет пользователя от необходимости применять цифровые пароли для защиты данных, хранящихся на гаджете. Пароли легко взломать; обмануть дактилоскопический датчик сложнее в разы (хотя тоже возможно).

Сейчас устанавливать в смартфоны сканеры отпечатков пальцев стало модно. Такая технология используется не только многолетними лидерами рынка – Samsung, Apple, HTC – но и перспективными китайскими производителями, вроде Xiaomi и Meizu .

Сканер сетчатки глаза обеспечивает даже более высокую степень безопасности, чем дактилоскопический датчик – фактически это следующий уровень биометрической защиты. Сторонники технологии утверждают, что достать отпечаток пальца – задача выполнимая (ведь человек их повсюду оставляет). Получить же копию сетчатки нельзя никак.

Изображение: iphonefirmware.com

Идея оснастить смартфон сканером сетчатки тоже не нова. Ещё в 2015 году азиатские производители (Vivo , Fujitsu) экспериментировали с этим датчиком, в 2016 году тренд поддержала малоизвестная компания из Поднебесной Homtom . Однако обсуждаемой эта технология стала только после того, как к ней обратилась компания Samsung – в Galaxy Note 7 установили сканер радужной оболочки глаза .

Датчик в Note отличен от тех, которые стоят в смартфонах китайских компаний. Идею Samsung вполне можно назвать революционной потому, что на Note 7 есть камера, которая ответственна только за сканирование глаз . «Китайцы» же считывают информацию с сетчатки селфи-камерой.

Метод, который используется гаджетами из Поднебесной, неэффективен. Дело в том, что глаз необходимо сканировать инфракрасным (ИК) лучом, но на фронтальных камерах ИК-спектр, как правило, фильтруется – ведь из-за него портятся селфи. Выходит, что Samsung – пока единственный производитель смартфонов, который не заставляет пользователей делать выбор между качественными «себяшками» и безопасностью персональных данных.

Заключение

Всякий современный смартфон оснащён минимум 5-ю датчиками. В моделях-флагманах количество сенсоров доходит до «чёртовой дюжины», и производители вовсе не собираются на этом останавливаться. Специалисты IBM прогнозируют, что уже в 2017 году гаджеты получат обоняние, благодаря которому смогут предупреждать пользователя, например, о высокой концентрации чадного газа и о присутствии в воздухе вируса гриппа. С нетерпением ждём инноваций – ведь продолжение следует?

Множество изделий современной электроники оснащено датчиками, распознающими приближение объекта, к примеру, пальца, к клавиатуре или уха человека к телефону. Эта технология активно используется в разного рода, что позволяет устранить механическую коммутацию устройств, а также продлить срок их службы. И у многих вполне может возникнуть вопрос: датчик приближения в телефоне - что это и как он работает? Далее будет рассмотрено данное приспособление с точки зрения реализации по емкостной технологии.

Распознавание приближения

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

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

Особенности использования функции в разной технике

В бытовой автоматике функция распознавания приближения тоже получила весьма широкое распространение. Бесконтактные датчики используют для включения открывания кранов водопровода, когда в поле их действия находится рука человека; дисплеи холодильников и микроволновых печей будут неактивны, пока к ним не приблизится рука пользователя. Снабжены этой функцией и новые системы автоматизации дома. используемые для управления бытовой техникой и освещением, настраиваются так, чтобы служить цифровыми фоторамками. Но как только к ним приближается кто-то из людей, сразу появляются Достаточно интересной технологией является датчик приближения в телефоне. Что это такое, поможет понять описание метода, с помощью которого происходит распознавание.

Методы распознавания приближения

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

Обнаружение изменения емкости

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

Метод последовательного приближения

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

Достоинства и недостатки технологии распознавания

Датчик приближения Android, как и другие, обладает определенными особенностями. К числу преимуществ в данном случае можно отнести следующие:

Довольно большая зона обнаружения;

Высокая степень чувствительности;

Относительная доступность в плане цены, ведь производство датчиков осуществляется из довольно дешевых компонентов - меди, пленки оксидов олова, индия и печатной краски, внешнего проволочного датчика;

Малый размер;

Универсальность конструкции;

Температурная стабильность;

Возможность функционирования с применением различных непроводящих покрытий, к примеру, стекол разной толщины;

Долговечность и высокая надежность.

Имеются у данного метода и определенные недостатки:

Чувствительный элемент должен быть проводящим, тогда он сможет обнаружить приближение; однако руку, к примеру, в резиновой перчатке, он может и не обнаружить;

Метод емкостного распознавания работает так, что когда в диапазоне его работы имеются металлические объекты, диапазон уменьшается.

iPhone 4

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

Калибровка

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

В последних версиях Android 4 функция калибровки расположена непосредственно в меню. Для этого требуется войти в настройки, отыскать экран, а потом выбрать пункт Proximity Sensor Calibration. После закрытия датчика рукой необходимо в появившемся окне нажать ОК. Иногда калибровка допускается и без закрытия сенсора.

Современный смартфон уже сложно назвать просто компьютером, ведь он умеет гораздо больше своего стационарного предка: и температуру может измерить, и высоту над уровнем моря подсказать, и влажность воздуха определить, а если вдруг забудешь свою ориентацию в пространстве или силу тяжести потеряешь - все исправит. А помогают ему в этом, как ты уже, наверное, догадался, датчики aka сенсоры. Сегодня мы познакомимся с ними поближе, а заодно и проверим, действительно ли мы находимся на Земле. 😉

Датчики всякие нужны!

Для работы с аппаратными датчиками, доступными в устройствах под управлением Android, применяется класс SensorManager , ссылку на который можно получить с помощью стандартного метода getSystemService :

SensorManager sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);

Чтобы начать работать с датчиком, нужно определить его тип. Удобнее всего это сделать с помощью класса Sensor , так как в нем уже определены все типы сенсоров в виде констант. Рассмотрим их подробнее:

  • Sensor.TYPE_ACCELEROMETER - трехосевой акселерометр, возвращающий ускорение по трем осям (в метрах в секунду в квадрате). Связанная система координат представлена на рис. 1.
  • Sensor.TYPE_LIGHT - датчик освещенности, возвращающий значение в люксах, обычно используется для динамического изменения яркости экрана. Также для удобства степень освещенности можно получить в виде характеристик - «темно», «облачно», «солнечно» (к этому мы еще вернемся).
  • Sensor.TYPE_AMBIENT_TEMPERATURE - термометр, возвращает температуру окружающей среды в градусах Цельсия.
  • Sensor.TYPE_PROXIMITY - датчик приближенности, который сигнализирует о расстоянии между устройством и пользователем (в сантиметрах). Когда в момент разговора гаснет экран - срабатывает именно этот датчик. На некоторых девайсах возвращается только два значения: «далеко» и «близко».
  • Sensor.TYPE_GYROSCOPE - трехосевой гироскоп, возвращающий скорость вращения устройства по трем осям (радиан в секунду).
  • Sensor.TYPE_MAGNETIC_FIELD - магнитометр, определяющий показания магнитного поля в микротеслах (мкТл) по трем осям (имеется в смартфонах с аппаратным компасом).
  • Sensor.TYPE_PRESSURE - датчик атмосферного давления (по-простому - барометр), который возвращает текущее атмосферное давление в миллибарах (мбар). Если немного вспомнить физику, то, используя значение этого датчика, можно легко вычислить высоту (а ежели вспоминать ну никак не хочется, можно воспользоваться готовым методом getAltitude из объекта SensorManager ).
  • Sensor.TYPE_RELATIVE_HUMIDITY - датчик относительной влажности в процентах. Кстати, совместное применение датчиков относительной влажности и давления позволяет предсказывать погоду - конечно, если выйти на улицу. 😉
  • Sensor.TYPE_STEP_COUNTER (с API 19) - счетчик шагов с момента включения устройства (обнуляется только после перезагрузки).
  • Sensor.TYPE_MOTION_DETECT (с API 24) - детектор движения смартфона. Если устройство находится в движении от пяти до десяти секунд, возвращает единицу (по всей видимости, задел для аппаратной функции «антивор»).
  • Sensor.TYPE_HEART_BEAT (с API 24) - детектор биения сердца.
  • Sensor.TYPE_HEART_RATE (с API 20) - датчик, возвращающий пульс (ударов в минуту). Этот датчик примечателен тем, что требует явного разрешения android.permission.BODY_SENSORS в манифесте.

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

Например, датчик Sensor.TYPE_GRAVITY пропускает показания акселерометра через низкочастотный фильтр и возвращает текущие направление и величину силы тяжести по трем осям, а Sensor.TYPE_LINEAR_ACCELERATION использует уже высокочастотный фильтр и получает показатели ускорения по трем осям (без учета силы тяжести).

При разработке приложения, эксплуатирующего показания сенсоров, вовсе не обязательно бегать по улице или прыгать в воду с высокой скалы, так как эмулятор, входящий в поставку Android SDK, умеет передавать приложению любые отладочные значения (рис. 2–3).


Ищем датчики

Чтобы узнать, какие сенсоры есть в смартфоне, следует использовать метод getSensorList объекта SensorManager :

List sensors = sensorManager.getSensorList(Sensor.TYPE_ALL);

Полученный список будет включать все поддерживаемые датчики: как аппаратные, так и виртуальные (рис. 4). Более того, некоторые из них будут иметь различные независимые реализации, отличающиеся количеством потребляемой энергии, задержкой, рабочим диапазоном и точностью.

Для получения списка всех доступных датчиков конкретного типа необходимо указать соответствующую константу. Например, код

List pressureList = sensorManager.getSensorList(Sensor.TYPE_PRESSURE);

вернет все доступные барометрические датчики. Причем аппаратные реализации окажутся в начале списка, а виртуальные - в конце (правило действует для всех типов датчиков).


Чтобы получить реализацию датчика по умолчанию (такие датчики хорошо подходят для стандартных задач и сбалансированы в плане энергопотребления), используется метод getDefaultSensor :

Sensor defPressureSensor = sensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE);

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

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

Снимаем показания

Чтобы получать события, генерируемые датчиком, необходимо зарегистрировать реализацию интерфейса SensorEventListener с помощью того же SensorManager . Звучит сложновато, но на практике реализуется одной строчкой:

Sensor defPressureSensor = sensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE); sensorManager.registerListener(workingSensorEventListener, defPressureSensor, SensorManager.SENSOR_DELAY_NORMAL);

Здесь мы полученный ранее барометр по умолчанию регистрируем с помощью метода registerListener , передавая в качестве второго параметра сенсор, а в качестве третьего - частоту обновления данных.

В классе SensorManager определены четыре статические константы, определяющие частоту обновления:

  • SensorManager.SENSOR_DELAY_FASTEST - максимальная частота обновления данных;
  • SensorManager.SENSOR_DELAY_GAME - частота, обычно используемая в играх, поддерживающих гироскоп;
  • SensorManager.SENSOR_DELAY_NORMAL - частота обновления по умолчанию;
  • SensorManager.SENSOR_DELAY_UI - частота, подходящая для обновления пользовательского интерфейса.

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

Оставшийся нерассмотренным первый параметр представляет собой реализацию интерфейса SensorEventListener , где мы наконец-то получим конкретные цифры:

Private final SensorEventListener workingSensorEventListener = new SensorEventListener() { public void onAccuracyChanged(Sensor sensor, int accuracy) { } public void onSensorChanged(SensorEvent event) { // Получаем атмосферное давление в миллибарах double pressure = event.values; } };

В метод onSensorChanged передается объект SensorEvent , описывающий все события, связанные с датчиком: event.sensor - ссылка на датчик, event.accuracy - точность значения датчика (см. ниже), event.timestamp - время возникновения события в наносекундах и, самое главное, массив значений event.values . Для датчика давления передается только один элемент, тогда как, например, для акселерометра предусмотрено сразу три элемента для каждой из осей. В следующих разделах мы рассмотрим примеры работы с различными датчиками.

Метод onAccuracyChanged позволяет отслеживать изменение точности передаваемых значений, определяемой одной из констант: SensorManager.SENSOR_STATUS_ACCURACY_LOW - низкая точность, SensorManager.SENSOR_STATUS_ACCURACY_MEDIUM - средняя точность, возможна калибровка, SensorManager.SENSOR_STATUS_ACCURACY_HIGH - высокая точность, SensorManager.SENSOR_STATUS_UNRELIABLE - данные недостоверны, нужна калибровка.

После того как отпадает необходимость работы с датчиком, следует отменить регистрацию:

SensorManager.unregisterListener(workingSensorEventListener);

Меряем давление и высоту

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

Продолжение доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все материалы на сайте

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов.

  • Сергей Савенков

    какой то “куцый” обзор… как будто спешили куда то