Определение сенсора по умолчанию для типа
Возможность существования нескольких сенсоров для одного типа
Библиотека сенсоров разработана таким образом, чтобы для одного типа могли существовать несколько сенсоров. Почему? Рассмотрим пример.
Устройство N900 имеет встроенный акселерометр. Оно также поддерживает Bluetooth и может подключаться к игровому контроллеру, который также имеет акселерометр. Для разработчика игры эти два устройства концептуально представляют один и тот же тип.
Сенсор по умолчанию для типа
Чтобы избежать необходимости знать (или проверять) какой сенсор является сенсором по умолчанию для типа, система будет использовать сенсор по умолчанию для данного типа. В большинстве случаев этого достаточно для разработчика приложения. Если разработчик приложения хочет выбрать определенный сенсор, он должен вызвать метод QSensor::setIdentifier() перед запуском сенсора, чтобы использовался соответствующий бэкэнд.
Однако с точки зрения системы, выбор сенсора по умолчанию может быть сложным. Библиотека сенсоров использует идентификатор первого зарегистрированного сенсора в качестве сенсора по умолчанию. Это означает, что порядок регистрации сенсорных бэкэндов важен, поэтому система позволяет использовать конфигурационный файл для определения сенсора по умолчанию.
Sensors.conf
Конфигурационный файл, определяющий сенсор по умолчанию для типа, называется Sensors.conf. Если он присутствует, он расположен в /etc/xdg/QtProject. Он имеет стандартный формат файла INI.
Настройки находятся в группе Default, а общий формат следующий:
type = identifier
Пример: Sensors.conf гарантирует, что акселерометр N900 используется по умолчанию, не учитывая порядок регистрации бэкэндов.
[Default] QAccelerometer = n900.accelerometer
Если Sensors.conf указывает идентификатор, который не зарегистрирован, система вернётся к первому зарегистрированному идентификатору в качестве сенсора по умолчанию.
Обратите внимание, что существует специальная логика, предотвращающая установку бэкэндов универсальной плагиновой библиотеки по умолчанию, когда для того же типа зарегистрирован другой бэкэнд. Эта логика означает, что идентификатор бэкэнда, начинающийся с generic. , будет сенсором по умолчанию только если не зарегистрированы другие бэкэнды для этого типа или если он указан в Sensors.conf.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/determining-the-default-sensor-for-a-type.html