Class CloudSpatialAnchorSession

Use this class to create, locate and manage spatial anchors.

class Microsoft::Azure::SpatialAnchors::CloudSpatialAnchorSession final : public std::enable_shared_from_this<Microsoft::Azure::SpatialAnchors::CloudSpatialAnchorSession>

Methods

CreateAnchorAsync

Creates a new persisted spatial anchor from the specified local anchor and string properties.

The local anchor passed into this method must have a valid transform. Note some platforms supported by Azure Spatial Anchors such as iOS allow transforms with scale component != 1.0. Azure Spatial Anchors SDK does not support such transforms and it will fail to create the spatial anchor with error code InvalidAnchorTransformRigidity. Any scale handling for anchors must be done at the app level.

auto CreateAnchorAsync(std::shared_ptr<Microsoft::Azure::SpatialAnchors::CloudSpatialAnchor> const& anchor, std::function<void(Status)> callback) -> void;

Parameters

Name Type Description
anchor CloudSpatialAnchor Anchor to be persisted.
  • callback - A task that represents the asynchronous creation operation.

Returns

Type Description
void A task that represents the asynchronous creation operation.

CreateWatcher

Creates a new object that watches for anchors that meet the specified criteria.

auto CreateWatcher(std::shared_ptr<Microsoft::Azure::SpatialAnchors::AnchorLocateCriteria> const& criteria) -> std::shared_ptr<Microsoft::Azure::SpatialAnchors::CloudSpatialAnchorWatcher>;

Parameters

Name Type Description
criteria AnchorLocateCriteria Criteria for anchors to watch for.

Returns

Type Description
CloudSpatialAnchorWatcher A new watcher object that continuously looks for anchors until the criteria is fully satisfied or the watcher is stopped. There can only be one active watcher at a time.

DeleteAnchorAsync

Deletes a persisted spatial anchor.

auto DeleteAnchorAsync(std::shared_ptr<Microsoft::Azure::SpatialAnchors::CloudSpatialAnchor> const& anchor, std::function<void(Status)> callback) -> void;

Parameters

Name Type Description
anchor CloudSpatialAnchor The anchor to be deleted.
  • callback - A task that represents the asynchronous delete operation.

Returns

Type Description
void A task that represents the asynchronous delete operation.

Dispose

Stops this session and releases all associated resources.

auto Dispose() -> void;

GetAccessTokenWithAccountKeyAsync

Gets the Azure Spatial Anchors access token from account key.

auto GetAccessTokenWithAccountKeyAsync(std::string const& accountKey, std::function<void(Status, std::string)> callback) -> void;

Parameters

Name Type Description
accountKey string Account key.
  • callback - The access token string.

Returns

Type Description
void The access token string.

GetAccessTokenWithAuthenticationTokenAsync

Gets the Azure Spatial Anchors access token from authentication token.

auto GetAccessTokenWithAuthenticationTokenAsync(std::string const& authenticationToken, std::function<void(Status, std::string)> callback) -> void;

Parameters

Name Type Description
authenticationToken string Authentication token.
  • callback - The access token string.

Returns

Type Description
void The access token string.

GetActiveWatchers

Gets a list of active watchers.

auto GetActiveWatchers() -> std::vector<std::shared_ptr<Microsoft::Azure::SpatialAnchors::CloudSpatialAnchorWatcher>>;

Returns

Type Description
System.Collections.Generic.IReadOnlyList<Microsoft.Azure.SpatialAnchors.CloudSpatialAnchorWatcher> A list of active watchers.

GetAnchorPropertiesAsync

Gets a cloud spatial anchor for the given identifier, even if it hasn't been located yet.

auto GetAnchorPropertiesAsync(std::string const& identifier, std::function<void(Status, std::shared_ptr<Microsoft::Azure::SpatialAnchors::CloudSpatialAnchor>)> callback) -> void;

Parameters

Name Type Description
identifier string The identifier to look for.
  • callback - A task that represents the asynchronous retrieval operation. The anchor retrieved will have property values but may not have a local anchor available.

Returns

Type Description
void A task that represents the asynchronous retrieval operation. The anchor retrieved will have property values but may not have a local anchor available.

GetNearbyAnchorIdsAsync

Gets a list of all nearby cloud spatial anchor ids corresponding to a given criteria.

auto GetNearbyAnchorIdsAsync(std::shared_ptr<Microsoft::Azure::SpatialAnchors::NearDeviceCriteria> const& criteria, std::function<void(Status, std::shared_ptr<IVector<std::string>>)> callback) -> void;

Parameters

Name Type Description
criteria NearDeviceCriteria The search criteria.
  • callback - A task that represents the asynchronous retrieval operation.

Returns

Type Description
void A task that represents the asynchronous retrieval operation.

GetSessionStatusAsync

Gets an object describing the status of the session.

auto GetSessionStatusAsync(std::function<void(Status, std::shared_ptr<Microsoft::Azure::SpatialAnchors::SessionStatus>)> callback) -> void;

Parameters

Name Type Description
  • callback - A task that represents the session status retrieval.

Returns

Type Description
void A task that represents the session status retrieval.

ProcessFrame

Applications must call this method on platforms where per-frame processing is required.

This method is not available on the HoloLens platform.

auto ProcessFrame(ArFrame* const& frame) -> void;

Parameters

Name Type Description
frame ArFrame AR frame to process.

RefreshAnchorPropertiesAsync

Refreshes properties for the specified spatial anchor.

auto RefreshAnchorPropertiesAsync(std::shared_ptr<Microsoft::Azure::SpatialAnchors::CloudSpatialAnchor> const& anchor, std::function<void(Status)> callback) -> void;

Parameters

Name Type Description
anchor CloudSpatialAnchor The anchor to refresh.
  • callback - A task that represents the asynchronous refresh operation.

Returns

Type Description
void A task that represents the asynchronous refresh operation.

Reset

Resets environment data that has been captured in this session; applications must call this method when tracking is lost.

On any platform, calling the method will clean all internal cached state.

auto Reset() -> void;

Start

Begins capturing environment data for the session.

auto Start() -> void;

Stop

Stops capturing environment data for the session and cancels any outstanding locate operations. Environment data is maintained.

auto Stop() -> void;

UpdateAnchorPropertiesAsync

Updates the specified spatial anchor.

auto UpdateAnchorPropertiesAsync(std::shared_ptr<Microsoft::Azure::SpatialAnchors::CloudSpatialAnchor> const& anchor, std::function<void(Status)> callback) -> void;

Parameters

Name Type Description
anchor CloudSpatialAnchor The anchor to be updated.
  • callback - A task that represents the asynchronous update operation.

Returns

Type Description
void A task that represents the asynchronous update operation.

Properties

Configuration

The configuration information for the session.

Configuration settings take effect when the session is started.

auto Configuration() const -> std::shared_ptr<Microsoft::Azure::SpatialAnchors::SessionConfiguration>;

Diagnostics

The diagnostics settings for the session, which can be used to collect and submit data for troubleshooting and improvements.

auto Diagnostics() const -> std::shared_ptr<Microsoft::Azure::SpatialAnchors::CloudSpatialAnchorSessionDiagnostics>;

LocationProvider

Location provider used to create and locate anchors using Coarse Relocalization.

auto LocationProvider() const -> std::shared_ptr<Microsoft::Azure::SpatialAnchors::PlatformLocationProvider>;
auto LocationProvider(std::shared_ptr<Microsoft::Azure::SpatialAnchors::PlatformLocationProvider> const& value) -> void;

LogLevel

Logging level for the session log events.

auto LogLevel() const -> Microsoft::Azure::SpatialAnchors::SessionLogLevel;
auto LogLevel(Microsoft::Azure::SpatialAnchors::SessionLogLevel value) -> void;

Session

The tracking session used to help locate anchors.

This property is not available on the HoloLens platform.

auto Session() const -> ArSession*;
auto Session(ArSession* const& value) -> void;

SessionId

The unique identifier for the session.

auto SessionId() const -> std::string;

TelemetryEnabled

This API can be used to enable or disable Azure Spatial Anchors SDK telemetry. ASA SDK telemetry is enabled by default. If disabled, ASA SDK will not log any telemetry event for this session. Applications that need to disable ASA SDK telemetry completely can use this API before calling CloudSpatialAnchorSession::Start, which would result in no telemetry event being sent for that CloudSpatialAnchorSession instance.

auto TelemetryEnabled() const -> bool;
auto TelemetryEnabled(bool value) -> void;

Events

AnchorLocated

Occurs when an anchor's location is determined.

auto AnchorLocated(AnchorLocatedDelegate const& handler) -> event_token;
auto AnchorLocated(event_token& token) -> void;

Error

Occurs when the session is unable to continue processing.

auto Error(SessionErrorDelegate const& handler) -> event_token;
auto Error(event_token& token) -> void;

LocateAnchorsCompleted

Occurs when all the results from a watcher that is locating anchors are processed.

auto LocateAnchorsCompleted(LocateAnchorsCompletedDelegate const& handler) -> event_token;
auto LocateAnchorsCompleted(event_token& token) -> void;

OnLogDebug

Occurs when a debug log message is generated.

auto OnLogDebug(OnLogDebugDelegate const& handler) -> event_token;
auto OnLogDebug(event_token& token) -> void;

SessionUpdated

Occurs when all the session state is updated.

auto SessionUpdated(SessionUpdatedDelegate const& handler) -> event_token;
auto SessionUpdated(event_token& token) -> void;

TokenRequired

Occurs when the session requires an updated access token or authentication token.

auto TokenRequired(TokenRequiredDelegate const& handler) -> event_token;
auto TokenRequired(event_token& token) -> void;

UpdatedSensorFingerprintRequired

Occurs when the session requests an updated sensor fingerprint from the application.

auto UpdatedSensorFingerprintRequired(UpdatedSensorFingerprintRequiredDelegate const& handler) -> event_token;
auto UpdatedSensorFingerprintRequired(event_token& token) -> void;