WP 8.1 Cortana音声コマンドVCDファイル設計

7500 ワード

Windows Phone 8.1のCortanaは、音声方式でアプリケーションを開き、設定し、ページジャンプ、タスクを実行することができます。
まずVCDファイルを作成します。
<?xml version="1.0" encoding="utf-8" ?> 



<VoiceCommands xmlns="http://schemas.microsoft.com/voicecommands/1.1">

 <!--1.0 ,  PhraseTopic  ,          ;  1.1      -->
<CommandSet xml:lang="zh-cn" Name="CommanSet1">  <!-- --> <CommandPrefix> </CommandPrefix>  <!-- , ( )--> <Example> </Example>   <!-- Cortana -->

  <!-- --> <!-- -->

    <Command Name="Command1">
      <Example> </Example>
      <ListenFor> </ListenFor>
      <Feedback> </Feedback>
      <Navigate/>
    </Command>

<Command Name="Command2"> <Example> + { }</Example> <ListenFor> {ExpressName}</ListenFor>   <Feedback> {ExpressName}</Feedback>   <Navigate/> </Command> <Command Name="Command3"> <Example> + { } + { }</Example> <ListenFor>[ ] {ExpressName} [ ][ ] {order}</ListenFor> <!-- [] --> <Feedback> {ExpressName} :{order}</Feedback> <Navigate/> </Command> <!--0 --> <PhraseList Label="ExpressName"> <!-- {} ListenFor、Feedback --> <Item> </Item> <Item> </Item> <Item> </Item> </PhraseList> <PhraseTopic Label="order" Scenario="Short Message">  <!-- --> <Subject>Order</Subject> </PhraseTopic> </CommandSet> </VoiceCommands>
上のVCDファイルの中の3つの音声コマンド機能:
Commund 1:「速達スキャンバーコード」を識別してスキャンページにジャンプします。
Command 2: 「宅配便の問い合わせ」を識別してホームページに移動し、識別される宅配便の名前。      {速達の名前}申通、丸通、順豊の中の一つです。
Command 3:「宅急便[照会]{宅急便名}[運送状][運送状番号]{自分で言ったら、ここは運送状番号です}」を識別します。      []あってもなくてもいいです
この三つの命令はすべてを表すことができるでしょう。 
 
 VCDファイルが作成されたら、VCDファイルのホームページを初期化します。
using Windows.Media.SpeechRecognition;



protected async override void OnNavigatedTo(NavigationEventArgs e)

        {

            base.OnNavigatedTo(e);

            if (VoiceCommandManager.InstalledCommandSets.Count == 0)

            {

                StorageFile file = await Windows.ApplicationModel.Package.Current.

                    InstalledLocation.GetFileAsync("VoiceCommand.xml");

                await VoiceCommandManager.InstallCommandSetsFromStorageFileAsync(file);

            }

    }
Cortanaから音声コマンドを実行します。
アプリ.cs中
protected override void OnActivated(IActivatedEventArgs args)

        {

            if (args.Kind == ActivationKind.VoiceCommand)  //          

            {

                VoiceCommandActivatedEventArgs voiceCommandArgs = args as VoiceCommandActivatedEventArgs;

                Frame rootFrame = new Frame();

           string result = voiceCommandArgs.Result.Text;  //          
         if (result.Contains(" "))
                 rootFrame.Navigate(typeof(MainPage), voiceCommandArgs);// ,
  else if (result.Contains(" "))   rootFrame.Navigate(typeof(BarCodeScanPage)); else if (result.Contains(" "))
                    rootFrame.Navigate(typeof(MainPage), voiceCommandArgs);
Window.Current.Content = rootFrame; Window.Current.Activate(); } }
これで完成しました。娜さんは本当に使いやすいです。これからも音声コマンドをサポートするところが多いでしょう。