2016-04-07 3 views
13

Ich baue eine App, die Sprachbefehle verwendet, um bestimmte Funktionen auszuführen. Ich habe arbeiten einige Codes von hereStarten Sie die Spracherkennung über die Stimme mit dem Satz "Ok Google"?

private static final int SPEECH_REQUEST_CODE = 0; 

// Create an intent that can start the Speech Recognizer activity 
private void displaySpeechRecognizer() { 
    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, 
      RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); 
// Start the activity, the intent will be populated with the speech text 
    startActivityForResult(intent, SPEECH_REQUEST_CODE); 
} 

// This callback is invoked when the Speech Recognizer returns. 
// This is where you process the intent and extract the speech text from the intent. 
@Override 
protected void onActivityResult(int requestCode, int resultCode, 
     Intent data) { 
    if (requestCode == SPEECH_REQUEST_CODE && resultCode == RESULT_OK) { 
     List<String> results = data.getStringArrayListExtra(
       RecognizerIntent.EXTRA_RESULTS); 
     String spokenText = results.get(0); 
     // Do something with spokenText 
    } 
    super.onActivityResult(requestCode, resultCode, data); 
} 

Doch dieser Ansatz durch Klicken auf eine Schaltfläche aktiviert werden muss. Gibt es eine Möglichkeit, den Spracherkenner auch über einen Sprachbefehl zu starten? Wie Google Now, wo Sie einfach "Ok Google" sagen können, öffnet es die Spracherkenner-Aktivität und wartet auf Befehle?

Danke.

Antwort

2

Sie müssen einen Dienst für die kontinuierliche Spracherkennung schreiben. Und basierend auf den Eingaben, die Sie als Sprache erhalten, erkennen Sie Ihre Auslöserphrase und ergreifen Maßnahmen.

Dies kann speicherintensiv sein und Sie müssen optimieren, indem Sie Dienste zu entsprechenden Zeiten und Bildschirmen starten und stoppen.

Die akzeptierte Antwort auf this question bietet ein Mittel, um eine ähnliche Sache zu erreichen.

Verwandte Themen