Определение сенсора по умолчанию для типа
Возможность наличия нескольких сенсоров для одного типа
Сенсоры были спроектированы таким образом, чтобы для одного типа могло существовать несколько сенсоров. Почему? Рассмотрим этот пример.
Устройство Android имеет встроенный акселерометр. Оно также оснащено Bluetooth и может подключаться к гейм-контроллеру, который также имеет акселерометр. Для разработчика игр эти два устройства концептуально представляют один и тот же тип.
Сенсор по умолчанию для типа
Чтобы избежать необходимости знать (или проверять) какой сенсор является сенсором по умолчанию для типа, система будет использовать сенсор по умолчанию для этого типа. В большинстве случаев это то, чего хочет разработчик приложения. Если разработчик приложения хочет выбрать конкретный сенсор, ему необходимо вызвать метод QSensor::setIdentifier() перед запуском сенсора, чтобы использовать соответствующий бэкэнд.
Однако с точки зрения системы выбор сенсора по умолчанию усложняется. Библиотека сенсоров использует первый зарегистрированный идентификатор как сенсор по умолчанию. Это означает, что порядок регистрации бэкэндов сенсоров важен, поэтому система позволит файлу конфигурации определить сенсор по умолчанию вместо этого.
Sensors.conf
Файл конфигурации, определяющий сенсор по умолчанию для типа, называется Sensors.conf. Файл конфигурации ищется в директории QtProject в директориях, указанных в QStandardPaths::standardLocations(QStandardPaths::ConfigLocation). Пример полного пути:
/etc/xdg/QtProject/Sensors.conf
Используется первый найденный файл конфигурации.
Файл конфигурации имеет стандартный формат файла ini. Настройки находятся в группе Default, и общий формат:
type = identifier
Пример: Sensors.conf гарантирует, что акселерометр sensorfw используется по умолчанию, игнорируя порядок регистрации бэкэндов.
[Default] QAccelerometer=sensorfw.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-6.2/determining-the-default-sensor-for-a-type.html