Intereting Posts
Кинжал с Android: как мне вставлять текущий контекст? Сохранить настройки Изменить изображение кнопки в android Студия Android не может открывать какие-либо проекты или файлы в Mac Robolectric + rxJava + retrofit Второй вызов вызывает java.io.InterruptedIOException Изменить цвет курсора edittext Как включить глубокую привязку в приложении WebView для Android? Элементы AlertDialog не отображаются Сохранение состояния в сложных виджетах вида Отсутствие или неправильное изображение и фон случайным образом на протяжении всего жизненного цикла приложения Почему `hasEnrolledFingerprints` дает ошибку, что она требует разрешения только в моем фрагменте, но не в действии в примере Google? Удаление тени с панели инструментов при открытии ящика навигации – поддержка библиотеки поддержки материалов Оверлейная панель Android вне / между границами макета Добавить больше пространства между элементами в Android Spinner без специального стиля? Получение результата от службы намерения внутри пользовательского адаптера для просмотра списка

Отключить звук «Ready» слушателя распознавания

Я реализую RecognitionListener внутри операции с вкладками. Случается, что по мере того, как пользователь прокручивается, фрагмент, который реализует слушателя, создается / уничтожается, а на моих Nexus 7 и Galaxy Nexus вы слышите звук, связанный с RegonitionListener, или, может быть, с SpeechRecognizer , готовым к использованию. Какой бы класс ни был причиной звука, я хотел бы позволить пользователю отключить его. Я понимаю, что в настоящее время моя проблема заключается в том, что я слушаю без фокуса пользователей, которые я решаю; Однако по-прежнему я не хочу слышать звук по умолчанию и предпочитаю, чтобы пользователь выбирал звук уведомления.

Поэтому мой вопрос заключается в том, можно ли отключить звук уведомления, связанный с слушателем? Я не смог найти это в документах.

Solutions Collecting From Web of "Отключить звук «Ready» слушателя распознавания"

Поскольку zapl сказал, что нет прямого метода для этого, но вы можете попробовать заглушить системный том, и, как вы, Tencent сказал, что вы избегаете каких-либо взломов. Тогда я должен сказать, что для этого нет метода SO FAR. Но все же я разделяю это решение для тех, кто страдает от одной и той же проблемы, и, возможно, не против «хитрости». Просто сэкономить свои часы разочарования.

Отключить системный том для этого конкретного времени, а затем отключить звук. Как это сделать:

В своем классе создайте следующие объекты

private AudioManager mAudioManager; private int mStreamVolume = 0; 

В вашем методе onCreate выполните следующие действия.

 mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 

Когда вы начинаете слушать распознавание речи, сделайте следующее

 speechRecognizer.startListening(intent); // this method make that annoying sound mStreamVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC); // getting system volume into var for later un-muting mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 0, 0); // setting system volume to zero, muting 

В интерфейсе Speech RecognitionListener должен быть метод onReadyForSpeech .

 class MyRecognitionListener implements RecognitionListener { public void onReadyForSpeech(Bundle params) { // this methods called when Speech Recognition is ready // also this is the right time to un-mute system volume because the annoying sound played already mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, mStreamVolume, 0); // again setting the system volume back to the original, un-mutting } } 

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

Предыдущий ответ в порядке, за исключением того, что он выйдет из getStreamVolume из-за исключения NullPointer ( getStreamVolume вызывается на нулевом объекте). Чтобы исправить это, перед линией getStreamVolume добавьте:

AudioManager mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);