1

ボタンをクリックするだけで音声認識インテントがあります。

voiceSearch.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View view) {
        try{
            Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
            intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
                    RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
            intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speak Now...");
            startActivityForResult(intent, REQUEST_CODE);
        }
        catch (ActivityNotFoundException e) {
            Log.v("Speech", "Could not find any Speech Recognition Actions");
        }

    }
});

アクティビティ結果では、次のようなコードがあります

     @Override
 public void onActivityResult(int requestCode, int resultCode, Intent data) {
     System.out.println("Request code++++++++++++++++++++++++++++"+requestCode);
     System.out.println("Result Code+++++++++++++++++++++++++++++"+resultCode);
     System.out.println("Data++++++++++++++++++++++++++++++++++++"+data);
   System.out.println("Language"+data.getStringExtra(RecognizerIntent.EXTRA_LANGUAGE));
     System.out.println("data.getDataString()"+data.getDataString());
     if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
     if (data != null && data.getData() != null) {
            String searchKey = data.getData().toString(); 
            System.out.println("Search Key++++++++++++++++++++++++"+searchKey);
            searchEditText.setText(searchKey);
            webView.loadUrl(url+"searchKey");

        }
 }
 }

私が得る出力は私が印刷しているときonActivityResultです

私が取得するリクエストコード1

結果コード私は-1

私が取得するデータIntent { (has extras) }

data.getStringExtra(RecognizerIntent.EXTRA_LANGUAGE)としての言語null

Data.getDataString()としてnull

誰かが私がコードで何が間違っている可能性があるかを教えてもらえますか?

ありがとう。

4

1 に答える 1

5

あなたは間違った方法で結果を得ようとしていると思います。それらはデータ文字列ではなく、matches配列に格納されます。

次の手順で配列を取得できます。

ArrayList<String> matches = data.getStringArrayListExtra(
    RecognizerIntent.EXTRA_RESULTS);

配列の各エントリは、ユーザーが言ったことに対して認識機能が持っている1つの推測を表すマルチワード文字列になります。

于 2012-08-25T08:18:24.163 に答える