Приглушение звукового сигнала распознавания голоса Google

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

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

4 ответов


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

таким образом, у вас будет что-то вроде этого:

AudioManager am = mContext.getSystemService(Context.AUDIO_SERVICE);
...
// Request audio focus for playback
int result = am.requestAudioFocus(afChangeListener,
                             // Use the music stream.
                             AudioManager.STREAM_MUSIC,
                             // Request permanent focus.
                             AudioManager.AUDIOFOCUS_GAIN);

if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
am.registerMediaButtonEventReceiver(RemoteControlReceiver);
// Play your own sound (or play silence)
}
am.abandonAudioFocus(afChangeListener);

Я не проверял, придерживается ли приложение Google (которое воспроизводит звуковой сигнал) этого запроса, но, как правило, оно должно работать, и его стоит попробовать.

другой вариант - непосредственно отключить все звуки, поступающие из приложения Google (которое включает в себя звуковой сигнал распознавания голоса Google). Преимущество этого метода заключается в том, что нет помех с любого другого потокового аудио. Ниже приводится ссылка для более подробной информации. Однако обратите внимание, что для этого Требуется root-доступ: https://android.stackexchange.com/questions/128588/how-do-i-disable-the-google-voice-typing-voice-search-ding-sound.


единственное решение, которое я нашел, чтобы отключить распознавание звукового сигнала:

audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
audio.setStreamVolume(AudioManager.STREAM_MUSIC, 0, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);

прежде чем вы сохраните том, например:

AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
current_volume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);

чтобы вернуться, чтобы восстановить уровень громкости, например ленточные черви:

audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
audio.setStreamVolume(AudioManager.STREAM_MUSIC, audio.getStreamMaxVolume(AudioManager.STREAM_MUSIC),
            AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);

Я надеюсь, что это поможет вам в чем-то


вы можете использовать audio manager для управления звуками

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

прежде чем вы начнете распознавать вызов

 audioManager.setStreamMute(AudioManager.STREAM_MUSIC, true);

и после распознования звоните

audioManager.setStreamMute(AudioManager.STREAM_MUSIC, false);

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

afd = context.getResources().openRawResourceFd(R.raw.duduuudududu2);

mp.reset();
mp.setAudioStreamType(AudioManager.STREAM_ALARM);
myAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC,0,0);

try 
{
   mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getDeclaredLength());
   mp.prepare();
} 
catch (IOException e) 
{
   e.printStackTrace();
}

mp.start();