确定类型的默认传感器

一个类型可有多个传感器

传感器在设计时就考虑到一个给定类型可以有多个传感器。为什么?请看下面这个例子。

一款安卓设备内置了一个加速计。它还具有蓝牙功能,可以与具有加速度计的游戏控制器配对。对于编写游戏的开发人员来说,这两款设备在概念上属于同一类型。

类型的默认传感器

为了避免需要知道(或检查)类型的默认传感器是什么,系统将使用类型的默认传感器。大多数情况下,这正是应用程序开发人员想要做的。如果应用程序开发人员想要选择特定的传感器,则需要在启动传感器之前调用QSensor::setIdentifier() 方法,以便使用适当的后端。

不过,从系统的角度来看,选择哪个传感器作为默认传感器变得非常棘手。传感器库使用第一个注册的标识符作为默认值。这意味着传感器后端注册的顺序非常重要,因此系统会允许配置文件来决定默认值。

Sensors.conf

决定一个类型的默认传感器的配置文件称为Sensors.conf。配置文件在QStandardPaths::standardLocations(QStandardPaths::ConfigLocation) 指定目录下的QtProject目录中查找。完整文件路径的示例如下

/etc/xdg/QtProject/Sensors.conf

第一个找到的配置文件将被使用。

配置文件采用 ini 文件的标准格式。设置位于默认组中,一般格式为:

type = identifier

举例说明Sensors.conf 确保默认使用sensorfw加速计,而不考虑后端注册的顺序。

[Default]
QAccelerometer=sensorfw.accelerometer

如果 Sensors.conf 指定了一个未注册的标识符,系统将默认使用第一个注册的标识符。

需要注意的是,有一种特殊情况逻辑可以防止通用插件的后端在同一类型有其他后端注册时成为默认。这一逻辑意味着,以generic. 开头的后端标识符只有在没有为该类型注册其他后端或在Sensors.conf 中指定的情况下才会成为默认标识符。

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.