7

Ho un'app di prova che utilizza la voce Google in modo continuo e suona il segnale acustico ogni volta che viene chiamato il servizio di riconoscimento Google. Sto cercando di sbarazzarmi del segnale acustico. Ho letto i thread di silenziamento del flusso musicale, ma questo non avrebbe funzionato per me.Disattivazione del segnale acustico di riconoscimento vocale di Google

Sto cercando di trovare il percorso del file bip in modo che potessi semplicemente andare ed eliminarlo dal sistema. Ho seguito il thread this, ma non riesco a vedere il file nel file di sistema 5.0.

+0

Eventuali duplicati di [Come disattivare il segnale acustico per SpeechRecognizer?] (Http://stackoverflow.com/questions/25538752/how-to-mute-the-beep-sound-for-speechrecognizer) –

+0

Ehi, ho controllato quelli precedenti e come ho menzionato nella domanda che l'audio muto non è una soluzione per me:/ –

+0

Hmm, beh, mi ricordo di aver letto una volta che l'attivazione vocale è stata esaminata per motivi legali perché quella potrebbe essere un'invasione della privacy se un dispositivo fosse sempre in ascolto senza l'approvazione o la notifica dell'utente. Vedo molti duplicati sull'argomento, ma se quelli non funzionano, allora non sono sicuro di cosa dirti. –

risposta

4

Supponendo che non si desidera disattivare l'audio di tutti i flussi perché si è interessati a riprodurre il proprio suono, questa potrebbe essere una soluzione per voi: utilizzare Audio Focus API.

Così si avrebbe qualcosa di simile:

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); 

Non ho ancora testato, se l'app di Google (che riproduce il suono beep) aderisce a questa richiesta, ma in genere dovrebbe funzionare e la sua pena dargli un tentativo.

Un'altra opzione sarebbe quella di silenziare direttamente tutti i suoni provenienti dall'app Google (che include il segnale acustico di riconoscimento vocale di Google). Il vantaggio di questo metodo è che non ci sono interferenze con altri audio in streaming. Quello che segue è un link per ulteriori dettagli. Si noti, tuttavia, che questo richiede l'accesso root: https://android.stackexchange.com/questions/128588/how-do-i-disable-the-google-voice-typing-voice-search-ding-sound.

+0

grazie per la risposta. avevo letto su questa api prima e è un bel pensiero, ma "Ho bisogno di eliminare in particolare il file bip!" in modo che io non abbia a che fare con queste cose perché anche se quello che stai proponendo funziona, interferirà con altre cose come la lettura di navigazione mentre la musica sta suonando, che cosa dici? –

+0

Bene, non credo sia possibile rimuovere il file beep senza che il dispositivo sia rootato. Quindi dovrai trovare un modo per aggirarlo. Non vedo alcun modo per risolvere questo programmaticamente. Immagino che tu abbia già visto questo thread: http://android.stackexchange.com/questions/128588/how-do-i-disable-the-google-voice-typing-voice-search-ding-sound. – REG1

+0

sto bene con il rooting. Dovrò vedere quel link –

5

L'unica soluzione che ho trovato per disattivare il riconoscimento segnale acustico è:

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

Prima è necessario salvare il volume, per esempio:

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

Per tornare per ripristinare il livello del volume, come ad esempio la tenia:

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

Spero che ti aiuta a qualcosa

+0

grazie per la tua risposta ma conosco questa soluzione e non sto cercando questo. Non voglio passare alla modalità silenziosa e ripristinare il livello del volume. solo il segnale acustico dovrebbe essere rimosso e tutti gli altri flussi normale volume. –

+0

@ con_9 Lo so, ma l'unica soluzione che ho trovato è stata questa. Questa soluzione è solo tu muto il volume della musica, altri stanno avendo il loro livello. Se trovi la soluzione per silenziare solo il segnale acustico del riconoscimento vocale, dimmi per favore –

+0

tutte le notizie sul silenziamento del solo segnale acustico senza silenziamento del flusso musicale? – user25

2

È possibile utilizzare audio manager per controllare i suoni

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

prima di iniziare a riconoscere chiamata

audioManager.setStreamMute(AudioManager.STREAM_MUSIC, true); 

e dopo il riconoscimento è completa chiamata

audioManager.setStreamMute(AudioManager.STREAM_MUSIC, false); 
0

ho trovato un'altra soluzione la strega funziona bene per me. Ho impostato il flusso audio del lettore multimediale su un altro stream, così ho potuto silenziare il flusso musicale. Spero che aiuti anche qualcun altro.

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(); 
Problemi correlati