Scorpio » 13 дек 2018, 18:12
Ниже подробное описание нововведений (думал, что и так все очевидно):
Новые свойства(по умолчанию все false):
EnableGoogleDialog (boolean) - если «истина», то распознавалка работает в штатном режиме, без каких бы то ни было отличий. Никакие дополнительные функции (описанные ниже) не работают.
MuteAudio (boolean) - если «истина», то отключаются гугловские «блямки» перед и после распознавания. В реальности отключаются все звуки (гугловский блямк намертво зашит в сервис), но только на время слушания. Т.е. после распознавания, либо ошибки распознавания, звук сразу включится.
ContinuoslyRecognitionEnabled (boolean) - если «ложь», то, в случае, если пользователь хранил молчание, то сервис вернет пустую строку с выдачей ошибки. Если «истина», то включается режим постоянной прослушки. В реальности прослушка просто автоматически перезапускается каждый раз, когда сервис не смог ничего услышать. Связанная с этим ошибка при этом не возникает. Надо понимать, что такой режим здорово садит батарею, т.к. идет постоянная запись аудио сигнала. Именно поэтому разработчики Андроида не сделали эту функцию общедоступной. Получается, что в процессе слушанья, каждые 20 секунд, появляется 0.5 секунды, когда сервис перезапускается, и робот не слушает. Если фраза попадет на этот момент, то начало фразы не распознается. Можно не отключать блямканье, чтобы было понятно, когда происходит перезапуск, но оно быстро надоест. Статистически, случаи попадания на перезапуск распознавалки весьма редки.
LastError (String) только чтение – Тут хранится описание ошибки, если она случилась при последнем распознавании. При новом запуске сервиса, эта информация стирается.
Новый метод:
StopASR()– используется для принудительной остановки постоянной прослушки.
Новое событие:
OnError() – возникает при ошибке распознавания, передает пользователю описание ошибки, и сохраняет его в LastError. Возможные ошибки:
"Audio recording error" – ошибка записи аудио
"Client side error" – ошибка на стороне клиента
"Insufficient permissions" – пользователь не дал разрешения на запись аудио при установке приложения.
"Network error" – ошибка сети
"Network timeout" – долгое ожидание ответа сервера
"No speech input", "No match" – распознавалка не расслышала, что ей говорят ( в режиме постоянной прослушки, при возникновении этих ошибок, происходит автоматический перезапуск)
"RecognitionService busy" – сервис распознавания уже запущен другим приложением
"Error from server" – ошибка на стороне сервера.
"Didn't understand, please try again." – не получилось распознать слова.
По умолчанию, если есть подключение к интернету, сервис запрашивает сервер Гугла для распознавания (считается, что он распознает более качественно), если нет – то пользуется автономной распознавалкой, если она установлена. Начиная с версии Android 6.0 можно принудительно включить автономное распознование, даже если есть соединение с интернетом. Я эту опцию не добавлял, но могу сделать, если понадобится.
Прочитай внимательно, поэкспериментируй , и разберись как все работает. Не зря же я часа 4 на тебя потратил, пока научился клепать новые кубики для этого инвентора! Все для удобства населения, как говорил Жванецкий!.