Como criar e localizar âncoras com a relocalização grosseira em C++/NDK
O Azure Spatial Anchors pode associar dados do sensor no dispositivo e posicionar as âncoras que criar. Estes dados também podem ser utilizados para determinar rapidamente se existem âncoras nas proximidades do seu dispositivo. Para obter mais informações, veja Relocalização conjunta.
Pré-requisitos
Para concluir este guia, certifique-se de que tem:
- Conhecimentos básicos sobre C++ e o Android Native Development Kit.
- Leia a descrição geral do Azure Spatial Anchors.
- Um dos Inícios Rápidos de 5 minutos foi concluído.
- Leia os procedimentos para Criar e localizar âncoras.
Configurar o fornecedor de impressões digitais do sensor
Vamos começar por criar e configurar um fornecedor de impressões digitais do sensor. O fornecedor de impressões digitais do sensor tratará da leitura dos sensores específicos da plataforma no seu dispositivo e da conversão das respetivas leituras numa representação comum consumida pela sessão de âncora espacial na cloud.
Importante
Certifique-se de que verifica aqui se os sensores que está a ativar estão disponíveis na sua 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);
Configurar a sessão de âncora espacial na cloud
Em seguida, vamos tratar da configuração da sessão de âncora espacial na cloud. Na primeira linha, definimos o fornecedor do sensor na sessão. A partir de agora, qualquer âncora que criarmos durante a sessão será associada a um conjunto de leituras de sensores. Em seguida, instanciamos um critério de localização quase do dispositivo e inicializamo-lo para corresponder aos requisitos da aplicação. Por fim, instruímos a sessão a utilizar dados de sensores ao localizar âncoras ao criar um observador a partir dos nossos critérios de quase dispositivo.
// 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);
Após a criação do observador, o AnchorLocated
evento será acionado para cada âncora pedida. Este evento é acionado quando uma âncora está localizada ou se não é possível localizar a âncora. Se esta situação acontecer, o motivo será indicado no estado. Depois de todas as âncoras de um observador serem processadas, encontradas ou não encontradas, o LocateAnchorsCompleted
evento será acionado. Existe um limite de 35 identificadores por observador.
Passos seguintes
Neste guia, aprendeu a criar e localizar âncoras com sensores no dispositivo. Para saber mais sobre a relocalização grosseira, avance para o guia seguinte.