void anchorPosted(String anchorNumber) { textView.Text = "Anchor Number: " + anchorNumber; currentStep = DemoStep.Choosing; cloudAnchorManager.Stop(); cloudAnchorManager = null; clearVisuals(); enableCorrectUIControls(); }
private async void advanceDemo() { switch (currentDemoStep) { case DemoStep.SaveCloudAnchor: AnchorVisual visual = anchorVisuals[""]; if (visual == null) { return; } if (!enoughDataForSaving) { return; } // Hide the back button until we're done RunOnUiThread(() => backButton.Visibility = ViewStates.Gone); setupLocalCloudAnchor(visual); try { await cloudAnchorManager.CreateAnchorAsync(visual.CloudAnchor); } catch (System.Exception ex) { anchorSaveFailed(ex.Message); } lock (progressLock) { RunOnUiThread(() => { scanProgressText.Visibility = ViewStates.Gone; scanProgressText.Text = ""; actionButton.Visibility = ViewStates.Invisible; statusText.Text = "Saving cloud anchor..."; }); currentDemoStep = DemoStep.SavingCloudAnchor; } break; case DemoStep.CreateSessionForQuery: cloudAnchorManager.Stop(); cloudAnchorManager.Reset(); clearVisuals(); RunOnUiThread(() => { statusText.Text = ""; actionButton.Text = "Locate anchor"; }); currentDemoStep = DemoStep.LookForAnchor; break; case DemoStep.LookForAnchor: // We need to restart the session to find anchors we created. startNewSession(); AnchorLocateCriteria criteria = new AnchorLocateCriteria(); criteria.SetIdentifiers(new string[] { anchorID }); // Cannot run more than one watcher concurrently stopWatcher(); cloudAnchorManager.StartLocating(criteria); RunOnUiThread(() => { actionButton.Visibility = ViewStates.Invisible; statusText.Text = "Look for anchor"; }); break; case DemoStep.LookForNearbyAnchors: if (anchorVisuals.Count == 0 || !anchorVisuals.ContainsKey(anchorID)) { RunOnUiThread(() => statusText.Text = "Cannot locate nearby. Previous anchor not yet located."); break; } AnchorLocateCriteria nearbyLocateCriteria = new AnchorLocateCriteria(); NearAnchorCriteria nearAnchorCriteria = new NearAnchorCriteria(); nearAnchorCriteria.DistanceInMeters = 5; nearAnchorCriteria.SourceAnchor = anchorVisuals[anchorID].CloudAnchor; nearbyLocateCriteria.NearAnchor = nearAnchorCriteria; // Cannot run more than one watcher concurrently stopWatcher(); cloudAnchorManager.StartLocating(nearbyLocateCriteria); RunOnUiThread(() => { actionButton.Visibility = ViewStates.Invisible; statusText.Text = "Locating..."; }); break; case DemoStep.End: foreach (AnchorVisual toDeleteVisual in anchorVisuals.Values) { var _ = cloudAnchorManager.DeleteAnchorAsync(toDeleteVisual.CloudAnchor); } destroySession(); RunOnUiThread(() => { actionButton.Text = "Restart"; statusText.Text = ""; backButton.Visibility = ViewStates.Visible; }); currentDemoStep = DemoStep.Restart; break; case DemoStep.Restart: startDemo(); break; } }