Android - 如何将Array <string>转换为识别器结果的字符串</string>

时间:2012-01-07 20:24:47

标签: java android

我需要识别器的结果是一个字符串..当我使用这个代码时,我得到了eclipse错误&#39;无法将Array转换为字符串..

code: final ArrayList<String> results2 = data.getStringArrayListExtra    (RecognizerIntent.EXTRA_RESULTS);

也尝试过,没有运气:

final String results2 = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);

仍然说错误..

这个足够的信息吗?提前谢谢。

新:我添加了这段代码,但是我想要一个.get,它会以可接受的方式存储这个单词/文本以用于游标用法:

String[] matches = data.getStringArrayExtra(SpeechRecognizer.RESULTS_RECOGNITION);

Eclipse没有错误,但我的结果是&#39; null&#39;所以我只需要一个.Get在我的场景中工作?比kyou还帮忙!

2 个答案:

答案 0 :(得分:0)

这应该适合你:

@Override
    public void onResults(Bundle results) {
ArrayList<String> matches = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
[...]

<强> /编辑: 对不起,就像我说的,我把它搞混了。你检查过请求代码了吗?通常这应该有效:

 @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    if (requestCode == REQUEST_CODE && resultCode == RESULT_OK)
    {
        ArrayList<String> matches = data.getStringArrayListExtra(
                RecognizerIntent.EXTRA_RESULTS);
    }
    super.onActivityResult(requestCode, resultCode, data);
}

然而,这实际上几乎就是您正在使用的代码 - 尽管如此,尽管它最终有super.onActivityResult()

答案 1 :(得分:0)

你的代码应该可以正常工作。请参阅以下代码段:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Intent i = getIntent();
    final ArrayList<String> stringArrayListExtra = i.getStringArrayListExtra("hello");
}

你可以看到的是:

  • 检查您的java版本。你有java 1.5(或更高,但我不是很舒服1.7)配置。之所以将泛型添加到1.5。
  • 选择Project&gt;尝试清理和重建项目。干净。

我看不到任何其他

编辑:由于没有足够的代码可供查看,您可以自己查看speech sample here

如果看那里:

/**
 * Handle the results from the recognition activity.
 */
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == VOICE_RECOGNITION_REQUEST_CODE && resultCode == RESULT_OK) {
        // Fill the list view with the strings the recognizer thought it could have heard
        ArrayList<String> matches = data.getStringArrayListExtra(
                RecognizerIntent.EXTRA_RESULTS);
        mList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,
                matches));
    }

    super.onActivityResult(requestCode, resultCode, data);
}

他们正在使用RecognizerIntent.EXTRA_RESULTS。如果它可以解决您的问题,请尝试此示例。现在你的问题与我最初的看法不同。