示例#1
0
        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));
        }