EFO+音声認識アプリについて
目的
EFOページを起動しているブラウザ(標準ブラウザ,FireFox,operaなど)から音声認識アプリを起動させる
音声認識アプリがインストールされていない場合はインストール用ページを表示する
ブラウザの入力欄がフォーカス時に音声認識プログラムを起動する
起動した音声認識プログラムは音声解析結果をEFO側に返す
EFO側は返信データを受信(あるいは定期的に特定ファイルを読み込む)して入力欄に表示する
注意点
scheme名には_は使えないようだ。
EFO javascriptからAPIの呼び出し
window.location.href=URIで開く:URIはアンドロイドアプリのマニュフェストファイルに設定したschema
var URI = "myapp://com.efolab"; window.location.href=URI
- このURIはアプリ側で受信する
manifest.xmlに以下の記述が必要。
まずブラウザから起動するために、android.intent.category.BROWSABLEを追加。
ブラウザから起動する場合は暗黙的インテントとして起動するため、android.intent.category.DEFAULTも追加。
最後にURLで判定して起動するよう、android:scheme、android:host、android:pathを指定します。
<activity android:name="Main" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:host="com.efolab" android:pathPrefix="/" android:scheme="myapp" /> </intent-filter> </activity>
- 受信したintentのパラメータを受け取るには
Intent intent = getIntent(); String action = intent.getAction(); if(Intent.ACTION_VIEW.equals(action)){ //ブラウザから起動した時 Uri uri = intent.getData(); if(uri != null){ String param_1 = uri.getQueryParameter("param_1"); String param_2 = uri.getQueryParameter("param_2"); //処理 } }else{ //アプリを通常起動したとき }
また、intentから受信できるデータの詳細は別の記事。
インラインフレーム iframeでアプリを起動することもできる。
iframe.src=schema://