BuildIt.Media.CortanaListener.HandleMediaElementCortanaCommands C# (CSharp) Method

HandleMediaElementCortanaCommands() public static method

public static HandleMediaElementCortanaCommands ( this args ) : Task
args this
return Task
            async Task<bool> HandleMediaElementCortanaCommands(this IActivatedEventArgs args)
        {
            try
            {
                switch (args.Kind)
                {
                    case ActivationKind.VoiceCommand:
                        var commandArgs = args as VoiceCommandActivatedEventArgs;

                        var voiceCommandName = commandArgs?.Result?.RulePath.FirstOrDefault();
                        if (string.IsNullOrWhiteSpace(voiceCommandName)) return false;
                        return await PlayerControls.Action(voiceCommandName);
                    case ActivationKind.Protocol:
                        var voiceCommaneNameUri = string.Empty;
                        var commandArgsUris = args as ProtocolActivatedEventArgs;
                        var uri = commandArgsUris?.Uri.AbsoluteUri.Split(new[] { '?' }, 2);
                        if (uri != null)
                        {
                            var keyValuePairs = uri[1].Split('&')
                                .Select(x => x.Split('='))
                                .Where(x => x.Length == 2)
                                .ToDictionary(x => x.First(), x => x.Last());
                            if (keyValuePairs.ContainsKey(LaunchContext))
                            {
                                voiceCommaneNameUri = keyValuePairs[LaunchContext];
                            }
                        }
                        //var words = uri?[1].Split(new char[] { '=' }, 2);
                        //var vCommandNameUri = words?[1];
                        //var voiceCommaneNameUri = commandArgsUris?.Uri.AbsoluteUri.Split(new char[] { '?' }, 2)?[1].Split(new char[] { '=' }, 2)?[1];
                        if (string.IsNullOrWhiteSpace(voiceCommaneNameUri)) return false;
                        return await PlayerControls.Action(voiceCommaneNameUri);
                    default:
                        return false;
                }
                //if (args.Kind != ActivationKind.VoiceCommand) return false;
                //var test = args as ProtocolActivatedEventArgs;
                //var commandArgs = args as VoiceCommandActivatedEventArgs;

                //var voiceCommandName = commandArgs?.Result?.RulePath.FirstOrDefault();
            }
            catch (Exception ex)
            {
                ex.LogException();
                return false;
            }
        }