第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

除了 onClick 等按鈕事件之外,語音識別器在正常調(diào)用時不起作用

除了 onClick 等按鈕事件之外,語音識別器在正常調(diào)用時不起作用

函數(shù)式編程 2021-09-26 14:32:35
我在我的程序語音識別器中有,當(dāng)我直接在 onCreate 方法中運行 startListening 方法時,語音識別器似乎不起作用。但是當(dāng)我在按鈕 onClick 方法中放置 startListening 方法時,語音識別器正在工作。我想直接調(diào)用語音識別器方法 startListening,如下面的程序所示。以下是我的程序。       SpeechRecognizer mSpeechRecognizer;Intent mSpeechRecognizerIntent;TextView textView;String speakId = "one";String oldId = "";@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_robo);    textView = (TextView) findViewById(R.id.textView);    mSpeechRecognizer = SpeechRecognizer.createSpeechRecognizer(this);    mSpeechRecognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);    mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,            RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);    mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE,            Locale.getDefault());    mSpeechRecognizer.setRecognitionListener(new RecognitionListener() {        @Override        public void onReadyForSpeech(Bundle params) {        }        @Override        public void onBeginningOfSpeech() {        }        @Override        public void onRmsChanged(float rmsdB) {        }        @Override        public void onBufferReceived(byte[] buffer) {        }        @Override        public void onEndOfSpeech() {        }        @Override        public void onError(int error) {        }        @Override        public void onResults(Bundle results) {            ArrayList<String> matches = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);            textView.setText(matches.get(0));            //displaying the first match            //if (matches != null)            //processResult(matches.get(0));        }但是當(dāng)我在按鈕 onClick 事件中調(diào)用 mSpeechRecognizer.startListening(mSpeechRecognizerIntent) 時,SpeechRecognizer 正在工作。    public void Listen(View view) {    mSpeechRecognizer.startListening(mSpeechRecognizerIntent);}為什么當(dāng)代碼放在 onCreate 方法中而不是在 onClick 方法中時不起作用。請告訴一個解決方案。
查看完整描述

1 回答

?
qq_笑_17

TA貢獻1818條經(jīng)驗 獲得超7個贊

我剛剛在 createSpeechRecognizer 之后設(shè)置了 used setRecognitionListener 并且代碼正在運行。


    mSpeechRecognizer = SpeechRecognizer.createSpeechRecognizer(this);

    mSpeechRecognizer.setRecognitionListener(recognitionListener);


    mSpeechRecognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);

    mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,

            RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);

    mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE,

            Locale.getDefault());

然后叫


 mSpeechRecognizer.startListening(mSpeechRecognizerIntent);

它無需使用按鈕事件即可工作。


RecogniserListener 類應(yīng)該以這種方式聲明。


    RecognitionListener recognitionListener = new RecognitionListener() {

        @Override

        public void onReadyForSpeech(Bundle params) {


        }


        @Override

        public void onBeginningOfSpeech() {


        }


        @Override

        public void onRmsChanged(float rmsdB) {


        }


        @Override

        public void onBufferReceived(byte[] buffer) {


        }


        @Override

        public void onEndOfSpeech() {


        }


        @Override

        public void onError(int error) {

            String message;

            switch (error) {

                case SpeechRecognizer.ERROR_AUDIO:

                    message = "Audio recording error";

                    break;

                case SpeechRecognizer.ERROR_CLIENT:

                    message = "Client side error";

                    break;

                case SpeechRecognizer.ERROR_INSUFFICIENT_PERMISSIONS:

                    message = "Insufficient permissions";

                    break;

                case SpeechRecognizer.ERROR_NETWORK:

                    message = "Network error";

                    break;

                case SpeechRecognizer.ERROR_NETWORK_TIMEOUT:

                    message = "Network timeout";

                    break;

                case SpeechRecognizer.ERROR_NO_MATCH:

                    message = "No match";

                    break;

                case SpeechRecognizer.ERROR_RECOGNIZER_BUSY:

                    message = "RecognitionService busy";

                    break;

                case SpeechRecognizer.ERROR_SERVER:

                    message = "error from server";

                    break;

                case SpeechRecognizer.ERROR_SPEECH_TIMEOUT:

                    message = "No speech input";

                    break;

                default:

                    message = "Didn't understand, please try again.";

                    break;

            }

            textView.setText(message);

        }


        @Override

        public void onResults(Bundle results) {

            ArrayList<String> matches = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);

            textView.setText(matches.get(0));


            //displaying the first match

            //if (matches != null)

                //processResult(matches.get(0));

        }


        @Override

        public void onPartialResults(Bundle partialResults) {


        }


        @Override

        public void onEvent(int eventType, Bundle params) {


        }



};



查看完整回答
反對 回復(fù) 2021-09-26
  • 1 回答
  • 0 關(guān)注
  • 214 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號