3

ユーザーの言語設定に依存するのではなく、ボタンを使用して音声検索を使用する言語をユーザーが選択できるようにする小さなアプリを作成しました(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音声検索アプリを使用でき、問題なく動作することに注意してください。

API Docs http://developer.android.com/reference/android/speech/RecognizerIntent.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());
    }
}
4

2 に答える 2

2

このコードを使用してパッケージ名を取得します

intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,
                context.getPackageName());
于 2013-05-10T11:10:44.097 に答える
1

同じ問題が発生し、呼び出し元のパッケージを実際の呼び出し元のパッケージ(クラスではない)に設定すると、正常に機能しました。TmobileG2上のAndroid2.2。

于 2010-12-09T20:58:38.933 に答える