android.speech.cognizerintent APIを呼び出す[接続エラー]ダイアログで結果が表示され、ログに「calling_package」警告が表示されます
-
02-10-2019 - |
質問
ユーザーの言語の好みに頼るのではなく、ユーザーがボタンでどの言語をボタン検索を使用するかを選択できるようにする小さなアプリを作成しました(UI全体を日本に切り替えることなく日本語で検索したい場合があります)。
HTC Desire /Android 2.1(SoftBank-X06HT)でアプリをテストしています。ただし、音声APIを呼び出すと、[接続に失敗した]ダイアログボックス[再試行/キャンセル]を取得し、LogCatにこの警告が表示されます。
09-12 11:26:13.583: INFO/RecognitionService(545): ssfe url=http://www.google.com/m/voice-search
09-12 10:49:45.683: WARN/RecognitionService(545): required parameter 'calling_package' is missing in IntentAPI request
Google Voice Searchアプリを使用でき、問題なく動作することに注意してください。
APIドキュメントによると http://developer.android.com/reference/android/speech/cognizerintent.html#extra_calling_package Calling_Packageパラメーターは、開発者が使用するものではありません。まあ、もしそうなら、なぜログはそれが欠けていると言っているのですか?
パラメーターを自分で提供しようとしましたが、結果はまったく変更されませんでした。
private static final String TRIVOICE_CALLING_PACKAGE = "calling_package";
private void callSpeechWebSearch (String language) {
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE,
language);
intent.putExtra(TRIVOICE_CALLING_PACKAGE,
"org.filsa.trivoice");
//intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speech recognition demo");
try {
startActivity(intent);
} catch (ActivityNotFoundException anfe) {
makeToast("ANFE:" +anfe.getMessage());
}
}
解決
私は同じ問題を抱えていて、呼び出しパッケージを実際の呼び出しパッケージ(クラスではなく)に設定し、その後、正しく機能しました。 Tmobile G2のAndroid 2.2。
他のヒント
このコードを使用して、パッケージ名を取得します
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,
context.getPackageName());
所属していません StackOverflow