[Kotlin] [Android] utteranceProgressListener의 onStart 메서드에서 Speechrecognizer의 메서드가 실행되지 않을 때

‍bng4535·2022년 11월 25일
0

문제

음성 출력을 위한 Speechrecognizer.stopListening() 메서드가 utteranceProgressListener 의 onStart()메서드에서는 작동이 되지 않았다. Speechrecognizer.stopListening()가 메인 스레드에서만 작동이 가능하기 때문이다.

해결

LooperHandler를 사용하여 해결하였다.
Looper는 MainActivity가 실행됨과 동시에 생성되어 무한루프로 돌고 있는 서브스레드이다.
handler는 루퍼가 있는 메인 스레드에서 주로 사용되며, 메인 스레드와 다른 스레들 간의 통신을 담당한다. (명령어 처리기 역할)

		override fun onStart(utteranceId: String) {
                        val mainHandler = Handler(Looper.getMainLooper())
                        val myRunnable =
                            Runnable {
                                speechRecognizer.stopListening()
                            } // This is your code
                        mainHandler.post(myRunnable)

                 }
profile
공부 기록

0개의 댓글