Отключить касание при выполнении намерения ACTION_RECOGNIZE_SPEECH

Часть моего приложения для Android использует преобразование речи в текст, и я хочу отключить сенсорные события, пока оно это делает, потому что в противном случае пользователь может случайно коснуться своего телефона и прервать разговор.

Я пытаюсь использовать ViewGroup, который может быть родителем для этого действия и поглощать события касания, но у меня проблемы с этим.

У меня есть Activity, и оттуда я открываю DialogFragment, где пользователь может вводить информацию, используя преобразование речи в текст.

Когда я попытался использовать оверлей для поглощения сенсорных событий из диалогового окна, он покрыл только DialogFragment, а не весь экран. И когда я добавил его в Activity, я не смог получить к нему доступ из DialogFragment.

В любом случае, это никогда не останавливало события касания, потому что моя основная проблема заключается в том, что диалоговое окно преобразования речи в текст появляется поверх наложения, и я не знаю, как получить дескриптор для этого.

Кто-нибудь здесь делал что-нибудь подобное раньше? Спасибо.


person S T L    schedule 10.03.2021    source источник
comment
ты пробовал с onInterceptTouchEvent()   -  person Shay Kin    schedule 10.03.2021
comment
Да, я создал ViewGroup, который переопределяет это событие, но он не работал должным образом, когда я пытался раздуть его по активности. По сути, у меня есть действие, и когда пользователь нажимает кнопку, появляется диалоговое окно, и они могут вводить информацию в диалоговое окно, используя преобразование текста в речь. Я попытался сделать ViewGroup частью действия, но это не сработало, а затем я попробовал из диалогового окна, но тогда он покрыл только само диалоговое окно, а не весь экран.   -  person S T L    schedule 10.03.2021
comment
В любом случае, всякий раз, когда я касался экрана, когда диалог преобразования текста в речь был открыт, он всегда отменял его, несмотря ни на что. Я не могу заставить ViewGroup идти поверх всплывающего диалогового окна Text-To-Speech.   -  person S T L    schedule 10.03.2021
comment
это не сработало, потому что, когда вы вызываете startActivity для результата, вы находитесь в другом действии, поэтому ваш код не работает   -  person Shay Kin    schedule 10.03.2021
comment
Есть идеи, как это исправить?   -  person S T L    schedule 10.03.2021
comment
Я думаю, что используйте настраиваемый диалог и используйте listnener, как в этом примере   -  person Shay Kin    schedule 10.03.2021
comment
Я уже реализую собственный диалог и слушатель. Вы говорите, что я должен что-то реализовать с помощью onPartialResults? Что-то, что блокирует прикосновения?   -  person S T L    schedule 11.03.2021
comment
Чтобы заблокировать клавиши вне диалогового окна, используйте этот stackoverflow.com/a/20259882/7085389   -  person Shay Kin    schedule 11.03.2021
comment
onPartialResults вы можете использовать его для динамического отображения текста   -  person Shay Kin    schedule 11.03.2021
comment
Мне не нужно отображать текст динамически, поэтому я думаю, что onPartialResults - это не то, что я ищу. Я пробовал как setCancelable, так и setCanceledOnTouchOutside, но ни один из них не работает, потому что я пытаюсь заставить их работать для всплывающего окна TextToSpeech, и я не знаю, как получить для этого дескриптор.   -  person S T L    schedule 11.03.2021
comment
Пожалуйста, не могли бы вы обновить свой вопрос и добавить код, чтобы я понял, что пошло не так.   -  person Shay Kin    schedule 11.03.2021
comment
Обновлено. Спасибо за вашу помощь!   -  person S T L    schedule 11.03.2021
comment
Можно просто покончить с этим и посмотреть это: youtube.com/watch?v=EZAoJU -nUyI   -  person Nerdy Bunz    schedule 12.03.2021
comment
@NerdyBunz Спасибо, отличное видео! Однако он не показывает, как получить доступ к диалоговому окну Speech-To-Text. Он находится поверх ViewGroup, поэтому даже если я прерываю события ViewGroup, это не помогает.   -  person S T L    schedule 16.03.2021