Я использую android.speech.SpeechRecognizer
и у меня возникла проблема, когда он издает характерный лязглый звук даже после того, как я назвал его методы stopListening()
, cancel()
и destroy()
.
Вот как я создаю и уничтожаю SpeechRecognizer
в MainActivity.kt
.
private fun startSpeechRecognition() {
Log.e(TAG, "At start of startSpeechRecognition()")
if (recognizer == null) {
recognizer = SpeechRecognizer.createSpeechRecognizer(this)
Log.e(TAG, "Creating new recognizer: $recognizer")
recognizer?.setRecognitionListener(Listener())
}
val intent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH)
intent.putExtra(
RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM
)
Log.e(TAG, "Starting listening")
recognizer?.startListening(intent)
}
private fun closeRecognizer() {
Log.e(TAG, "At start of closeRecognizer()")
recognizer?.run {
Log.e(TAG, "Stopping recognizer: $this")
stopListening()
cancel()
destroy()
recognizer = null
} ?: Log.e(TAG, "Recognizer already null")
}
Вот мой журнал:
E/voice.assistan: Unknown bits set in runtime_flags: 0x8000
E/MainActivity: At start of closeRecognizer()
E/MainActivity: Recognizer already null
E/MainActivity: At start of startSpeechRecognition()
E/MainActivity: Creating new recognizer: android.speech.SpeechRecognizer@573d161
E/MainActivity: Starting listening
E/MainActivity: At start of closeRecognizer()
E/MainActivity: Stopping recognizer: android.speech.SpeechRecognizer@573d161
E/SpeechRecognizer: not connected to the recognition service
E/SpeechRecognizer: not connected to the recognition service
E/MainActivity: At start of closeRecognizer()
E/MainActivity: Recognizer already null
I Я тестирую код на Pixel 2, работающем Android 10, и компилирую с minSdkVersion
21 и targetSdkVersion
28.
Может кто-нибудь сказать мне, что я могу делать неправильно или, если есть ошибка в библиотеке?
В настоящее время у меня есть неуклюжий обходной путь, при котором я отключаю аудиопоток мультимедиа после закрытия распознавателя.