VDC 5th - NTTドコモ ハンズオン資料

778 views

Published on

第五回ビュージックス デベロッパーズ カンファレンスで利用した資料になります。

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
778
On SlideShare
0
From Embeds
0
Number of Embeds
29
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

VDC 5th - NTTドコモ ハンズオン資料

  1. 1. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved 1 デバイスコネクトWebAPIによる M100向けWeb開発の実現 【ハンズオン①】
  2. 2. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved WebAPIにより、スマートフォンアプリやWebブラウザからの様々な ウェアラブル・IoT機器利用を実現するフレームワーク 1. デバイスコネクトWebAPIとは スマートウォッチ スマートグラス HDMIドングル 健康機器 無線LAN搭載カメラ スマートトイホームコントロール スマホ アプリ Web アプリ 2 S社スマートウォッチ Androidホスト Pebble S社Wifiカメラ ヘルスケア AndroidWear ・ ・ ・ プラグイン 対応機器 W e b A P I スマートフォン/タブレット(Android、iOS) 個々のデバイスの開発環境・ 通信プロトコルの差異を吸収 スマートフォン上で動作する 擬似的なWebAPIにより、OSに 依存しない共通動作を実現 デバイスコネクト
  3. 3. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved 1.1 従来のコンテンツの実現方法 3 Webアプリ (HTML5+Javascript) WebView フレームワーク ライブラリ Kernel デバイス ネイティブ アプリ スマートフォンOS ハイブリッドアプリ ネイティブ アプリ同様に 任意の機能 が利用可能 任意の機能 が利用可能 ネイティブ/ハイブリッドアプリ からのデバイス利用 Webアプリ (HTML5+Javascript) Webブラウザ フレームワーク ライブラリ Kernel デバイス スマートフォンOS インターネット上のWebサイト Webアプリ (HTML5+Javascript) Webアプリ (HTML5+Javascript) 利用できる 機能がWeb ブラウザの 仕様に依存 HTML5で 規定された デバイスAPI のみ 一般的なWebアプリ(Webブラウザ) からのデバイス利用 ・ネイティブアプリ ・・・OS、開発環境に依存 ・ハイブリッドアプリ ・・・制限が少ないが、機能は組み込むWebviewフレームワークに依存し、開発言語も限られる ・ブラウザ(HTML5) ・・・機能がブラウザでできる事に限られる
  4. 4. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved ・スマートフォン上で動作する仮想サーバによりIP層を経由することでブラウザからでも 高度な機能を実現 ・アプリからも同様に利用可能 1.2 デバイスコネクトでの仕組み 4 フレームワーク ライブラリ Kernel デバイス Android OS デバイスコネクトWebAPI (ネイティブアプリ) 仮想サーバ IPネット ワーク層 Webブラウザ インターネット上のWebサイト Webアプリ (HTML5+Javascript) Webアプリ (HTML5+Javascript) Webアプリ (HTML5+Javascript) IP-NW経由 で仮想サーバに アクセス ネイティブ アプリとして 任意の機能 が利用可能 拡張プラグインC 拡張プラグインB 拡張プラグインA デバイスアクセス要求 を各デバイスの制御 命令に変換 (プラグインで拡張)
  5. 5. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved 5 1.3 様々な観点からのセキュリティ対策も実施 http://member.openmobilealliance.org/ftp/public_documents/cd/CD-GotAPI/2015/ OMA-CD-GotAPI-2015-0003R01-INP_Introduction_to_GotAPI_1.0__Tutorial_.zip
  6. 6. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved 6 ・デバイスコネクトの実行環境を用意すれば、 Webサイト としてコンテンツを作成してM100から利用可能 ・M100上だけでなく、PCやスマートフォンのWebブラウザ からもM100が制御できる ・OMA※1にてGotAPI※2として国際標準規格化を実現、 MWC2015※3ではOMAブースにてVuzix社がデモ出展 ※1 Opne Mobile Alliance 携帯電話の標準化団体 ※2 GotAPI:Generic Open Terminal API ※3 モバイル関連では世界最大規模の展示会 1.4 デバイスコネクトのM100での利用
  7. 7. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved 7 ・スマートフォンをハブにして腕時計型の心拍数計の情報をM100に表示 ・同時にPCからM100のカメラ映像を遠隔モニタリング このようなデモがWeb開発の知識のみでつくれます! 1.5 MWC2015でのVuzix社デモ
  8. 8. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved 8 1.6 今後の予定 ・デバイスコネクトWebAPI相当のアプリをVuzix社の M100用マーケットでも近日中に公開予定 ⇒Androidの開発環境を意識しなくてもアプリの インストールのみでWeb開発が可能に
  9. 9. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved 9 事前準備 ・開発用のPC環境※ (M100用マーケットでのアプリ公開後は開発環境は不要) ・Vuzix M100 ※Vuzix M100 アプリ開発マニュアルをご参照ください。 第1章 M100をADBで認識する http://www.vuzix.jp/dev/setting-for-adb.html 第2章 Android Screen Monitorの使い方 http://www.vuzix.jp/dev/asm.html 第3章 システムアップデート方法 http://www.vuzix.jp/dev/system-update.html Android SDKの場所の確認方法 http://www.vuzix.jp/dev/general-settings.html 2. デモWebアプリでの動作確認
  10. 10. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved 10 1.GitHubからPCにデモ用ファイルのダウンロード https://github.com/DeviceConnect/DeviceConnect-Docs/blob/master/Bin/demoWebSite.zip 2.「ADB Install」コマンドで2つのアプリ(デバイスコネクト本体、デバイスコネクトAndroid Hostプラグイン)をM100にインストール > adb install .¥demoWebSite¥apk¥dConnectManager.apk[改行] Successと出たら成功 > adb install .¥demoWebSite¥apk¥dConnectDeviceHost.apk[改行] Successと出たら成功 2.1 デバイスコネクトWebAPIのインストール ( M100用マーケットでのアプリ公開後はマーケットからのダウンロードのみ) PC作業 ダウンロードファイル demoWebSite ┣[apk] ┃ ┣dConnectManager.apk ┃ ┣dConnectDeviceHost.apk ┃ ┗その他のAPKファイル ┃ ┣[css] ┣[js] ┗index.html
  11. 11. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved 11 2.2 M100のIPアドレスの確認 1.M100の無線LAN接続を確認(PCと同一ネットワークにしておく) 2.M100のIPアドレスの確認 M100作業
  12. 12. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved 12 2.3 デモアプリの外部アクセスの許可(実利用時にはセキュリティ考慮が必要) 1.デバイスコネクトアプリを起動し、メニューの下の方にある 「Allow External IP」のチェックを有効化、「Local OAuth」のチェックを無効化 2.メニュー最初のDevice Connect ManagerをONに設定 して、サービスを有効化(有効にすると設定変更ができ ないので、変更する場合はいったんOFFにする) 補足 後述するデモの一部機能は「Local OAuth」が有効に なっていないと現状動作しません(後日無効でも利用 できるように対応予定) M100作業 スクロール
  13. 13. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved 13 PC作業 2.4 PCでデモ用Webサイトを開く(Chromeブラウザを想定) 1.Chromeブラウザでダウンロードファイルのindex.htmlを開く ※Chromeブラウザのメニュー⇒その他のツール⇒JavaScriptコンソールで、コンソールから具体的なREST APIの動作も見れます ダウンロードファイル demoWebSite ┣[apk] -APKファイル ┣[css] -スタイルシート ┣[js] -javascript ┃ ┗index.html 2.URLの最後に”?ip=[M100のIPアドレス]#demo”と追加して移動
  14. 14. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved 2.5 デモ用Webサイトの動作確認:機能リストの表示 1.デモ画面でSearch Deviceを 選ぶとDevice ListにHostが 表示される。 2.M100の画面でACCEPTを 選ぶとデモ画面に機能の リストが表示される PC画面 M100画面 14 PC画面
  15. 15. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved 15 2.6 デモ用Webサイトの動作確認:PCの画像をM100で表示 PC画面 M100画面1.機能リストからcanvas、Canvas DrawImageを選択 2.ファイルを選択で画像を選択 3.mode:「最大化して画像描画」に変更してUploadを選択 4. 画像がM100画面に表示される ① ① ② ② ③ ③ ④
  16. 16. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved 16 2.7 デモ用Webサイトの動作確認:M100のカメラ映像をWebブラウザで表示 1.機能リストからmediastream_recording、 Previewを選択 2.Webブラウザの画面にM100のカメラ映像が 表示される(撮影中はM100画面の左上に PREVIEWと表示される) PC画面 M100画面
  17. 17. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved 17 3. REST APIとしての動作確認 M100をWebAPI(REST API)として利用できる=開発環境にも依存しない ⇒cURL(コンソールからHTTPリクエストが行えるツール http://curl.haxx.se/)により 動作を確かめます ※簡略化のために、Local Oauth:OFFを前提として進めます(実利用時にはセキュリティ考慮が必要)。 準備(Windowsの場合) 1.プログラムとファイルの検索で ”cmd”と入力してコンソールの起動 2.cURLをダウンロードしてフォルダを作成 “cd [フォルダの場所]”でcurl.exeのパスに移動 cmd[改行] PC画面
  18. 18. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved 18 デバイスコネクトWebAPIが使えるかどうかの確認(availability) リクエスト >curl -X GET -H "Origin: http://localhost" http://192.168.13.6:4035/gotapi/availability レスポンス {"product":"Device Connect Manager","result":0,"version":"2.0.0"} 使える機能の確認(servicediscovery) リクエスト >curl -X GET -H "Origin: http://localhost" http://192.168.13.6:4035/gotapi/servicediscovery レスポンス {"product":"Device Connect Manager","result":0, "services":[{"id":"Host.e87e3213b730843a437ff6c676899df0.localhost.deviceconnect.org", "scopes":["file_descriptor","phone","media_player","connect","settings","deviceorientation", "canvas","authorization","proximity","system","touch","file","serviceinformation","battery", "mediastream_recording","keyevent","vibration","notification","servicediscovery"], "config":"HostConfig","type":"Wifi","online":true,"name":"Host"}],"version":"2.0.0"} >curl -X GET -H "Origin: http://localhost" http://192.168.13.6:4035/gotapi/servicediscovery curlコマンド HTTP GET Originの指定 (セキュリティ対策:近日中に 検証では不要にする予定) M100のIPアドレス 3.1 REST APIとしての動作確認:利用できる機能の確認 プラグインの名前 サービスID 利用できる 機能のリスト
  19. 19. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved 19 バッテリーの残量を知る リクエスト >curl -X GET -H “Origin: http://localhost” http://192.168.13.6:4035/gotapi/battery ?serviceId=Host.e87e3213b730843a437ff6c676899df0.localhost.deviceconnect.org レスポンス {“charging”:true,“product”:“Device Connect Manager","result":0, "level":0.8700000047683716,"version":"2.0.0"} https://github.com/DeviceConnect/DeviceConnect-JS/wiki/2.13.Notification#notification_post 3.2 REST APIとしての動作確認:機能の利用例 残り87% M100に通知を送る リクエスト >curl -X POST -H “Origin: http://localhost” http://192.168.13.6:4035/gotapi/notification/notify -F "serviceId=Host.e87e3213b730843a437ff6c676899df0.localhost.deviceconnect.org“ -F "type=3" -F "body=%E3%83%86%E3%82%B9%E3%83%88“ レスポンス {"product":"Device Connect Manager","notificationId":69699,"result":0,"version":"2.0.0"} URLエンコードされた文字列(ここでは「テスト」を表している) M100上に メッセージが 表示される サービスID サービスID M100画面
  20. 20. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved ドコモデベロッパーサポートの APIによる認識機能の利用 20 【ハンズオン②】
  21. 21. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved 2.まず最初に「ログイン/新規登録」から画面の指示に従ってアカウントを登録 1.Webブラウザからドコモデベロッパーサポートにアクセス 1.1 利用準備:アカウント登録 21 ドコモデベロッパーサポートURL: https://dev.smt.docomo.ne.jp/
  22. 22. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved アカウントを登録し、ログインすると、マイページにアクセスできるようになる 1.2 利用準備:ログイン 22
  23. 23. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved 1.マイページから 「新規アプリケーション申請へ」を選択 2.「アプリケーション登録」の各情報を入力 ⇒「API機能選択へ」ボタン ⇒各APIの【利用するAPI機能】を選択 ⇒「利用申請する」ボタン 3.完了画面まで入力が終わると 【開発用APIキー】が発行される 申請情報入力画面 1.3 利用準備:API申請 23
  24. 24. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved マイページの「アプリ/APIの申請・管理」から API Keyの確認を確認する アプリケーション名のリンク から登録情報や利用APIの 変更が行える API Key情報 (他に知られないように すること) 1.4 API Key情報の確認 24
  25. 25. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved 一部のREST API形式のものは、APIコンソールから動作が確認できます 2.1 APIコンソールからの動作確認 25
  26. 26. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved HTTPリクエストボディのテ キストを書き換えて実行 26 2.2 APIコンソールからの動作確認:雑談対話API
  27. 27. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved 音声認識【Powered by FUETREK】 ※REST API形式ではなく、Android/iOS用SDKとして提供されているAPI 「API/ツールの概要」の音声認識から、 Speech_Recognition_API_Android_SDK_v1.1.0.zipをダウンロード 27 3.1 Android Studioからの音声認識サンプルの利用
  28. 28. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved Speech_Recognition_API_Android_SDK_v1.1.0.zipの構成 Speech_Recognition_API_Android_SDK_v1.1.0 ├─document ├─filetree.txt ├─lib └─sample └─project ←これの名前を変えてAndroid Studio用 のプロジェクト保存フォルダに格納 3.2 Android Studio用サンプルプロジェクトの準備 28
  29. 29. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved 1.Android Studioのスタート画面から「Import Non-Android Studio project」を選択し、 2.先ほどのサンプルプロジェクトのフォルダを選択 3.ダイアログ確認・指示に従ってプロジェクトを開く(基本的に変更不要) 3.2 Android Studio用サンプルプロジェクトの準備 29
  30. 30. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved 開いた後にエラーとなった場合 30
  31. 31. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved 31 開いた後にエラーとなった場合
  32. 32. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved APIキーを登録情報のものに変更してからRun ‘app’でビルド・実行 3.3 Android Studioでのサンプルプロジェクトのビルド 32
  33. 33. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved Start recognitionボタンを押すことで音声認識が試せます(要ネットワーク接続) 3.4 M100での動作画面 33
  34. 34. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved 34 音声合成APIのページからサンプルコード(文字並べ替え)をダウンロード (ZIPファイル内のNarabete_HiraganaフォルダがAndroidのプロジェクト) 3.5 音声合成のサンプルの利用
  35. 35. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved 35 1.Android Studioのスタート画面から「Import Non-Android Studio project」を選択し、 2.先ほどのサンプルプロジェクトのフォルダを選択 3.ダイアログ確認・指示に従ってプロジェクトを開く(基本的に変更不要) 3.6 Android Studio用サンプルプロジェクトの準備
  36. 36. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved android { ・ ・ ・ packagingOptions { exclude 'META-INF/LICENSE.txt' exclude 'META-INF/NOTICE.txt' exclude 'META-INF/license.txt' exclude 'META-INF/notice.txt' exclude 'META-INF/LICENSE' exclude 'META-INF/NOTICE' } } dependencies { compile 'com.android.support:support-v4:21.0.3' compile files('libs/docomo-aitalk-android-sdk-1.0.1.jar') compile files('libs/docomo-common-android-sdk-narabete-1.0.2.jar') compile files('libs/jackson-annotations-2.2.3.jar') compile files('libs/jackson-core-2.2.3.jar') compile files('libs/jackson-databind-2.2.3.jar') } Build.gradle(Module: app)に以下のように追記 ※ドコモデベロッパーサポートのEclipse向けのサンプルプロジェクトを Android studioで動かす場合、他でも必要な場合がある 音声合成【Powered by AI】 36 3.7 Android Studio用サンプルプロジェクトの設定情報の修正
  37. 37. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved 37 1.“TextSpeaker.java“のAPIキーを登録情報のものに変更 2.Run ‘app’でビルド・実行 3.8 Android Studioでのサンプルプロジェクトのビルド
  38. 38. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved 38 さきほどの音声認識サンプルに 音声合成機能を組み込む 【おまけ】
  39. 39. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved 39 【音声合成】のサンプルから、【音声認識】のサンプルに 必要なライブラリ(jarファイル)をコピー
  40. 40. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved 40 【音声認識】のサンプルのBuild.gradle(Module: app)に以下のように追記
  41. 41. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved 41 【音声合成】のサンプルから、【音声認識】のサンプルに “TextSperker.java”をコピー
  42. 42. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved 42 【音声認識】のサンプルの MainActivityのimplementsに,TextSpeaker.OnErrorListenerを追加 //音声合成 public TextSpeaker mTextSpeaker = null; private static final String PREFERENCE_KEY_VOICE_TYPE_NAME = "voice_type_name"; //話者のキー private SharedPreferences mPreferences; //話者などの設定を永続的に保存するためのインスタンス //設定値などを永続的に保存するプリファレンスで用いるキー定数 private TextSpeaker.Error mLastSpeakError; //直前に発生した音声合成APIに関するエラー。 //同じ種類のエラーダイアログが連続して表示されないために用いる。 public class MainActivity extends Activity implements View.OnClickListener, FSRServiceEventListener ,TextSpeaker.OnErrorListener{ @Override protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); の上に追加
  43. 43. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved 43 【音声認識】のサンプルに、音声合成の初期化処理を追加 @Override protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); の下に追加 //音声合成の準備 //プリファレンスの取得 mPreferences = getPreferences(MODE_PRIVATE); //現在の話者設定をプリファレンスから取得 String voiceTypeName = mPreferences.getString(PREFERENCE_KEY_VOICE_TYPE_NAME, "nothing"); TextSpeaker.VoiceType voiceType = TextSpeaker.findVoiceTypeEnum(voiceTypeName); if (voiceType == null) { voiceType = TextSpeaker.VoiceType.NOZOMI; } //デフォルトは nozomi //音声再生インスタンスの作成 mTextSpeaker = new TextSpeaker(this); mTextSpeaker.setPitch(1.0F); mTextSpeaker.setRange(1.5F); mTextSpeaker.setRate(1F); mTextSpeaker.setVolume(1.8F); mTextSpeaker.setVoiceType(voiceType); mTextSpeaker.setOnErrorListener(this); this.setAudioStreamType(AudioManager.STREAM_MUSIC); //音声の出力先は音楽用ストリームに指定
  44. 44. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved 44 MainActivityに以下のメソッドを追加 ※依存関係(エラー)の解消はALT+Enterで /** * 合成音声の出力先ストリームをセットするメソッド。 * TextSpeakerにセットされるだけでなく、Activity#{@link #setVolumeControlStream(int)}が呼ばれることで、 * 物理音量キーによって該当ストリームの音量が変化するようになる * * @param streamType AudioManagerの定数 */ private void setAudioStreamType(int streamType) { this.mTextSpeaker.setStreamType(streamType); this.setVolumeControlStream(streamType); } /** * 現在の音声出力先の端末音量を返すメソッド * もし音声出力用のインスタンスがnullの場合は {@link AudioManager#STREAM_MUSIC}の音量を返す * * @return */ private int getDeviceVolumeOfVoice() { int volume = 0; AudioManager audioMgr = (AudioManager) getSystemService(Context.AUDIO_SERVICE); if (mTextSpeaker == null) { volume = audioMgr.getStreamVolume(AudioManager.STREAM_MUSIC); } else { volume = audioMgr.getStreamVolume(mTextSpeaker.getStreamType()); } return volume; } /** * 合成音声の話者をセットするメソッド * * @param type */ public void setVoiceType(TextSpeaker.VoiceType type) { if (mTextSpeaker != null) { mTextSpeaker.setVoiceType(type); } } 利用するためのメソッドを追加(【音声合成】サンプルから部分的に流用)①
  45. 45. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved 45 利用するためのメソッドを追加(【音声合成】サンプルから部分的に流用)② /** * TextSpeekerによる音声合成のエラーが通知されるメソッド * @param exception * @param errorCode */ @Override public void onSpeekError(Exception exception, String errorCode) { //エラーコード(文字列)から該当するエラーEnumを取得 TextSpeaker.Error error = TextSpeaker.findErrorEnum(errorCode); //今回のエラーと直近に発生したエラーが違う場合のみエラーダイアログを表示する。 //これは同種のエラーが何度もダイアログ表示されないようにするため。(やむなく音声無しでアプリを使用する場合など) if (error != mLastSpeakError) { //SimpleDialogFragment dialog = null; switch (error) { case SERVER_CONNECTION_ERROR: /* dialog = SimpleDialogFragment.getInstance(getString(R.string.error), getString(R.string.desc_of_connection_error));*/ break; case SERVER_OTHER_ERROR: case SERVER_LIMITATION_ERROR: /* dialog = SimpleDialogFragment.getInstance(getString(R.string.error), getString(R.string.desc_of_server_limited_error));*/ break; case INVALID_PARAMETER: case AUTHENTICATION_ERROR: case SDK_INSIDE_ERROR: case RESPONSE_DATA_ERROR: default: /*dialog = SimpleDialogFragment.getInstance(getString(R.string.error), getString(R.string.desc_of_fatal_error));*/ break; } //エラーダイアログの表示 /*if(dialog!=null){ dialog.setCancelable(false); dialog.show(getSupportFragmentManager(), "error"); }*/ }//end of if mLastSpeakError = error; //今回のエラーをフィールドに保存しておく }
  46. 46. Copyright© 2015 NTT DOCOMO, Inc. All rights reserved 46 case NotifyEndRecognition: // 認識完了 Log.d(TAG, "NotifyEndRecognition"); try { // 認識結果の取得 final RecognizeEntity recogize = mFsrService.getSessionResultStatus(BACKEND_TYPE); if (recogize.getCount() > 0) { final ResultInfoEntity info = mFsrService.getSessionResult(BACKEND_TYPE, 1); final String result = info.getText(); sHandler.sendMessage(sHandler.obtainMessage(MyHandler.HANDLE_SHOW_MESSAGE, result)); mTextSpeaker.speak(info.getText(), 0); } else { sHandler.sendMessage(sHandler.obtainMessage(MyHandler.HANDLE_SHOW_MESSAGE, "結果無し")); mTextSpeaker.speak("結果無し", 0); } notifyEventの認識完了の処理に読み上げるための記述を追加して、 Run ‘app’でビルド・実行

×