3

我偶然发现了这个随机问题......这是我的代码

mSpeechRecognizer = SpeechRecognizer.createSpeechRecognizer(mContext);
        initializeRecognitionListener();
        mSpeechRecognizer.setRecognitionListener(mRecognitionListener);

    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
                    RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
    intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getClass().getPackage().getName());
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en-US");
            intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS, Long.valueOf(3000L));
    intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 5);
    mSpeechRecognizer.startListening(intent);

方法initializeRecognitionListener():

private void initializeRecognitionListener() {
    mRecognitionListener = new RecognitionListener() {

    @Override        
    public void onReadyForSpeech(Bundle params) {
        Log.d("onReadyForSpeech()", "onReadyForSpeech!");
        isRecognizing = true;
    }

    @Override
    public void onBeginningOfSpeech() {
        Log.d("onBeginningOfSpeech()", "onBeginningOfSpeech!");

    }

    @Override
    public void onEndOfSpeech() {
        Log.e("onEndOfSpeech()", "onEndOfSpeech! stop SCO");
    }
     ... 
}

主要问题是“onReadyForSpeech()”和“onBeginningOfSpeech()”方法有时不会在 mSpeechRecognizer.startListening(intent) 之后调用。也不能调用“onEndOfSpeech()”。

我正在使用带有 Android 4.2.2 的 Nexus 4

4

2 回答 2

2

我在另一个帖子上发布了一个非常相似的答案:

这是一个 Google Voice Search/Jelly Bean 的错误,在 AOSP 错误跟踪器上已经出现了近一年

我也在Google 产品论坛上发布了关于它的信息,但没有任何回应。如果您正在阅读本文并希望解决这些问题,请在 AOSP 问题上加注星标并在产品论坛帖子上发表评论以引起注意!

要解决此问题,您需要一个实施,例如此处演示的实施。

在我今天的测试中,最新版本的 Google 搜索似乎已经在内部解决了这个问题 - 所以在 Play Store 上更新 Google 搜索,这个问题可能会消失 - 如果你不是这种情况,请在下面发表评论,因为它可能仅在某些版本的 Google Search apk 中得到修复,在这种情况下,了解这些变化发生在哪里以便在我们的代码中优雅地处理它们会很有帮助!

于 2013-09-07T18:04:43.700 回答
1

似乎我已经解决了我的问题。修复的主要思想是保留SpeechRecognizer 对象的单个实例,而不是每次都重新创建它。在这些更改之后,我没有收到任何“识别器忙”错误。但是当我使用我的应用程序时,我的 HTC One S 仍然死机。我无法理解为什么...

于 2013-09-19T20:31:13.777 回答