it-swarm.com.de

So verbergen Sie Toast "Ihr Audio wird an Google gesendet, um den Spracherkennungsdienst bereitzustellen." im Spracherkenner?

enter image description here

Ich verwende Google Spracherkennung für die Integration von Sprachdiensten in Android, aber während ich auf das Mikrofon drücke, wird diese nervige Toastnachricht angezeigt. Bitte schlagen Sie mir eine Möglichkeit vor, dies zu verbergen.

Vielen Dank

3

Wenn Ihr Gerät gerootet ist, können Sie die Benachrichtigung ausblenden, aber nicht verhindern, dass Audio an Google gesendet wird.

Installieren Sie das Xposed-Framework und das Modul UnToaster Xposed und fügen Sie dann Folgendes hinzu: Com.google.Android.googlequicksearchbox

1
dzhimc

Sie können also Ihren Spracherkenner anpassen, indem Sie ihn selbst erstellen. Ich habe diesen Code auf xamarin.Android geschrieben, also sollte es ziemlich ähnlich sein.

Public class CustomRecognizer : Java.Lang.Object, IRecognitionListener, 

TextToSpeech.IOnInitListener
{
private SpeechRecognizer _speech;
private Intent _speechIntent;


public string Words;


public CustomRecognizer(Context _context)
{
    this._context = _context;
    Words = "";
    _speech = SpeechRecognizer.CreateSpeechRecognizer(this._context);
    _speech.SetRecognitionListener(this);
    _speechIntent = new Intent(RecognizerIntent.ActionRecognizeSpeech);
    _speechIntent.PutExtra(RecognizerIntent.ExtraLanguageModel, RecognizerIntent.LanguageModelFreeForm);
    _speechIntent.PutExtra(RecognizerIntent.ActionRecognizeSpeech, RecognizerIntent.ExtraPreferOffline);
    _speechIntent.PutExtra(RecognizerIntent.ExtraSpeechInputCompleteSilenceLengthMillis, 1000); 
    _speechIntent.PutExtra(RecognizerIntent.ExtraSpeechInputPossiblyCompleteSilenceLengthMillis, 1000);
    _speechIntent.PutExtra(RecognizerIntent.ExtraSpeechInputMinimumLengthMillis, 1500);
}

void startover()
{
    _speech.Destroy();
    _speech = SpeechRecognizer.CreateSpeechRecognizer(this._context);
    _speech.SetRecognitionListener(this);
    _speechIntent = new Intent(RecognizerIntent.ActionRecognizeSpeech);
    _speechIntent.PutExtra(RecognizerIntent.ExtraSpeechInputCompleteSilenceLengthMillis, 1000);
    _speechIntent.PutExtra(RecognizerIntent.ExtraSpeechInputPossiblyCompleteSilenceLengthMillis, 1000);
    _speechIntent.PutExtra(RecognizerIntent.ExtraSpeechInputMinimumLengthMillis, 1500);
StartListening();
}
public void StartListening()
{
    _speech.StartListening(_speechIntent);
}

public void StopListening()
{
    _speech.StopListening();
}

public void OnBeginningOfSpeech()
{

}

public void OnBufferReceived(byte[] buffer)
{
}

public void OnEndOfSpeech()
{
  startover();
}

public void OnError([GeneratedEnum] SpeechRecognizerError error)
{
    Words = error.ToString();
    startover();
}

  public void OnResults(Bundle results)
  {
    var matches = results.GetStringArrayList(SpeechRecognizer.ResultsRecognition);
    //do whatever you want for the result
  }

Mein Code ist ein fortlaufender Erkennungstyp, deshalb setze ich startover () , wenn die Sprache endet. Sie können dies jedoch anpassen, indem Sie Ihre eigene Benutzeroberfläche usw. erstellen. Rufen Sie einfach startover () auf. um die Rede zu beginnen.