CrossRoadスマートフォン用の表示で見るCrossRoadAR、MR、VR、Babylon.jsを中心とした技術ブログ。API(Android用)を使う方法(Unity側の構築手順)Unity前回の続きです。Studio側で準備する内容を解説しました。今回はUnity側の手順を解説します。プロジェクト作成&フォルダ構成を変更するまずはUnityで新規プロジェクトを作成します。続いて、Assets以下のフォルダ構成を以下のように変更します。Pluginsフォルダ以下はスペルミスすると動かないので、ご注意ください。AndroidManifest.xmlとSpeechSDK.jarを追加AndroidManifest.xmlは、Unity標準のものを使います。下記からドラッグ&ドロップします。Files\Unity\Editor\Data/PlaybackEngines/AndroidPlayer/Apk/AndroidManifest.xml配置後、下記のようにpermissionやserviceを追加します。Studio側のプロジェクトから取り出します。Studio側でビルドすると、以下に生成されています。Studio側のプロジェクトから取り出します。これはビルドと関係なくプロジェクトに配置されていますが、下記の中にも入っています。libandroid_platform.soこれを、Plugins/Android/libs/armeabi-v7aフォルダの中に入れます。(注)Unityは基本的にフォルダ構成を気にせず開発できますが、いくつかのフォルダ名は予約語扱いされており、その名前にしないと動きません。今回のフォルダ名は予約語扱いされているので、この名前にしてください。下記のwavとxmlファイルを、Plugins/Android/assets/Plugins/Android/res/values/に入れます。Studioでビルドしたjarファイル(初期ファイル名はclasses.jar)を追加します。名称は何でもよいです。意味はありませんが、他のアセットを調べた時、plugins.jarとなっていたので、この名前に変更してから入れました。入れる場所は、Plugins/Androidの中です。ManifestファイルManifestファイルの、<permission>と<service>にいくつか追加します。<permission>は、元のサンプルの記述をそのまま使っています。<service>は、今回向けに追加したものです。C#このようなスクリプトを作ります。今回、個々のpublicメソッドは、uGUIのボタンから呼ぶようにしてみました。gistf29682214864ad95cff9172847fe4268また、onCallbackResultメソッドは、Androidのjavaでこのように書くことで、java側から呼んでいます。Gameobjectを作り、そこにアタッチします。uGUIでボタンを作成する作ったボタンで、C#のメソッドを呼ぶように設定します。ここで、Canvas以下の要素について説明します。:音声認識結果を表示StartBindServiceボタン:bindServiceを開始。Test1.csのbindService_Startメソッドを呼ぶ。StopBindServiceボタン:bindServiceを停止。Test1.csのbindService_Stopメソッドを呼ぶ。StartRecognitionボタン:音声認識を開始。Test1.csのstartRecognitionメソッドを呼ぶ。Settingsで通常のAndroidアプリをビルドするときの手順と同じように進めます。identifierは任意の名称で大丈夫です。Studioで作ったときのpackage名と合わせる必要はありません。5.0.1)にインストールし、BindServiceボタン、StartRecognitionボタンの順に押してから「これで動きました」と話しかけてみました。「マイクロソフトコグニティブサービス」と話しかけた結果です。Textは、以前書いたように、これまで試した音声認識エンジンの中で、認識精度と速度が最も速いです。Unityで使えるようにすると、色々と応用範囲が広がると思います。今回、あまり情報がないことで時間がかかった面もあるので、本記事を含む4種類の記事で実装方法やトラブル対応集を整理しました。合わせてご参照いただければと思います。今回のサンプルコードをGithubで公開しました。手順についてはブログの該当記事を参照してください。Studioでビルドし、ビルドで生成されたclasses.jar(念のため名前をplugins.jarなどに変更した方が良いかもしれません)を、UnityのPlugins/Androidに入れるだけです。更新GitHubに置いたサンプルコードで補足説明が必要な個所がありました。・keyを入力する方法が書いていない->AndroidStudio側のMainActivity.javaで、getPrimaryKey()、getLuisAppId()、getLuisSubscriptionID()メソッドの戻り値には、それぞれのkeyを直接入力してください。本来はstring.xmlから読み出すのですが、今回の実装ではstring.xmlからの呼び出しがうまくいっていないためです。2018の11日目の投稿です。»ProfileAR、MR、VR、Babylon.jsを中心とした技術ブログです。広く色々な技術を勉強するのが好きで、あれこれ書いています。詳細なプロフィールはこちらをご確認ください。2020)■プライバシーポリシー■こちらに記載しておりますのでご確認ください。■お問い合わせ■こちらよりお願いいたします。月別アーカイブスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。