Creación y localización de anclajes mediante relocalización general en C++/NDK
Azure Spatial Anchors puede asociar los datos del sensor de posicionamiento del dispositivo con los anclajes que cree. Estos datos también se pueden usar para determinar rápidamente si hay algún anclaje cerca del dispositivo. Para más información, consulte Relocalización general.
Requisitos previos
Para completar esta guía, asegúrese de tener:
- Conocimiento básico sobre C++ y el Kit de desarrollo nativo de Android.
- Ha leído completamente Introducción a Azure Spatial Anchors.
- Ha completado uno de los inicios rápidos en 5 minutos.
- Lea el artículo sobre procedimientos de creación y ubicación de anclajes.
Configuración del proveedor de huellas digitales del sensor
Para empezar, es preciso crear y configurar un proveedor de huellas digitales del sensor. Este proveedor de huella digital del sensor se encargará de leer los sensores específicos de la plataforma en el dispositivo y de convertir sus lecturas en una representación común, que es la que usa la sesión del anclaje espacial en la nube.
Importante
Asegúrese de comprobar aquí si los sensores que está habilitando están disponibles en la plataforma.
// 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);
Configuración de la sesión de anclaje espacial en la nube
A continuación, vamos a configurar la sesión de anclaje espacial en la nube. En la primera línea, se establece el proveedor del sensor en la sesión. A partir de ahora, todos los delimitadores que se creen en la sesión se asociarán a un conjunto de lecturas del sensor. A continuación, se instancian los criterios de búsqueda de dispositivos cercanos y se inicializan para que coincidan con los requisitos de la aplicación. Por último, se indica a la sesión que use los datos del sensor al localizar los delimitadores mediante la creación de un monitor a partir de nuestros criterios de dispositivos cercanos.
// 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);
Una vez creado el monitor, se desencadenará el evento AnchorLocated
para cada delimitador solicitado. Este evento se desencadena cuando se encuentra un delimitador o si no puede encontrarse. Si se produce esta situación, el motivo se incluirá en el estado. Una vez procesados todos los delimitadores de un monitor, tanto si se encuentran como si no, se desencadenará el evento LocateAnchorsCompleted
. Hay un límite de 35 identificadores por monitor.
Pasos siguientes
En esta guía, ha aprendido a crear y buscar delimitadores mediante los sensores de los dispositivos. Para más información sobre la relocalización general, vaya a la guía siguiente.