Создание и поиск привязок с использованием простого уточнения расположения на C++/NDK
Пространственные привязки Azure могут связывать данные датчика размещения на устройстве с созданными вами привязками. С помощью этих данных также можно быстро определить, есть ли привязки рядом с устройством. Дополнительные сведения см. в статье Coarse relocalization (Простое уточнение расположения).
Предварительные условия
Для работы с этим руководством вам потребуются:
- Базовые знания C++ и Android Native Development Kit.
- Прочесть статью Описание службы "Пространственные привязки Azure".
- Выполнить одно из 5-минутных руководств.
- Ознакомиться с инструкциями в статье Создание и поиск привязок с помощью Пространственных привязок Azure.
Настройка поставщика датчика отпечатков пальцев
Начнем с создания и настройки поставщика датчика отпечатков пальцев. Поставщик датчика отпечатка пальца позволит получить информацию с платформозависимых датчиков на вашем устройстве и конвертировать ее измерения в общее представление для сеанса пространственной привязки облака.
Важно!
Обязательно просмотрите этот раздел и убедитесь, что датчики, которые вы включаете, доступны на вашей платформе.
// 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);
Настройка сеанса пространственной привязки облака
Далее следует настроить сеанс пространственной привязки облака. В первой строке мы устанавливаем поставщика датчика для сеанса. С этого момента все привязки, создаваемые во время сеанса, будут связаны с набором показаний датчика. Далее мы создадим критерии поиска близкого устройства и инициализируем его в соответствии с требованиями приложения. И наконец, сеансу предписывается использовать данные датчика при нахождении привязок, создав наблюдатель на основе наших критериев близкого устройства.
// 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);
Когда вы создадите наблюдатель, для каждой запрошенной привязки будет срабатывать событие AnchorLocated
. Это событие срабатывает, если привязка обнаружена или если ее не удалось найти. В последнем случае причина будет указана в области состояния. Когда для наблюдателя будут обработаны, найдены или не найдены все привязки, сработает событие LocateAnchorsCompleted
. Максимальное количество идентификаторов на наблюдателя — 35.
Дальнейшие действия
В этом руководстве вы узнаете о том, как создавать и находить привязки с использованием датчиков устройств. Чтобы узнать больше о простом уточнении расположения, перейдите к руководству ниже.