语音识别监听器在Galaxy SII中不起作用

Lea*_*Bun 3 android voice-recognition

我正在开发一个总是从用户那里收听语音的Android应用程序.它在Sony X10i上运行时有效,但在三星Galaxy SII中不起作用.这是我的代码:

    SpeechRecognizer     speechRecognizer;
    speechRecognizer = SpeechRecognizer.createSpeechRecognizer(getBaseContext());
    MyRecognitionListener speechListner=new MyRecognitionListener();
    speechRecognizer.setRecognitionListener(speechListner);
    speechRecognizer.startListening(RecognizerIntent.getVoiceDetailsIntent(getApplicationContext()));
Run Code Online (Sandbox Code Playgroud)

这是我的听众课程:

class MyRecognitionListener implements RecognitionListener {

    public void onBeginningOfSpeech() {
        Log.d("leapkh", "onBeginningOfSpeech");
    }

    public void onBufferReceived(byte[] buffer) {
        Log.d("leapkh", "onBufferReceived");
    }

    public void onEndOfSpeech() {
        Log.d("leapkh", "onEndOfSpeech");
    }

    public void onError(int error) {
        Log.d("leapkh", "onError");
    }

    public void onEvent(int eventType, Bundle params) {
        Log.d("leapkh", "onEvent");
    }

    public void onPartialResults(Bundle partialResults) {
        Log.d("leapkh", "onPartialResults");
    }

    public void onReadyForSpeech(Bundle params) {
        Log.d("leapkh", "onReadyForSpeech");
    }


    public void onResults(Bundle results) {
        Log.d("leapkh", "onResults");

    }

    public void onRmsChanged(float rmsdB) {
        Log.d("leapkh", "onRmsChanged");
    }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,如何解决这个问题?

Lea*_*Bun 7

我找到了解决方案.

speechRecognizer.startListening()方法的参数更改intent为如下:

    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, getApplication().getPackageName());
    speechRecognizer.startListening(intent);
Run Code Online (Sandbox Code Playgroud)