Windows phone 8 這個新平台帶給我們的驚喜還是很多的,其中內建支援中文語音命令,這點讓人印象深刻.
我們可以通過編碼為WP8程式添加語音互動的功能.比如情境如下:
拿人人用戶端舉例:使用者可以任意介面長按home,然後對著手機說:"人人 髮狀態"那麼這種情境下如果微博內部進行了處理,便可以相應並進入狀態發佈頁面。如此是很棒的使用者體驗。那麼我們要如何處理呢?
下面我們來類比下這個情境(事實上人人用戶端確實支援語音命令:-))
實現
1、配置語音控制檔案
需要配置如下xml檔案:
<?xml version="1.0" encoding="utf-8"?> <VoiceCommands xmlns="http://schemas.microsoft.com/voicecommands/1.0"><CommandSet xml:lang="zh-cn"><CommandPrefix>人人</CommandPrefix><Example> 人人 髮狀態 </Example> <Command Name="Navigate"><Example> 人人 髮狀態 </Example><ListenFor> {Action} </ListenFor><Feedback> 正在 {Action}... </Feedback><Navigate Target="/Views/EditPage.xaml?Type=2&from=voiceCommand"/></Command> <PhraseList Label="Action"><Item> 髮狀態 </Item><Item> 狀態 </Item></PhraseList></CommandSet></VoiceCommands>
我們分別看下檔案中的結點對應的含義:
首先xml:lang這裡由於我們要識別中文命令,那麼需要將語言設定為zh-cn
CommandPrefix:命令的首碼 語音命令由首碼和具體命令組成
Example: 命令的例子,這個將出現在如下介面表示能識別的語音的例子
Command:一個command標籤代表一個識別的命令
ListenFor:這個裡面使用了{Action} Action在後面的PhraseList裡面有定義,表明要識別
的命令為下面之一
FeedBack:這個是使用者說完話之後系統說給使用者的一段話
Navigate Target 故名思議,就是識別命令後要導航的程式內的目的地址(注意下由於我們的設定檔是xml類型所以當導航參數多的時候需要對&進行轉義)
ParaseList:前面提到的要識別的命令,我們可以在其中加入任何想識別的文字比如<Item>走你</Item>
對這個檔案的簡單解釋就到這裡,這種設定檔的結構,我們在用戶端內,只需要將VoiceCommand的處理方式和Second Tile保持一致即可
2、添加此檔案到工程中(這步簡單不用說了)
3、在用戶端內添加初始化命令的代碼
await VoiceCommandService.InstallCommandSetsFromFileAsync(new Uri("ms-appx:///Voice.xml",UriKind.Absolute));
此處有一點需要注意,這裡需要使用上面格式的絕對路徑,否則報錯,具體原因是因為Uri類型問題(有興趣的朋友可以自己找下先關文檔)
另附上msdn對此處的文檔:
http://msdn.microsoft.com/zh-cn/library/windowsphone/develop/jj206959(v=vs.105).aspx
如此我們便輕鬆添加語音控制到我們的程式,對於更高的業務需求本文沒有涉及,只是讓大家簡單的瞭解下windows phone 8 的語音控制
如有問題歡迎與我留言交流,或者加入QQ群:182659848