Compartilhar via


Como criar e localizar âncoras usando relocalização de alta granularidade em C++/WinRT

As Âncoras Espaciais do Azure podem associar dados de sensor de posicionamento no dispositivo com as âncoras que você criar. Esses dados também podem ser usados para determinar rapidamente se há âncoras próximas ao seu dispositivo. Para obter mais informações, confira Relocalização grosseira.

Pré-requisitos

Para concluir este guia, verifique se você:

Configurar o provedor de impressão digital do sensor

Vamos começar criando e configurando um provedor de impressão digital do sensor. O provedor de impressão digital do sensor será responsável pela leitura dos sensores específicos da plataforma em seu dispositivo e pela conversão das leituras em uma representação comum consumida pela sessão da âncora espacial de nuvem.

Importante

Verifique aqui se os sensores que você está habilitando estão disponíveis em sua plataforma.

// Create the sensor fingerprint provider
PlatformLocationProvider sensorProvider = PlatformLocationProvider();

// Allow GPS
SensorCapabilities sensors = sensorProvider.Sensors()
sensors.GeoLocationEnabled(true);

// Allow WiFi scanning
sensors.WifiEnabled(true);

// Populate the set of known BLE beacons' UUIDs
std::vector<winrt::hstring> uuids;
uuids.emplace_back("22e38f1a-c1b3-452b-b5ce-fdb0f39535c1");
uuids.emplace_back("a63819b9-8b7b-436d-88ec-ea5d8db2acb0");

// Allow the set of known BLE beacons
sensors.BluetoothEnabled(true);
sensors.KnownBeaconProximityUuids(uuids);

Configurar a sessão de âncora espacial de nuvem

Cuidaremos da configuração da sessão de âncora espacial de nuvem em seguida. Na primeira linha, definimos o provedor de sensor na sessão. De agora em diante, qualquer âncora que criamos durante a sessão será associada a um conjunto de leituras de sensor. Em seguida, criamos uma instância de critérios de localização de dispositivo próximo e o inicializamos para corresponder aos requisitos do aplicativo. Por fim, instruímos a sessão a usar dados de sensor ao localizar âncoras criando um observador de nossos critérios de quase dispositivo.

// Set the session's sensor fingerprint provider
cloudSpatialAnchorSession.LocationProvider(sensorProvider);

// Configure the near-device criteria
NearDeviceCriteria nearDeviceCriteria = NearDeviceCriteria();
nearDeviceCriteria.DistanceInMeters(5.0f);
nearDeviceCriteria.MaxResultCount(25);

// Set the session's locate criteria
anchorLocateCriteria = AnchorLocateCriteria();
anchorLocateCriteria.NearDevice(nearDeviceCriteria);
cloudSpatialAnchorSession.CreateWatcher(anchorLocateCriteria);

Depois que o observador for criado, o evento AnchorLocated será acionado para cada âncora solicitada. Esse evento é acionado quando uma âncora é localizada ou se a âncora não puder ser localizada. Se essa situação ocorrer, o motivo será indicado no status. Após todas as âncoras de um observador serem processadas, sejam elas encontradas ou não, o evento LocateAnchorsCompleted será acionado. Há um limite de 35 identificadores por observador.

Próximas etapas

Neste guia, você aprendeu sobre como criar e localizar âncoras usando sensores no dispositivo. Para saber mais sobre a relocalização grosseira, vá para o próximo guia.