2013-11-22 16 views
5

Próbuję zbudować aplikację sterowaną głosem, która może wykonywać niektóre zadania w zależności od poleceń.
Chciałem dodać funkcje Google Now również do tego, że jeśli użytkownik zadaje kilka pytań, takich jak informacje o pogodzie, wiadomości, o gwiazdach itp., Mogę uzyskać wyniki z Google Now.Integracja Google Now z aplikacją

Czy istnieje możliwość zintegrowania funkcji Google teraz w mojej aplikacji?

Odpowiedz

2

Zapoznaj się Voice Reorganization in Android

Można go wdrożyć jak poniżej:

Wpisz poniższy kod po kliknięciu przycisku zdarzenia, który jest odpowiedzialny za wystrzelenie intencję głosową.

/** 
* 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); 
} 

Po wywołaniu zamiaru wyświetlamy zapisany głos.

/** 
* 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

Dziękuję GrIsHu za Twoją sugestię. Zgodnie z tą logiką, widzę, że będę w stanie uzyskać wynik w przeglądarce, ale czy mógłbyś wyjaśnić, jak używać TTS w celu uzyskania najdokładniejszych wyników. Na przykład, jeśli zapytam Jak długo jest Wieża Eiffla, otrzymam wynik w przeglądarce, ale jak mogę wybrać wynik, w którym używam TTS dla odpowiedzi głosowej, aby wynik był słyszalny. – Shashi

+0

Co próbujesz powiedzieć, że cię nie dostaję? – GrIsHu

+0

Sposób, w jaki klikasz ikonę wyszukiwania głosowego Google na urządzeniu z Androidem i zadajesz dowolne pytanie, w większości przypadków wyświetla on wynik na ekranie, a także przekazuje odpowiedź poprzez dźwięk (za pomocą tekstu na mowę). Chcę wiedzieć, jak to zrobić, w zasadzie nie interesują mnie efekty wizualne, a raczej wyniki muszą być wypowiadane przez urządzenie w podobny sposób, jak w Google Now. Daj mi znać, jeśli nadal nie jestem wystarczająco jasny. – Shashi

0

Dotychczas najbliższy rzeczą znalazłem wymagań jest

RecognizerIntent.ACTION_VOICE_SEARCH_HANDS_FREE

Zasadniczo uruchamia Google Now na górze ekranu aplikacji i reaguje z powrotem opinie głosowe, takie jak Google Now.

Nie znalazłem jeszcze sposobu, aby posłuchać w tle i uzyskać wynik mowy lub wynik tekstowy, który można przekształcić w mowę przez silnik TTS.