确定类型默认传感器#

同一类型可以存在多个传感器#

传感器设计为同一类型可以存在多个传感器。为什么?请考虑以下示例。

Android 设备内建了加速度计。它还具备蓝牙功能,可以与配备加速度计的游戏控制器配对。对于编写游戏的开发者来说,这两个设备在概念上是相同的类型。

类型的默认传感器#

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

然而,从系统角度来看,选择哪一个传感器应该是默认的会变得复杂。传感器库使用第一个注册的标识符作为默认值。这意味着传感器后端注册的顺序很重要,因此系统允许配置文件来确定默认值。

Sensors.conf#

确定类型默认传感器的配置文件名为 Sensors.conf。配置文件在 QStandardPaths::standardLocations(QStandardPaths::ConfigLocation) 提供的目录中查找,从 QtProject 目录开始。例如,一个完整的文件路径是这样的:

/etc/xdg/QtProject/Sensors.conf

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

配置文件具有标准的 ini 文件格式。设置位于 Default 组中,一般格式为

type = identifier

示例:Sensors.conf 确保默认使用 sensorfw 加速度计,忽略后端注册的顺序。

[Default]
QAccelerometer=sensorfw.accelerometer

如果 Sensors.conf 指定了一个未注册的标识符,系统将回退到第一个注册的标识符作为默认值。

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