예제 #1
0
        public QRTrackerStartResult StartQRTracking()
        {
            if (qrTracker == null)
            {
                Debug.Log("Creating qr tracker");
                qrTracker          = new QRTracker();
                qrTracker.Added   += QrTracker_Added;
                qrTracker.Updated += QrTracker_Updated;
                qrTracker.Removed += QrTracker_Removed;
            }

            if (!IsTrackerRunning)
            {
                StartResult = (qrTracker.Start());
                if (StartResult == QRTrackerStartResult.Success)
                {
                    IsTrackerRunning = true;
                    QRCodesTrackingStateChanged?.Invoke(this, true);
                }
                else
                {
                    Debug.LogWarning("Failed to start qr tracker: " + StartResult.ToString());
                }
            }

            return(StartResult);
        }
예제 #2
0
 public QRTrackerStartResult StartQRTracking()
 {
     if (!IsTrackerRunning)
     {
         StartResult = (qrTracker.Start());
         if (StartResult == QRTrackerStartResult.Success)
         {
             IsTrackerRunning = true;
         }
     }
     return(StartResult);
 }
        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));
        }
예제 #4
0
        public QRTrackerStartResult StartQRTracking()
        {
            if (qrTracker != null && !IsTrackerRunning)
            {
                int tries = 0;
                do
                {
                    Debug.Log("QRCodesManager starting qrtracker");
                    StartResult = (qrTracker.Start());
                    Debug.Log("QRCodesManager starting qrtracker result:" + StartResult);
                    if (StartResult == QRTrackerStartResult.DeviceNotConnected)
                    {
                        System.Threading.Thread.Sleep(500);
                    }
                } while (++tries <= 3);

                if (StartResult == QRTrackerStartResult.Success)
                {
                    IsTrackerRunning = true;

                    var handlers = QRCodesTrackingStateChanged;
                    if (handlers != null)
                    {
                        handlers(this, true);
                    }
                }
            }
            else
            {
#if WINDOWS_UWP
                if (accessStatus == Windows.Security.Authorization.AppCapabilityAccess.AppCapabilityAccessStatus.DeniedByUser ||
                    accessStatus == Windows.Security.Authorization.AppCapabilityAccess.AppCapabilityAccessStatus.DeniedBySystem)
                {
                    StartResult = QRTrackerStartResult.AccessDenied;
                    Debug.Log("QRCodesManager starting qrtracker result:" + StartResult);
                }
#endif
            }
            return(StartResult);
        }