Определение датчика по умолчанию для типа
Возможность существования нескольких датчиков для одного типа
Датчики были разработаны таким образом, чтобы для данного типа могли существовать несколько датчиков. Почему? Рассмотрим этот пример.
У 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/archives/qt-5.11/determining-the-default-sensor-for-a-type.html