确定类型的默认传感器

一个类型可能存在多个传感器

传感器被设计为可以为给定类型存在多个传感器。为什么?考虑这个例子。

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

类型的默认传感器

为了避免知道(或检查)特定类型的默认传感器是什么的需要,系统将使用特定类型的默认传感器。大多数情况下,这是应用程序开发者想要的。如果应用程序开发者想要选择特定的传感器,他需要在启动传感器之前调用QSensor::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中的情况下才能成为默认的。

© 2024 Qt公司有限公司。此处包含的文档贡献是各自所有者的版权。此处提供的文档是在自由软件基金会发布的GNU自由文档许可证版本1.3的条款下许可的。Qt和相应的标志是芬兰的Qt公司及其在世界其他地区的商标。所有其他商标均为其各自所有者的财产。