Festlegen des Standardsensors für einen Typ
Es können mehrere Sensoren für einen Typ vorhanden sein
Sensoren wurde so konzipiert, dass für einen bestimmten Typ mehrere Sensoren vorhanden sein können. Und warum? Betrachten Sie dieses Beispiel.
Ein Android-Gerät hat einen eingebauten Beschleunigungsmesser. Es verfügt außerdem über Bluetooth und kann mit einem Spiele-Controller gekoppelt werden, der über einen Beschleunigungsmesser verfügt. Für einen Entwickler, der ein Spiel schreibt, sind diese beiden Geräte konzeptionell derselbe Typ.
Standardsensor für einen Typ
Um zu vermeiden, dass man wissen (oder überprüfen) muss, was der Standardsensor für einen Typ ist, verwendet das System den Standardsensor für einen Typ. In den meisten Fällen ist dies das, was der App-Entwickler tun möchte. Wenn der App-Entwickler einen bestimmten Sensor auswählen möchte, muss er die Methode QSensor::setIdentifier() aufrufen, bevor er den Sensor startet, damit das entsprechende Backend verwendet wird.
Aus der Systemperspektive wird die Auswahl des Standardsensors jedoch schwierig. Die Sensorenbibliothek verwendet den ersten registrierten Bezeichner als Standard. Das bedeutet, dass die Reihenfolge, in der die Sensor-Backends registriert werden, wichtig ist, so dass das System stattdessen eine Konfigurationsdatei zur Bestimmung des Standards zulässt.
Sensoren.conf
Die Konfigurationsdatei, die den Standardsensor für einen Typ festlegt, heißt Sensors.conf. Die Konfigurationsdatei wird im QtProject-Verzeichnis unter den von QStandardPaths::standardLocations(QStandardPaths::ConfigLocation) angegebenen Verzeichnissen gesucht. Ein Beispiel für einen vollständigen Dateipfad ist:
/etc/xdg/QtProject/Sensors.conf
Die erste gefundene Konfigurationsdatei wird verwendet.
Die Konfigurationsdatei hat die Standardformatierung einer ini-Datei. Die Einstellungen befinden sich in der Gruppe Default und das allgemeine Format ist:
type = identifier
Ein Beispiel: Sensors.conf stellt sicher, dass der sensorfw-Beschleunigungsmesser standardmäßig verwendet wird, ohne Rücksicht auf die Reihenfolge, in der die Backends registriert wurden.
[Default] QAccelerometer=sensorfw.accelerometer
Wenn Sensors.conf einen Bezeichner angibt, der nicht registriert ist, greift das System auf den ersten registrierten Bezeichner als Standard zurück.
Beachten Sie, dass es eine spezielle Logik gibt, die verhindert, dass die Backends des generischen Plugins zum Standard werden, wenn ein anderes Backend für denselben Typ registriert ist. Diese Logik bedeutet, dass ein Backend-Bezeichner, der mit generic.
beginnt, nur dann zum Standard wird, wenn keine anderen Backends für diesen Typ registriert wurden oder wenn er in Sensors.conf
angegeben ist.
© 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.