7

Ich habe eine Test-App, die kontinuierlich Google-Stimmen verwendet und jedes Mal, wenn der Google-Erkennungsdienst aufgerufen wird, den Signalton abgibt. Ich versuche, den Piepston loszuwerden. Ich habe Threads gelesen, die den Musik-Stream stumm machen, aber das würde für mich nicht funktionieren.Stummschalten des Spracherkennungserkennungssignals von Google

Ich versuche den Speicherort der Piepton-Datei zu finden, so dass ich einfach gehen und es aus dem System löschen konnte. Ich folgte this Thread, aber ich kann die Datei in 5.0 Systemdatei nicht sehen.

+0

Mögliches Duplikat [Wie der Piepton für SpeechRecognizer stumm zu schalten?] (Http://stackoverflow.com/questions/25538752/how-to-mute-the-beep-sound-for-speechrecognizer) –

+0

Hey, ich habe diese früher überprüft und wie ich in der Frage erwähnt habe, dass das Stummschalten des Musikstreams keine Lösung für mich ist:/ –

+0

Hmm, naja, ich erinnere mich, mal gelesen zu haben, dass das Stummschalten der Sprachaktivierung aus rechtlichen Gründen betrachtet wurde könnte ein Eingriff in die Privatsphäre sein, wenn ein Gerät immer ohne die Zustimmung oder Benachrichtigung des Benutzers zuhört. Ich sehe viele Duplikate in der Sache, aber wenn diese nicht funktionieren, dann bin ich mir nicht sicher, was ich Ihnen sagen soll. –

Antwort

4

Angenommen, Sie möchten nicht alle Streams stummschalten, weil Sie daran interessiert sind, Ihren eigenen Sound abzuspielen, könnte dies eine Lösung für Sie sein: Verwenden Sie die Audio Focus API.

So würden Sie so etwas wie dieses:

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

habe ich nicht getestet, ob die Google App (die den Piepton spielt) auf diese Anforderung hält, aber in der Regel sollte es funktionieren und es lohnt sich geben ein Versuch.

Eine andere Option wäre, alle Sounds aus der Google App (die den Signalton der Google-Spracherkennung enthält) direkt stumm zu schalten. Der Vorteil dieser Methode ist, dass keine Interferenzen mit anderen Streaming-Audiosignalen auftreten. Das Folgende ist ein Link für weitere Details. Beachten Sie jedoch, dass hierfür Root-Zugriff erforderlich ist: https://android.stackexchange.com/questions/128588/how-do-i-disable-the-google-voice-typing-voice-search-ding-sound.

+0

danke für Ihre Antwort. Ich hatte vorher über diese API gelesen und es war ein schöner Gedanke, aber "Ich muss die Beep-Datei speziell loswerden!" so dass ich mich nicht mit diesen dingen beschäftigen muss, denn selbst wenn das, was du vorschreibst, funktioniert, wird es andere Dinge stören, wie das Auslesen der navigation, während die Musik spielt, was sagst du. –

+0

Nun, ich glaube nicht, dass es möglich ist, die Beep-Datei zu entfernen, ohne dass das Gerät gerootet wird. Also musst du einen Weg finden. Ich sehe keine Möglichkeit, dies programmatisch zu lösen. Ich nehme an, du hast diesen Thread schon gesehen: http://android.stackexchange.com/questions/128588/how-do-i-disable-the-google-voice-typing-voice-search-ding-sound. – REG1

+0

mir geht es gut mit rooting. Ich werde sehen müssen, dass der Link –

5

Die einzige Lösung, die ich gefunden habe Piepton Erkennung stumm ist:

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

Bevor Sie das Volumen, zum Beispiel sparen sollte:

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

zurückzukehren, um die Lautstärke wiederherzustellen, Bandwürmer wie:

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

ich hoffe, dass es Ihnen auf

etwas hilft
+0

danke für deine Antwort, aber ich kenne diese Lösung und ich suche nicht nach diesem. Ich möchte nicht auf Stumm schalten und den Lautstärkepegel wiederherstellen. nur Piep-Ton sollte entfernt werden und alle anderen Streams normale Lautstärke. –

+0

@ con_9 Ich weiß, aber die einzige Lösung, die ich gefunden habe, war diese. Mit dieser Lösung stummst du nur die Lautstärke der Musik, andere haben ihr Level. Wenn Sie die Lösung finden, nur den Signalton der Spracherkennung stumm zu schalten, sagen Sie mir bitte –

+0

irgendwelche Nachrichten über Stummschaltung nur Piepton ohne Stummschaltung Musikstrom? – user25

2

Sie Audio-Manager die Klänge steuern können

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

, bevor Sie Anruf beginnen zu erkennen

audioManager.setStreamMute(AudioManager.STREAM_MUSIC, true); 

und nach der Erkennung abgeschlossen ist Aufruf

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

ich eine andere Lösung gefunden Hexe funktioniert gut für mich. Ich habe den Audio-Stream des Media Players auf einen anderen Stream eingestellt, sodass ich den Musik-Stream stummschalten konnte. Ich hoffe, das hilft auch anderen.

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