2014-08-27 144 views
5

這已被問過,但沒有人似乎有解決方案:Muting SpeechRecognizer's beep sound如何將SpeechRecognizer的嗶聲靜音?

不過,我仍然想知道是否有人知道如何靜音SpeechRecognizer的嗶聲?

我創建了speechRecognizer對象:private SpeechRecognizer sr = SpeechRecognizer.createSpeechRecognizer(this);

然後在我的I類實例化speechRecognizer這樣

sr.setRecognitionListener(new listener()); 
Intent i = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
i.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, 
     RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);    
i.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getApplication() 
     .getClass().getName()); 
i.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 6); 
i.putExtra(RecognizerIntent.EXTRA_PROMPT, ""); 
i.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS, 7000); 
sr.startListening(i); 

任何人只要有什麼好的建議?我研究過,我可以創建一個AudioManager對象(AudioManager mAudioManager),然後使用setStreamSolo(),我可以靜音。但我不知道如何實現這一點。我將它添加到我的用於speechRecognizer的實例化代碼中,並沒有發生任何事情。這是我應該從我的主班級打電話嗎?

mAudioManager.setStreamSolo(AudioManager.STREAM_VOICE_CALL, true); 

在此先感謝您。

+1

我必須做什麼,我把下面的鏈接: [靜音谷歌語音識別操作音](HTTP://計算器。com/questions/37734868/muting-the-google-voice-recognition-beep-sound/37809750#37809750) – 2016-06-29 10:25:22

回答

13

Aww我會評論,但我沒有代表。不過,我想幫忙。

你見過這樣的:

Continues Speech Recognition beep sound after Google Search update

Is it possible to turn off the silent mode programmatically in android?

Mute the global sound in Android

在我看來,該代碼是不同,這取決於Android版本 - 作爲第一個鏈接說明, Google將'beep'的輸出切換到媒體流

我猜這些問題之一會有解決方案。如果是這樣,請張貼你所做的事情,正如你所說的,許多人似乎都有問題。

我的猜測是:

//mute audio 

AudioManager amanager=(AudioManager)getSystemService(Context.AUDIO_SERVICE); 
      amanager.setStreamMute(AudioManager.STREAM_NOTIFICATION, true); 
      amanager.setStreamMute(AudioManager.STREAM_ALARM, true); 
      amanager.setStreamMute(AudioManager.STREAM_MUSIC, true); 
      amanager.setStreamMute(AudioManager.STREAM_RING, true); 
      amanager.setStreamMute(AudioManager.STREAM_SYSTEM, true); 


//unmute audio 

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

      amanager.setStreamMute(AudioManager.STREAM_NOTIFICATION, false); 
      amanager.setStreamMute(AudioManager.STREAM_ALARM, false); 
      amanager.setStreamMute(AudioManager.STREAM_MUSIC, false); 
      amanager.setStreamMute(AudioManager.STREAM_RING, false); 
      amanager.setStreamMute(AudioManager.STREAM_SYSTEM, false); 

我想從證人應用程序的用戶將工作這個答案。相關信息如下:@WitnessApplications

此外,您的範圍將是之前,您開始使用(i);

+0

謝謝,我會試試這個。 – portfoliobuilder 2014-08-28 04:36:47

+2

我認爲靜音STREAM_MUSIC和STREAM_SYSTEM就足夠了(因爲API級別23您應該使用AudioManager.setStreamVolume來靜音流,通過保存其以前的狀態,以便在您想取消靜音時將其重置爲其原始值) – Massimo 2015-11-13 10:40:20

+0

Massimo , 你是對的。我會補充一點,在玩setStreamMute時要非常小心,它可能會在這種模式下鎖定手機,請確保您正確解鎖手機。 – 2015-11-18 13:47:12

1

與馬克上述方案中,你將有以下描述崩潰:

Failure delivering result ResultInfo{[email protected]:requestPermissions:, request=65736, result=-1, data=Intent { act=android.content.pm.action.REQUEST_PERMISSIONS (has extras) }} to activity java.lang.SecurityException: Not allowed to change Do Not Disturb state 

如果你只是想要靜音的語音識別器的蜂鳴聲,你就必須靜音AudioManager.STREAM_MUSIC

在科特林,它看起來像這樣對我說:

object AudioUtils { 

    @JvmStatic fun muteAudio(shouldMute: Boolean, context: Context) 
    { 
     val audioManager: AudioManager = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager 
     val muteValue = if (shouldMute) AudioManager.ADJUST_MUTE else AudioManager.ADJUST_UNMUTE 
     audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, muteValue, 0) 
    } 

}