Erstellen von und Suchen nach Ankern mithilfe der ungefähren Standortbestimmung in C++/NDK
Azure Spatial Anchors kann Daten eines geräteeigenen Positionierungssensors mit den von Ihnen erstellten Ankern verknüpfen. Diese Daten können auch verwendet werden, um schnell festzustellen, ob in der Nähe Ihres Geräts irgendwelche Anker vorhanden sind. Weitere Informationen finden Sie unter Ungefähre Standortbestimmung.
Voraussetzungen
Um diese Anleitung durchzuführen, stellen Sie sicher, dass Folgendes erfüllt ist:
- Sie verfügen über grundlegende Kenntnisse zu C++ und dem Android Native Development Kit.
- Sie haben die Informationen unter Azure Spatial Anchors-Übersicht gelesen.
- Sie haben eine der fünfminütigen Schnellstartanleitungen absolviert.
- Sie haben die Informationen unter Erstellen von und Suchen nach Ankern mit Azure Spatial Anchors gelesen.
Konfigurieren des Anbieters für Fingerabdrucksensoren
Der erste Schritt besteht darin, einen Anbieter für Fingerabdrucksensoren zu erstellen und zu konfigurieren. Der Anbieter für Fingerabdrucksensoren liest die plattformspezifischen Sensoren auf Ihrem Gerät und konvertiert die gelesenen Daten in eine allgemeine Darstellung, die von der Raumanker-Cloudsitzung genutzt wird.
Wichtig
Überprüfen Sie hier, ob die von Ihnen aktivierten Sensoren für Ihre Plattform verfügbar sind.
// Create the sensor fingerprint provider
std::shared_ptr<PlatformLocationProvider> sensorProvider;
sensorProvider = std::make_shared<PlatformLocationProvider>();
// Allow GPS
const std::shared_ptr<SensorCapabilities>& sensors = sensorProvider->Sensors();
sensors->GeoLocationEnabled(true);
// Allow WiFi scanning
sensors->WifiEnabled(true);
// Populate the set of known BLE beacons' UUIDs
std::vector<std::string> uuids;
uuids.push_back("22e38f1a-c1b3-452b-b5ce-fdb0f39535c1");
uuids.push_back("a63819b9-8b7b-436d-88ec-ea5d8db2acb0");
// Allow the set of known BLE beacons
sensors->BluetoothEnabled(true);
sensors->KnownBeaconProximityUuids(uuids);
Konfigurieren der Raumanker-Cloudsitzung
Als Nächstes kümmern wir uns um die Konfiguration der Raumanker-Cloudsitzung. In der ersten Zeile legen wir den Sensoranbieter für die Sitzung fest. Ab jetzt werden alle Anker, die wir während der Sitzung erstellen, einer Gruppe von Sensormesswerten zugeordnet. Als Nächstes instanziieren wir Ermittlungskriterien für Geräte in der Nähe und führen eine Initialisierung durch, um eine Anpassung an die Anwendungsanforderungen vorzunehmen. Abschließend weisen wir die Sitzung an, beim Ermitteln von Ankern Sensordaten zu nutzen, indem wir einen „Watcher“ für unsere Kriterien für Geräte in der Nähe erstellen.
// Set the session's sensor fingerprint provider
cloudSpatialAnchorSession->LocationProvider(sensorProvider);
// Configure the near-device criteria
auto nearDeviceCriteria = std::make_shared<NearDeviceCriteria>();
nearDeviceCriteria->DistanceInMeters(5.0f);
nearDeviceCriteria->MaxResultCount(25);
// Set the session's locate criteria
auto anchorLocateCriteria = std::make_shared<AnchorLocateCriteria>();
anchorLocateCriteria->NearDevice(nearDeviceCriteria);
cloudSpatialAnchorSession->CreateWatcher(anchorLocateCriteria);
Nachdem Ihr Watcher erstellt wurde, wird das AnchorLocated
-Ereignis für jeden angeforderten Anker ausgelöst. Dieses Ereignis wird sogar dann ausgelöst, wenn ein Anker gefunden wird, oder der Anker nicht gefunden werden kann. Wenn dies geschieht, wird die Ursache im Status angegeben. Nachdem alle Anker für einen Watcher – ob gefunden oder nicht gefunden – verarbeitet wurden, wird das LocateAnchorsCompleted
-Ereignis ausgelöst. Es besteht eine Beschränkung von 35 Bezeichner pro Watcher.
Nächste Schritte
In dieser Anleitung haben Sie gelernt, wie Sie mit geräteeigenen Sensoren Anker erstellen und lokalisieren. Weitere Informationen zur ungefähren Standortbestimmung finden Sie im nächsten Leitfaden.