Датчики приближения и освещения акселерометр. Датчик приближения в телефоне - что это? Мобильные телефоны

Современный смартфон уже сложно назвать просто компьютером, ведь он умеет гораздо больше своего стационарного предка: и температуру может измерить, и высоту над уровнем моря подсказать, и влажность воздуха определить, а если вдруг забудешь свою ориентацию в пространстве или силу тяжести потеряешь - все исправит. А помогают ему в этом, как ты уже, наверное, догадался, датчики 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. Оформи подписку на «Хакер», чтобы читать все материалы на сайте

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

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

Этот сенсор сам состоит из маленьких датчиков: микроскопических кристаллических структур, под влиянием сил ускорения переходящих в напряжённое состояние. Напряжение передаётся акселерометру, который интерпретирует его в данные о скорости и направлении движения.

Гироскоп

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

В смартфонах используются микроэлектромеханические системы, а первые подобные приборы, сохраняющие ось при поворотах, появились ещё в начале XIX века.

Магнитометр

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

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

Магнитометр действует в тандеме с акселерометром и GPS для определения географического положения и навигации.

GPS

Где бы мы были без технологии GPS (Global Positioning System)? Смартфон соединяется с несколькими спутниками и высчитывает своё положение на основании углов пересечения. Бывает, что спутники недоступны: например, при большой облачности или внутри помещений.

GPS не использует данные мобильной сети, поэтому геолокация работает и вне зоны покрытия сотовой связи: даже если саму карту загрузить не получится, точка геолокации всё равно будет.

При этом функция GPS тратит много заряда аккумулятора, поэтому лучше её отключать вне надобности.

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

Барометр

Многие смартфоны, в том числе iPhone, имеют этот сенсор, измеряющий атмосферное давление. Он нужен для регистрации изменения погоды и определения высоты над уровнем моря.

Бесконтактный выключатель

Этот сенсор обычно находится около динамика в верхней части смартфона и состоит из инфракрасного диода и датчика света. Он использует невидимый человеку луч, чтобы определить, находится ли устройство возле уха. Так смартфон «понимает», что во время разговора по телефону нужно отключить дисплей.

Датчик освещённости

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

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

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

Датчик света в смартфоне

Это один из самых обязательных датчиков. Представляет собой полупроводниковый сенсор, находящийся рядом с разговорным динамиком. Основная его функция — экономия энергии батареи. Он улавливает поток фотонов и регулирует яркость подсветки экрана. Чаще всего работает в тандеме с датчиком приближения.

Датчик приближения

Это сенсор, который находится рядом с датчиком света и отключает экран. Он посылает сигнал предмету, если он отражается, то датчик реагирует отключением экрана. Например, так происходит, когда подносишь смартфон к уху.

Акселерометр (G-сенсор)

Данный сенсор представляет собой эл. механический прибор, фиксирующий все движения смартфона. Его задача переключать экран при наклоне устройства, фиксировать жесты, участвовать в управлении игр, подсчитывать шаги. Он бывает 2-х и 3-х осевым. В последнем случае при покое одна из осей будет показывать 9-10 м/с2. Например, на неподвижный телефон акселерометр не реагирует, поэтому в играх точность снижена. Практически всегда работает в паре с гироскопом.

Гироскоп в телефоне

Эта электромеханическая схема определяет положение смартфона в пространстве, учитывает его неподвижность. Он очень точен, погрешность не более 1-2°. Вместе с акселерометром используется в игровых приложениях, при управлении жестами.

Магнитометр в телефоне

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

Это были наиболее продвинутые датчики, находящиеся даже в бюджетных смартфонах. Более дорогие гаджеты могут иметь дополнительные сенсоры.

Барометр (датчик давления)

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

Температурные датчики

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

Гигрометр

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

Пульсометр

Это сенсор для измерения сердечного сокращения (пульса). С его помощью корректируют нагрузки в процессе тренировок. Этим датчиком смартфон должен плотно прилегать к кровеносным сосудам. Предустановлен в Galaxy S5, S7 (S7 Edge). Чаще всего применяется в трекерах и смарт-часах.

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

Данный сенсор завоевывает все больше популярности. Он мгновенно разблокирует девайс без ввода пароля и надежно защищает данные на устройстве. Сегодня даже малоизвестные производители смартфонов стараются оснастить им свои детища. Первым среди смартфонов его получил iPhone 5S.

Сканер сетчатки глаза

В 2016 году печально известный Samsung Galaxy Note 7 был оснащен этим датчиком. По скорости он не уступает сканеру отпечатка пальцев. ИК-луч сканирует радужную сетчатку глаза, фиксирует ее и кодирует в алгоритм, с которым в последствие и сравнивается. Примечательно, что он работает даже в темноте, идентифицирует через прозрачные очки и линзы.

Современный смартфон премиум-класса имеет не менее 12 датчиков, среди лидеров iPhone, Samsung Galaxy, HTC. А сколько датчиков на вашем смартфоне?

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

Что это?

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

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

В смартфонах он представлен микросхемой, которая на выходе создает информационный сигнал в двух состояниях:

  • единица (сигнал подается);
  • ноль (сигнал отсутствует).

Мобильный телефон его считывает и в зависимости от состояния сигнала выполняет то или иное действие.

Важно! Датчик можно устанавливать рядом с микроконтроллерами или логическими элементами – он не влияет на их работу.

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

Зачем нужен?

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

  • компактные размеры мобильного телефона;
  • сокращение потребления заряда аккумулятора;
  • нет необходимости.

В смартфонах датчик Холла используется в двух случаях:

  • в цифровом компасе и для улучшения геопозиционирования, обеспечивая быстрый «холодный» старт GPS-навигатора;
  • взаимодействие с магнитным чехлом для смартфона.

Принцип взаимодействия с магнитным чехлом

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

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

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

Статьи и Лайфхаки

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

В частности, некоторые из них не представляют себе, что такое G-Sensor и для чего он используется.

И это неудивительно, ведь постоянные инновации и новшества способны поставить в тупик даже самых продвинутых представителей широкой общественности.

Существует датчик с таким же названием, о котором знают все автолюбители. Однако для чего он нужен в мобильном устройстве?

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

Что представляет собой G-Sensor

Рассматриваемый G-сенсор, также известный как , представляет собой особый прибор, который контролирует положение устройства в пространстве.

По сути, это датчик движения, способный измерить ускорение, сопоставив 3 пространственные координаты одновременно.

Если объяснять, что такое G-Sensor, иными словами, получим особый прибор, который измеряет разницу между проекциями гравитационного и абсолютного ускорения.

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

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

Для чего нужен G-Sensor в мобильных устройствах

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

Это означает, что при повороте мобильного телефона, к примеру, при съёмке, изображение будет повёрнуто так, как удобно самому пользователю.

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

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

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

Таким образом, G-Sensor разработан специально для того, чтобы каждый смог сделать эксплуатацию своего мобильного устройства более комфортной.