async private void RequestCapability() { Windows.Security.Authorization.AppCapabilityAccess.AppCapability cap = Windows.Security.Authorization.AppCapabilityAccess.AppCapability.Create("webcam"); accessStatus = await cap.RequestAccessAsync(); capabilityInitialized = true; }
private async void StartTracking() { Windows.Security.Authorization.AppCapabilityAccess.AppCapability cap = Windows.Security.Authorization.AppCapabilityAccess.AppCapability.Create("webcam"); var accessStatus = await cap.RequestAccessAsync(); var result = _qrCodesManager.StartQRTracking(); Debug.Log("Started qr tracker: " + result.ToString()); }
private async Task <QRTrackerStartResult> StartQRTrackingAsyncImpl(CancellationToken token) { #if WINDOWS_UWP DebugLog("Requesting webcam capability"); Windows.Security.Authorization.AppCapabilityAccess.AppCapability cap = Windows.Security.Authorization.AppCapabilityAccess.AppCapability.Create("webcam"); var accessTask = cap.RequestAccessAsync().AsTask(); var completedTask = await Task.WhenAny(accessTask, Task.Delay(-1, token)); var accessStatus = (accessTask == completedTask) ? accessTask.Result : Windows.Security.Authorization.AppCapabilityAccess.AppCapabilityAccessStatus.DeniedBySystem; if (accessStatus != Windows.Security.Authorization.AppCapabilityAccess.AppCapabilityAccessStatus.Allowed) { DebugLog("Failed to obtain webcam capability for qr code tracking"); } else { DebugLog("Webcam capability granted."); } #endif // Note: If the QRTracker is created prior to obtaining the webcam capability, initialization will fail. if (qrTracker == null) { DebugLog("Creating qr tracker"); qrTracker = new QRTracker(); qrTracker.Added += QrTracker_Added; qrTracker.Updated += QrTracker_Updated; qrTracker.Removed += QrTracker_Removed; } if (!token.IsCancellationRequested && !IsTrackerRunning) { StartResult = qrTracker.Start(); if (StartResult == QRTrackerStartResult.Success) { DebugLog("Successfully started qr tracker"); IsTrackerRunning = true; } else { Debug.LogWarning("Failed to start qr tracker: " + StartResult.ToString()); } } return(await Task.FromResult(StartResult)); }