Blog


USB接続でアプリを起動するには

自動再生コンテンツ

自動再生デバイスとは、初めてUSBメモリなどのデバイスが接続されたときにどのプログラムを使うかを選択することで次回以降接続されたときに自動でプログラムが起動できる機能です。

1

通常はexplolerなどを登録することでファイル閲覧をすることができますが、この自動再生コンテンツにストアアプリを登録することができます。

 

マニフェストファイルを編集する

自動再生コンテンツに登録するには、マニフェストファイルの宣言タブで「自動再生コンテンツ」を追加します。

動詞は、OnFileActivatedメソッドにパラメータとして渡されます。

アクション表示名とは、自動再生が起動したときに表示される名前です。

コンテンツイベントとは、あらかじめ決まっている文字列を記入する必要があります。

以下のデベロッパーセンターに書いてる一覧から選びます。

自動再生コンテンツ -Windowsデベロッパーセンター

 

今回はUSBのStorageにアクセスしたいので「StorageOnArrival」を指定します。

2

 

さらに、宣言タブでファイルの関連付けを追加します。

今回はUSBメモリ内のjpgファイルを列挙しようと思うので.jpgを指定します。

WindowsRuntimeでは関連付けに登録された拡張子のファイルしか認識することができません。

ですので、USBメモリ内のファイルを列挙したい場合、その拡張子をあらかじめ登録する必要があります。

3

 

さらに、機能タブから、リムーバブル領域にチェックを入れ、アクセスを許可します。

4

 

 

OnFileActivatedメソッドをオーバーライドする

以上でUSBが接続されたときに、自動再生でアプリを選択することができます。

次は自動再生でアプリが起動したときのアクションを追加します。

 

自動再生による起動は、App.xaml.csのOnFileActivatedメソッドが呼ばれます。

OnFileActivatedメソッドをoverrideしましょう。

 

FileActivatedEventArgsのVerbプロパティには、マニフェストファイルの自動再生コンテンツで指定した動詞の文字列が渡されます。

先ほど自動再生コンテンツで”storage”と指定したのでVerbが”storage”の場合、自動再生コンテンツで起動したことが判断できます。

 

自動再生コンテンツの場合、FilePage1.xamlを作ってそのページに遷移しましょう。

FileActivatedEventArgsのFilesプロパティにファイル一覧が渡されるのでそれをナビゲーションパラメータとしてわたしましょう。

 

遷移先のFilePage1.xamlのOnNavigatedToメソッドで、パラメータのFileListを取得します。

 

FilePage1.xamlのXamlはこんな感じで

 

これでアプリがインストールされたデバイスには、USBメモリが刺さると自動再生でファイル一覧を列挙することができます。

5




プロジェクト内にあるファイルを取得するには

getFileFromApplicationUriAsyncメソッド

プロジェクト内にある画像リソースなどをStorageFile型で取得したいときはStorageFileクラスのgetFileFromApplicationUriAsyncメソッドを使用します。

 

 

ms-appx:/// はプロジェクトのルートディレクトリを表します。

ms-appx:///の後にプロジェクト内のリソースのパスを指定することでStorageFileを取得することができます。




Cortanaで音声コマンドを使うには(WindowsPhone)

Cortana

WindowsPhone8.1から、Cortanaという音声認識エージェントが導入され、Cortanaに向かって話すと、様々な処理をしてくれます。

 

10

 

 

Cortanaには音声コマンドを登録することができ、予め特定の音声コマンドを登録しておくとあとはユーザーがCortanaにむかって話しかけるだけでアプリを起動してくれます。

11

 

Cortanaを使用する

WindowsPhone8.1では日本語ではCortanaを使用することができません。

もちろん日本語の音声認識や音声コマンドは現在利用することができません。

 

Cortanaは現在日本語では使用できないのでシステムの設定から、言語を英語、地域をUnitedStatesに変更するとCortanaがWindowsPhoneで使えるようになります。

 

設定→言語から、Englishを選択し、電話を再起動のボタンを押し、再起動します。

1

 

 

電話を再起動できたら、次に地域の設定をします。

設定からregion→UnitedStatesに変更し、再起動します。

 

 

2

 

これでアプリ一覧にCortanaが出現します。

3

 

VCD(Voice Command Definition)を記述する

VCDファイルとはCortanaに認識させたい音声コマンドを記述したxmlファイルです。

以下にサンプルのVCDを示します。

CommandPrefixタグ

CommandPrefixはアプリの別名です。Cortanaによる音声コマンドは、[アプリ名] [パラメータ]のように発音しますが、このアプリ名の部分を任意のものに置き換えることができます。

Exampleタグ

Exampleはコマンドのサンプルです。Cortanaを起動して、see moreをタップすると出てくるアプリの呼び方のサンプルにここの文字列が含まれます。

 

Comandタグ

一つの音声コマンドはCommandタグで定義されます。

Exampleタグはサンプルを指定します。

ListenForタグ

ListenForは認識したい音声コマンドを指定します。

[]でくくられた部分は固定値を表します。また、{}は同じxml内のLabel属性を参照します。

 

[]でTell meをくくることによって、Tell meという固定値を表し、{}でmsgTextをくくることで同じxml内のPharaseTopicタグのmsgTextラベルを指定します。

Label属性がmsgTextなタグは、Senario属性にShort Messageとあります。こう指定することで任意のショートメッセージとなります。

 

つまり、ListenForの部分を [Tell me ]{msgText} とすることで、”アプリ名 Tell me 任意のメッセージ”というパターンを認識することができます。

Feedbackタグ内では、認識し終わった後に返すメッセージです。

Navigateタグ

Navigateタグは音声認識後、遷移したいxamlページを指定します。

しかしNavigateタグにxamlを指定しても実際に遷移してくれることはなく、認識後にパラメータとして渡されるだけです。

 

Cortanaにコマンドを登録する

VCDファイルを作成することができたら、アプリ起動時にCortanaに音声コマンドを登録するようにしましょう。

StorageFileのGetFileFromApplicationUriAsyncメソッドでVDCファイルを取得し、

VoiceCommandManagerのInstallCommandFromStorageFileAsyncメソッドで音声コマンドを登録します。

 

 

音声コマンドによるアプリの起動を制御する

Cortanaに上記の処理でコマンドを登録したあとは、Cortanaに向かって音声コマンドをいうと特殊な操作でアプリを起動することができます。

App.xaml.csのOnActivatedメソッドをオーバーライドし、下記の処理を追加します。

Cortanaの音声コマンドによるアプリの起動は、引数としてActivationKind.VoiceCommandという値が送られてくるので判断することができます。

SpeechRecognitionResult型の値を取得し、Textプロパティは送られてきた音声コマンドを表し、Statusプロパティは認識できたかどうかを表します。

 

SemanticInterpretation.PropertiesはVCDに指定した様々な値を取得することができます。

その中でもNavigationTargerはVCDに指定したxamlページの文字列が返ってくるのでそれに応じてページ遷移を行いましょう。

 

Cortanaで音声コマンドを実行してみる

ここまでできたら、マニフェストファイルの機能タブにマイクの使用許可を与え、実行してみます。

2

 

 

まず起動時にCortanaに音声コマンド登録を行います。

3

 

その後、Cortanaを起動し、音声コマンドを入力します。

今回の場合ListenForに [Tell me] {msgText} と指定したので、”TestCortana Tell me hogehoge”と入力すれば起動できるはずです。

5

今回はTestCortana Tell me WindowsPhoneと入力してみます。

音声コマンドがうけとられ、Cortanaを起動することができました。

6