protected override async void OnActivated()

in FamilyNotes/App.xaml.cs [148:252]


        protected override async void OnActivated(IActivatedEventArgs args)
        {
            base.OnActivated(args);

            Type navigationToPageType;

            VoiceCommandObjects.VoiceCommand navCommand = null;

            // Voice command activation.
            if (args.Kind == Windows.ApplicationModel.Activation.ActivationKind.VoiceCommand)
            {
                // Event args can represent many different activation types. 
                // Cast it so we can get the parameters we care about out.
                var commandArgs = args as VoiceCommandActivatedEventArgs;

                Windows.Media.SpeechRecognition.SpeechRecognitionResult 
                    speechRecognitionResult = commandArgs.Result;

                // Get the name of the voice command and the text spoken. 
                // See VoiceCommands.xml for supported voice commands.
                string voiceCommand = speechRecognitionResult.RulePath[0];
                string textSpoken = speechRecognitionResult.Text;

                // commandMode indicates whether the command was entered using speech or text.
                // Apps should respect text mode by providing silent (text) feedback.
                string commandMode = this.SemanticInterpretation("commandMode", speechRecognitionResult);

                switch (voiceCommand)
                {
                    case "addNewNote":

                        // Create a navigation command object to pass to the page. 
                        navCommand = new VoiceCommandObjects.VoiceCommand();
                        navCommand.CommandMode = commandMode;
                        navCommand.VoiceCommandName = voiceCommand;
                        navCommand.TextSpoken = textSpoken;

                        // Set the page to navigate to for this voice command.
                        // App is a single page app at this time.
                        navigationToPageType = typeof(MainPage);
                        break;
                    case "addNewNoteForPerson":

                        // Create a navigation command object to pass to the page. 
                        // Access the value of the {person} phrase in the voice command
                        string noteOwner = this.SemanticInterpretation("person", speechRecognitionResult);
                        navCommand = new VoiceCommandObjects.VoiceCommand();
                        navCommand.CommandMode = commandMode;
                        navCommand.VoiceCommandName = voiceCommand;
                        navCommand.TextSpoken = textSpoken;
                        navCommand.NoteOwner = noteOwner;

                        // Set the page to navigate to for this voice command.
                        // App is a single page app at this time.
                        navigationToPageType = typeof(MainPage);
                        break;
                    default:
                        // If we can't determine what page to launch, go to the default entry point.
                        navigationToPageType = typeof(MainPage);
                        break;
                }
            }
            // Protocol activation occurs when a card is clicked within Cortana (using a background task).
            else if (args.Kind == ActivationKind.Protocol)
            {
                // No background service at this time.
                navigationToPageType = typeof(MainPage);
            }
            else
            {
                // If we were launched via any other mechanism, fall back to the main page view.
                // Otherwise, we'll hang at a splash screen.
                navigationToPageType = typeof(MainPage);
            }

            // Repeat the same basic initialization as OnLaunched() above, 
            // taking into account whether or not the app is already active.
            Frame rootFrame = Window.Current.Content as Frame;

            // Do not repeat app initialization when the Window already has content,
            // just ensure that the window is active
            if (rootFrame == null)
            {
                // Create a Frame to act as the navigation context and navigate to the first page
                rootFrame = new Frame();

                rootFrame.NavigationFailed += OnNavigationFailed;

                if (args.PreviousExecutionState != ApplicationExecutionState.Running &&
                    args.PreviousExecutionState != ApplicationExecutionState.Suspended)
                {
                    await LoadModelAndSettingsAsync();
                }

                // Place the frame in the current Window
                Window.Current.Content = rootFrame;
            }

            // Since we're expecting to always show the home page, navigate even if 
            // a content frame is in place (unlike OnLaunched).
            rootFrame.Navigate(navigationToPageType, navCommand);

            // Ensure the current window is active
            Window.Current.Activate();
        }