0

每个人!我正在开发一个语音识别应用程序,该应用程序现在能够识别语音!但是,我需要在应用程序的后台运行这个语音识别代码,它必须一直听命令。对于我的应用程序,我编写了 Handler().postDelayed 函数,它计算用户登陆新活动的时间,并通过延迟 5 秒开始收听。我的问题是它只听了 2-3 秒,并且无法识别和再次听。应用程序运行时如何在应用程序后台运行语音识别?

speechRecognizer1.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 bundle) {
            ArrayList<String> matches1 =bundle.getStringArrayList(speechRecognizer1.RESULTS_RECOGNITION);
            String string="";
            if(matches1!=null) {
                string = matches1.get(0);
                textView3.setText(string);
                Speak();

            }
        }



        @Override
        public void onPartialResults(Bundle bundle) {


        }

        @Override
        public void onEvent(int eventType, Bundle params) {

        }
    });

    mTTS1 = new TextToSpeech(this, new TextToSpeech.OnInitListener() {
        @Override
        public void onInit(int status) {
            if(status==TextToSpeech.SUCCESS){
                int result= mTTS1.setLanguage(Locale.ENGLISH);
                if(result== TextToSpeech.LANG_MISSING_DATA || result==TextToSpeech.LANG_NOT_SUPPORTED){
                    Log.e("TTS","Language Not Supported");

                }



            }
        }
    });

    new Handler().postDelayed(new Runnable(){
        public void run(){
            speechRecognizer1.startListening(intentRecognizer1);
        }
    }, 5000);
4

1 回答 1

0

好的,为此您需要一个名为 Service 的 android 组件,我们在 android 中有三种类型的服务: 1.Forground:一个前台服务确实可以让用户注意到,例如一个音乐应用程序,它会通知正在播放的歌曲。2.Background:该服务对用户来说是不明显的 3.Bound:为用户提供客户端-服务器交互的绑定服务

对于您的情况,您可以使用前台服务。决定什么更好以及如何实现它或在线程和服务之间做出决定,我建议阅读本文档: https ://developer.android.com/guide/components/services

于 2020-06-03T15:16:53.640 回答