Приглушение звукового сигнала распознавания голоса 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();