Меню

Андроид настройки всех датчиков



Собираем показания датчиков

Общая информация

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

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

  • Акселерометр (TYPE_ACCELEROMETER)
  • Гироскоп (TYPE_GYROSCOPE)
  • Датчик освещения (TYPE_LIGHT)
  • Датчик расстояния (TYPE_PROXIMITY)
  • Датчик магнитных полей (TYPE_MAGNETIC_FIELD)
  • Барометр (TYPE_PRESSURE)
  • Датчик температуры окружающей среды (TYPE_AMBIENT_TEMPERATURE)
  • Измеритель относительной влажности (TYPE_RELATIVE_HUMIDITY)

В каждом телефоне может быть свой набор датчиков. В большинстве аппаратов есть — акселерометр и гироскоп.

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

Необходимо помнить несколько вещей, работая с датчиками:

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

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

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

Тип датчика Ориентация, акселерометр, свет, магнитное поле, близость, температура и т.д. Частота измерений Максимальная, для игр, обычная, для пользовательского интерфейса. Когда приложение запрашивает конкретное значение частоты отсчётов, с точки зрения сенсорной подсистемы это лишь рекомендация. Никакой гарантии, что измерения будут производиться с указанной частотой, нет. Точность Высокая, низкая, средняя, ненадёжные данные.

Типы датчиков

  • TYPE_ACCELEROMETER — Измеряет ускорение в пространстве по осям X, Y, Z
  • TYPE_AMBIENT_TEMPERATURE — Новый датчик для измерения температуры (API 14) в градусах Цельсия, который заменил устаревший TYPE_TEMPERATURE
  • TYPE_GRAVITY — Трёхосевой датчик силы тяжести. Как правило, это виртуальный датчик и представляет собой низкочастотный фильтр для показаний, возвращаемых акселерометром
  • TYPE_GYROSCOPE — Трёхосевой гироскоп, возвращающий текущее положение устройства в пространстве в градусах по трём осям. По другим данным, возвращает скорость вращения устройства по трём осям в радианах в секунду.
  • TYPE_LIGHT — Измеряет степень освещённости. Датчик окружающей освещённости, который описывает внешнюю освещённость в люксах. Этот тип датчиков обычно используется для динамического изменения яркости экрана.
  • TYPE_LINEAR_ACCELERATION — Трёхосевой датчик линейного ускорения, возвращающий показатели ускорения без учёта силы тяжести. Это виртуальный датчик, использующий показания акселерометра.
  • TYPE_MAGNETIC_FIELD — Датчик магнитного поля, определяющий текущие показатели магнитного поля в микротеслах по трём осям.
  • TYPE_ORIENTATION — Датчик ориентации. Измеряет повороты, наклоны и вращение устройства
  • TYPE_PRESSURE — Датчик атмосферного давления (барометр), возвращающий текущее давление в миллибарах. Можно определять высоту над уровнем моря, путём сравнения атмосферного давления в двух точках. Также барометры могут применяться для прогнозирования погоды.
  • TYPE_PROXIMITY — Датчик приближенности, который сигнализирует о расстоянии между устройством и целевым объектом в сантиметрах. Каким образом выбирается объект и какие расстояния поддерживаются, зависит от аппаратной реализации данного датчика, возможно возвращение двух значений — Близко и Далеко. Типичное его применение — обнаружение расстояния между устройством и ухом пользователя для автоматического регулирования яркости экрана или выполнения голосовой команды.
  • TYPE_RELATIVE_HUMIDITY — Датчик относительной влажности в виде процентного значения (API 14)
  • TYPE_ROTATION_VECTOR — Возвращает положение устройства в пространстве в виде угла относительно оси. Виртуальный датчик, берущий показания от акселерометра и гироскопа. Также может использовать показания датчика магнитного поля
  • TYPE_GEOMAGNETIC_ROTATION_VECTOR — альтернатива TYPE_ROTATION_VECTOR. Меньшая точность, но меньший расход батареи. Появился в Android 4.4 (API 19)
  • TYPE_POSE_6DOF — ещё одна альтернатива TYPE_ROTATION_VECTOR. Появился в Android 7.0 (API 24)
  • TYPE_SIGNIFICANT_MOTION — Появился в Android 4.3 (API 18)
  • TYPE_MOTION_DETECT — детектор движения. Появился в Android 7.0 (API 24)
  • TYPE_STATIONARY_DETECT — Появился в Android 7.0 (API 24)
  • TYPE_STEP_COUNTER — датчик для подсчёта количества шагов
  • TYPE_STEP_DETECTOR — определение начала шагов
  • TYPE_HEART_BEAT — пульс. Появился в Android 7.0 (API 24)
  • TYPE_HEART_RATE — сердечная активность. Появился в Android 4.4 (API 20)
  • TYPE_LOW_LATENCY_OFFBODY_DETECT — Появился в Android 8.0 (API 26)

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

Чтобы получить доступ к сенсорам, нужно вызвать метод getSystemService().

Устройство может включать в себя несколько реализаций одного и того же типа датчиков. Чтобы найти реализацию, используемую по умолчанию, вызовите метод getDefaultSensor() из объекта SensorManager, передавая ему в качестве параметра тип датчика в виде одной из констант, описанных выше.

Читайте также:  Lte настройки для теле2 айфон

Следующий фрагмент кода вернёт объект, описывающий гироскоп по умолчанию. Если для данного типа не существует датчика по умолчанию, будет возвращено значение null.

Таблица значений, возвращаемых датчиками

Тип датчика Количество значений Содержание значений Примечание
TYPE_ACCELEROMETER 3 value[0]: ось X (поперечная)
value[1]: ось Y (продольная)
value[2]: ось Z (вертикальная)
Ускорение (м/с 2 ) по трём осям.
Константы SensorManager.GRAVITY_*
TYPE_GRAVITY 3 value[0]: ось X (поперечная)
value[1]: ось Y (продольная)
value[2]: ось Z (вертикальная)
Сила тяжести (м/с 2 ) по трём осям.
Константы SensorManager.GRAVITY_*
TYPE_RELATIVE_HUMIDITY 1 value[0]:относительная влажность Относительная влажность в процентах (%)
TYPE_LINEAR_ACCELERATION 3 value[0]: ось X (поперечная)
value[1]: ось Y (продольная)
value[2]: ось Z (вертикальная)
Линейное ускорение (м/с 2 ) по трём осям без учёта силы тяжести
TYPE_GYROSCOPE 3 value[0]: ось X
value[1]:ось Y
value[2]: ось Z
Скорость вращения (рад/с) по трём осям
TYPE_ROTATION_VECTOR 4 values[0]: x*sin(q/2)
values[1]: y*sin(q/2)
values[2]: z*sin(q/2)
values[3]: cos(q/2)
Положение устройства в пространстве.
Описывается в виде угла поворота относительно оси в градусах
TYPE_MAGNETIC_FIELD 3 value[0]: ось X (поперечная)
value[1]: ось Y (продольная)
value[2]: ось Z (вертикальная)
Внешнее магнитное поле (мкТл)
TYPE_LIGHT 1 value[0]: освещённость Внешняя освещённость (лк).
Константы SensorManager.LIGHT_*
TYPE_PRESSURE 1 value[0]: атм.давление Атмосферное давление (мбар)
TYPE_PROXIMITY 1 value[0]: расстояние Расстояние до цели
TYPE_AMBIENT_TEMPERATURE 1 value[0]: температура Температура воздуха в градусах по Цельсию
TYPE_POSE_6DOF 15 см. документацию
TYPE_STATIONARY_DETECT 1 value[0] 5 секунд неподвижен
TYPE_MOTION_DETECT 1 value[0] В движении за последние 5 секунд
TYPE_HEART_BEAT 1 value[0]

Огласите весь список, пожалуйста!

У класса SensorManager есть метод getSensorList(), позволяющий получить список доступных датчиков на устройстве через константу Sensor.TYPE_ALL и метод getName():

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

Также можно использовать метод getSensorList() для получения списка доступных датчиков конкретного типа. В следующем фрагменте кода будут возвращены объекты Sensor, представляющие собой все доступные датчики давления:

Интерфейс SensorEventListener — отслеживаем показания

Также вам понадобится интерфейс android.hardware.SensorListener. Интерфейс реализован с помощью класса, который используется для ввода значений датчиков по мере их изменения в режиме реального времени. Приложение реализует этот интерфейс для мониторинга одного или нескольких имеющихся аппаратных датчиков.

Интерфейс включает в себя два необходимых метода:

  • Метод onSensorChanged(int sensor, float values[]) вызывается всякий раз, когда изменяется значение датчика. Этот метод вызывается только для датчиков, контролируемых данным приложением. В число аргументов метода входит целое, которое указывает, что значение датчика изменилось, и массив значений с плавающей запятой, отражающих собственно значение датчика. Некоторые датчики выдают только одно значение данных, тогда как другие предоставляют три значения с плавающей запятой. Датчики ориентации и акселерометр дают по три значения данных каждый.
  • Метод onAccuracyChanged(int sensor,int accuracy) вызывается при изменении точности показаний датчика. Аргументами служат два целых числа: одно указывает датчик, а другое соответствует новому значению точности этого датчика.

Служба датчиков вызывает onSensorChanged() каждый раз при изменении значений. Все датчики возвращают массив значений с плавающей точкой. Размер массива зависит от особенностей датчика. Датчик TYPE_TEMPERATURE возвращает одно значение — температуру в градусах Цельсия, другие могут возвращать несколько значений. Вы можете использовать только нужные значения. Например, для получения сведений только о магнитном азимуте достаточно использовать первое числов, возвращаемое датчиком TYPE_ORIENTATION.

Параметр accuracy, используемый в методах для представления степени точности датчика, использует одну из констант

  • SensorManager.SENSOR_STATUS_ACCURACY_LOW. Говорит о том, что данные, предоставляемые датчиком, имеют низкую точность и нуждаются в калибровке.
  • SensorManager.SENSOR_STATUS_ACCURACY_MEDIUM. Говорит о средней степени точности датчика и том, что калибровка может улучшить результат.
  • SensorManager.SENSOR_STATUS_ACCURACY_HIGH. Показатели датчика точны настолько, насколько это возможно.
  • SensorManager.SENSOR_STATUS_UNRELIABLE. Данные, предоставляемые датчиком, недостоверны. Это значит, что датчик необходимо откалибровать, иначе невозможно считывать результаты.

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

После получения объекта вы вызываете метод registerListener() в методе onResume(), чтобы начать получать обновлённые данные, и вызываете unregisteredListener() в методе onPause(), чтобы остановить получение данных. В этом случае датчики будут использоваться только тогда, когда активность видна на экране.

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

Класс SensorManager содержит следующие константы для выбора подходящей частоты обновлений (в порядке убывания):

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

Выбранная вами частота необязательно будет соблюдаться. SensorManager может возвращать результаты быстрее или медленней, чем вы указали (хотя, как правило, это происходит быстрее). Чтобы минимизировать расход ресурсов при использовании датчиков в приложении, необходимо пытаться подбирать наиболее низкую частоту.

Читайте также:  Настройка шумоподавления микрофона android

Динамические датчики

В Android 7.0 Nougat (API 24) появилось понятие динамических датчиков, рассчитанных на платформу Android Things. Датчики могут присоединяться и отсоединяться от платы в любое время.

Для определения доступных динамических датчиков используются методы isDynamicSensorDiscoverySupported(), isDynamicSensor(), getDynamicSensorList().

Источник

⚡️Секреты MIUI: Правильная настройка датчика приближения

Изначально я хотел отнести эту статью к циклу о лжи и вредных советах по поводу разных настроек в OS Android и MIUI в частности, но решил выпустить её в «Секретах».

  • Во-первых, так её увидит больше людей
  • Во-вторых, хочу заметить сколько YouTube каналов и сайтов в очередной раз своруют мои труды без указания источника и ссылки на канал, «случайно» опубликовав видео/тексты с рассказом об этой же программе.
  • В-третьих, потому что большинство рекомендаций по этой теме устарели или актуальны лишь для некоторых смартфонов.

Итак, если обратиться к интернету и забить в поисковую строку: «дисплей мигает при звонке» или «как настроить датчик приближения ?», в большинстве случаев Вы столкнётесь с советом в котором предлагается ввести в номеронабиратель специальный код и попасть в инженерное меню.

И проследовать в пункт «Proximity sensor calibration/test» для калибровки датчика приближения.

НО! Актуально это только для смартфонов с процессорами от МТК, а для моделей на базе Snapdragon, доступно лишь тестирование работоспособности, что как Вы понимаете абсолютно не помогает в устранении неисправности.

Однако перед тем как познакомить вас с решением проблемы, должен заметить, что 80% случаев неправильной работы датчика приближения (и освещённости тоже) связаны вовсе не с программной частью. Раз 10 ко мне в сервис приходили люди с жалобой на то, что при звонке экран начинает моргать и я за 2 минуты решал их проблему, просто переклеив защитное стекло.

Видите ли, далеко не все производители защитных стёкол (особенно на свежие модели) оставляют нужные вырезы для датчиков, которые некорректно считывают данные из-за преломления света, проходящего через стекло.

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

Правильная калибровка

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

Заходите в приложение, нажимаете на переключатель в правом верхнем углу, и смотрите на показатели датчика приближения (Д.П) и освещённости (Д.О)

Когда экран открыт, напротив Д.П должны быть цифры 5.0, а цифры напротив Д.О будут меняться в зависимости от освещения. На моём рабочем месте показатели выглядят так.

Теперь подносим ладонь к верхней части дисплея на расстояние от 2 до 5 сантиметров, телефон вибрирует, а в строке показателей Д.П появляются нули. Убираем руку, берём лист бумаги, карточку, визитку (что угодно) чтобы закрыть экран, кладём выбранный предмет на верхнюю часть экрана, плотно закрывая оба датчика, и видим, что показатели обоих стали равны нулю.

Если у вас так, то переживать не стоит, всё работает как надо. А если нет,
или Вы лишний раз хотите провести калибровку, то заходите в настройки приложения, выдаёте разрешение «Экран блокировки» и возвращаетесь обратно. Нажимаете на пункт «Рекалибровка» и выключаете экран телефона.

Через 10 секунд экран включится, а после разблокировки вы увидите надпись «Рекалибровка выполнена». Само приложение после этого можно удалять.

Надеюсь эта статья достойна вашего лайка и доброго комментария👍

Источник

Как отключить все датчики слежения на смартфоне с Android 10

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

Теперь в системе появилась скрытая панель настроек, которая позволяет разом отключить все датчики, через которые можно так или иначе следить за вами. Из приятного — она не затрагивает Wi-Fi, Bluetooth и GPS, так как для управления ими уже есть пункт в настройках и шторке уведомлений.

Чтобы отключить все датчики, зайдите в «Настройки» → «О телефоне» и семь раз нажмите на строку с номером сборки. После этого на экране появится уведомление о том, что вы разблокировала режим разработчика: дополнительно может потребовать ввод кода-пароля, установленного в системе.

Вернитесь в главное меню настроек и зайдите в раздел «Система» → «Для разработчиков». Прокрутите меню вниз и выберите «Плитки быстрых настроек», а затем включите параметр «Сенсоры». Теперь откройте шторку уведомлений, нажмите на иконку с карандашом и добавьте в панель управления кнопку «Сенсоры». У нее всего два действия — выключить все сенсоры и включить их обратно.

Читайте также:  Самсунг галакси а5 настройка яркости

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

Источник

Как включить, настроить и отключить датчик приближения на телефона Андроид

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

Датчик приближения – что это и зачем он нужен

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

Как включить датчик приближения

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

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

Здесь следует выбрать вкладку «Входящие вызовы» и сместить бегунок напротив строки с названием модуля в рабочее положение (или установить метку).

Как отключить датчик приближения

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

Как выполнить настройку (откалибровать) датчик приближения

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

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

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

Возможности системы

Встроенные службы – наиболее простая возможность выполнить калибровку. Для этого нужно перейти в настройки смартфона и в разделе «Экран» или «Специальные возможности» выбрать эту опцию. Далее потребуется следовать подсказкам системы в процессе выполнения операции.

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

Инженерное меню

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

Выбрать ввод номера и ввести *#*#3646633#*#* или *#*#6484#*#*.

  1. Перейти к проверке комплектующих («Hardware Testing»), откройте раздел «Sensor», затем «Light/Proximity Sensor» (датчик света и приближения).
  2. Чтобы выполнить тестирование, провести сбор сведений модуля («PS Data Collection»).
  3. Кликнуть «Get One Data», когда на экране загорится «0», приблизить ладонь к элементу и повторно нажать «Get One Data».
  4. Если на экране высветится число «255», модуль исправен.
  5. Чтобы провести настройку, нужно выбрать «PS Calibration», затем «Calibration».
  6. Нажать «Calculate min value», при этом модуль должен быть открыт.
  7. Увидев на экране сообщение «Calculate succeed», приблизить на пару сантиметров к экрану бумажный лист и нажать «Calculate Max Value», а затем «Do Calibration».

После этих действий необходимо перезагрузить мобильный девайс.

Стороннее приложение

Ещё один удобный способ провести калибровку модуля – воспользоваться бесплатным сторонним приложением «Датчик приближения. Сброс». Загрузить его можно на Google Play.

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

  1. Кликнуть «Calibrate Sensor».

  1. Закрыть датчик и нажать «Next».

  1. Открыть модуль и перейти к следующему шагу.

  1. Кликнуть «Calibrate», затем — «Confirm».

  1. Нажать «Разрешить», чтобы приложение могло использовать рут-права на телефон.

  1. Дождаться перезагрузки устройства и проверить, как оно функционирует.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector