/// <summary> /// Raises when the load button is clicked. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnLoadGesturesClick(object sender, RoutedEventArgs e) { using (System.Windows.Forms.FolderBrowserDialog dialog = new System.Windows.Forms.FolderBrowserDialog()) { if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { m_pGestureRecognizer = new GestureRecognizer(dialog.SelectedPath); m_pGestures = new ObservableCollection<IavaGesture>(GestureFolderReader.Read(dialog.SelectedPath)); foreach (IavaGesture g in m_pGestures) { m_pGestureRecognizer.Subscribe(g.Name, OnGestureDetected); } this.lstGestures.ItemsSource = m_pGestures; btnStartTest.IsEnabled = true; } } }
/// <summary> /// Default Constructor /// </summary> public MainWindow() { InitializeComponent(); const string gesturesPath = @"..\..\..\Gestures\"; m_pGestureRecognizer = new Gesture.GestureRecognizer(gesturesPath); m_pAudioRecognizer = new AudioRecognizer(); m_pAudioRecognizer.AudioConfidenceThreshold = 0.8f; // Initialize the CityLocations class by calling a method on it CityLocations.GetCityLocation("test"); // Events m_pAudioRecognizer.StatusChanged += OnAudioRecognizerStatusChanged; m_pGestureRecognizer.StatusChanged += OnGestureRecognizerStatusChanged; m_pAudioRecognizer.Synced += OnAudioRecognizerSynced; m_pGestureRecognizer.Synced += OnGestureRecognizerSynced; m_pAudioRecognizer.Unsynced += OnAudioRecognizerUnsynced; m_pGestureRecognizer.Unsynced += OnGestureRecognizerUnsynced; // Gesture Callbacks string[] mappedGestureNames = new[] { "Zoom In", "Zoom Out", "Swipe Left", "Swipe Right", "Swipe Up", "Swipe Down" }; m_pGestureRecognizer.Subscribe(mappedGestureNames[0], GestureZoomInCallback); m_pGestureRecognizer.Subscribe(mappedGestureNames[1], GestureZoomOutCallback); m_pGestureRecognizer.Subscribe(mappedGestureNames[2], GestureSwipeLeftCallback); m_pGestureRecognizer.Subscribe(mappedGestureNames[3], GestureSwipeRightCallback); m_pGestureRecognizer.Subscribe(mappedGestureNames[4], GestureSwipeUpCallback); m_pGestureRecognizer.Subscribe(mappedGestureNames[5], GestureSwipeDownCallback); // Add unmapped gestures so that they will be recognized foreach (IavaGesture gesture in GestureFolderReader.Read(gesturesPath)) { if (!Equals("Sync", gesture.Name) && !mappedGestureNames.Contains<string>(gesture.Name)) { m_pGestureRecognizer.Subscribe(gesture.Name, GestureUnmappedCallback); } } // Audio Callbacks m_pAudioRecognizer.Subscribe("Zoom In", ZoomInCallback); m_pAudioRecognizer.Subscribe("Zoom Out", ZoomOutCallback); m_pAudioRecognizer.Subscribe("Move North", MoveNorthCallback); m_pAudioRecognizer.Subscribe("Move South", MoveSouthCallback); m_pAudioRecognizer.Subscribe("Move East", MoveEastCallback); m_pAudioRecognizer.Subscribe("Move West", MoveWestCallback); m_pAudioRecognizer.Subscribe("Exit Application", BlowUp); m_pAudioRecognizer.Subscribe("Locate *", LocateCityCallback); m_pAudioRecognizer.Subscribe("Get Recognizer Statuses", GetRecognizerStatusesCallback); IavaCamera.ImageFrameReady += OnCameraImageFrameReady; IavaCamera.SkeletonFrameReady += OnCameraSkeletonFrameReady; m_pAudioSyncTimer = new System.Timers.Timer(1000); m_pAudioSyncTimer.Elapsed += OnAudioSyncTimerElapsed; m_pGestureSyncTimer = new System.Timers.Timer(1000); m_pGestureSyncTimer.Elapsed += OnGestureSyncTimerElapsed; m_pConsoleTxtBox = new TextBoxStreamWriter(this.txtConsole); Console.SetOut(m_pConsoleTxtBox); // UI theme stuff... lblAudioStatus.Background = lblGestureStatus.Background = unsyncedBrush; lblAudioSyncTime.Background = lblGestureSyncTime.Background = backgroundBrush; lblAudioTTL.Background = lblGestureTTL.Background = backgroundBrush; }
public void OnGestureRecognizedTest() { try { GestureRecognizer recognizer = new GestureRecognizer(_directoryPath); bool syncEventFired = false; bool waveCallbackInvoked = false; bool shakeCallbackInvoked = false; // Set the Sync Gesture PrivateObject privateObject = new PrivateObject(recognizer); privateObject.SetProperty("SyncGesture", new IavaGesture("Sync", new List<IavaSnapshot>())); // Register for some Gestures recognizer.Synced += (parm1, param2) => { syncEventFired = true; }; recognizer.Subscribe("Wave", (eventArgs) => { waveCallbackInvoked = true; }); recognizer.Subscribe("Shake", (eventArgs) => { shakeCallbackInvoked = true; }); recognizer.Start(); try { // Recognize the Wave gesture privateObject.Invoke("OnGestureRecognized", null, new GestureEventArgs("Wave")); Thread.Sleep(50); // Make sure the Wave callback fired Assert.IsTrue(waveCallbackInvoked); } catch (Exception ex) { Assert.Fail(ex.Message); } try { // Recognize the Shake gesture privateObject.Invoke("OnGestureRecognized", null, new GestureEventArgs("Shake")); Thread.Sleep(50); // Make sure the Shake callback fired Assert.IsTrue(shakeCallbackInvoked); } catch (Exception ex) { Assert.Fail(ex.Message); } try { // Recognize the Sync gesture privateObject.Invoke("OnGestureRecognized", null, new GestureEventArgs("Sync")); Thread.Sleep(50); // Make sure the Sync event fired, Assert.IsTrue(syncEventFired); } catch (Exception ex) { Assert.Fail(ex.Message); } try { // Reset the Sync, Wave, and Shake callbacks syncEventFired = false; waveCallbackInvoked = false; shakeCallbackInvoked = false; // Recognize the Wave gesture again privateObject.Invoke("OnGestureRecognized", null, new GestureEventArgs("Wave")); Thread.Sleep(50); // Make sure the Wave callback fired Assert.IsTrue(waveCallbackInvoked); // Recognize the Shake gesture again privateObject.Invoke("OnGestureRecognized", null, new GestureEventArgs("Shake")); Thread.Sleep(50); // Make sure the Shake callback fired Assert.IsTrue(shakeCallbackInvoked); } catch (Exception ex) { Assert.Fail(ex.Message); } recognizer.Stop(); } catch (Exception ex) { Assert.Fail(ex.Message); } }