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;
}
}