2013-11-22 10 views
5

Ich versuche eine sprachgesteuerte Anwendung zu erstellen, die abhängig von den Befehlen einige Aufgaben ausführen kann.
Ich wollte Google Now-Funktionen auch hinzufügen, so dass, wenn der Benutzer einige Fragen wie Wetterinformationen, Neuigkeiten, Prominente usw. stellt, dann kann ich Ergebnisse von Google Now bekommen.Google Now Integration mit App

Gibt es eine Möglichkeit, die Google Now-Funktionalität in meine App zu integrieren?

Antwort

2

Schauen Sie sich die Voice Reorganization in Android

Sie es wie unten implementieren können:

Schreiben Sie den Code unten auf Click-Ereignis von Taste, die für abzufeuern die Stimme Absicht verantwortlich ist.

/** 
* Instruct the app to listen for user speech input 
*/ 
private void listenToSpeech() { 
    //start the speech recognition intent passing required data 
    Intent listenIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
    //indicate package 
    listenIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getClass().getPackage().getName()); 
    //message to display while listening 
    listenIntent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Say a word!"); 
    //set speech model 
    listenIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); 
    //specify number of results to retrieve 
    listenIntent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 10); 
    //start listening 
    startActivityForResult(listenIntent, VR_REQUEST); 
} 

Wenn die Absicht ruft zurück, wir, die transkribiert Stimme.

/** 
* onActivityResults handles: 
* - retrieving results of speech recognition listening 
* - retrieving result of TTS data check 
*/ 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    //check speech recognition result 
    if (requestCode == VR_REQUEST && resultCode == RESULT_OK) 
    { 
     //store the returned word list as an ArrayList 
     ArrayList<String> suggestedWords = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); 
     //set the retrieved list to display in the ListView using an ArrayAdapter 
     wordList.setAdapter(new ArrayAdapter<String> (this, R.layout.word, suggestedWords)); 

    //to open the result in browser 
    Intent intent = new Intent(Intent.ACTION_VIEW, 
    Uri.parse("https://www.google.co.in/?gws_rd=cr#q="+suggestedWords)); 
startActivity(intent); 
    } 
    //tss code here 
    //call superclass method 
    super.onActivityResult(requestCode, resultCode, data); 
} 
+0

Vielen Dank GrIsHu für Ihren Vorschlag. Gemäß dieser Logik kann ich sehen, dass ich das Ergebnis im Browser erhalten kann, aber könnten Sie mir bitte erklären, wie Sie TTS für das genaueste Ergebnis verwenden können. Wenn ich zum Beispiel frage, Wie lang ist Eiffelturm, bekomme ich das Ergebnis im Browser, aber wie kann ich das Ergebnis auswählen, auf dem ich TTS für die Sprachausgabe verwende, damit das Ergebnis hörbar ist. – Shashi

+0

Was will ich sagen, dass ich dich nicht bekomme? – GrIsHu

+0

Die Art und Weise, wie Sie auf dem Google-Sprachsymbol auf dem Android-Gerät klicken und eine Frage stellen, zeigt das Ergebnis meistens auf dem Bildschirm an und teilt die Antwort über Audio mit (Text to Speech). Ich möchte wissen, wie das geht, ich bin grundsätzlich nicht an visuellen Ergebnissen interessiert, sondern ich brauche die Ergebnisse, die vom Gerät gesprochen werden, ähnlich wie es in Google Now geschieht. Lass es mich wissen, wenn ich noch nicht klar genug bin. – Shashi

0

Bisher ist die nächste, was ich an Ihre Bedürfnisse gefunden haben, ist

RecognizerIntent.ACTION_VOICE_SEARCH_HANDS_FREE

Diese im Grunde die Google Now auf Ihre App-Bildschirm startet und mit antwortet zurück das Sprachfeedback wie Google Now.

Ich habe noch keine Möglichkeit gefunden, im Hintergrund zu hören und das Sprachergebnis oder Text-Ergebnis zu erhalten, das von der TTS-Engine in Sprache umgewandelt werden kann.