2013-11-22 20 views
5

Sto provando a creare un'applicazione controllata dalla voce che può eseguire alcune attività in base ai comandi.
Desidero aggiungere anche le funzionalità di Google Now in modo che se l'utente fa alcune domande come informazioni meteo, notizie, celebrità, ecc., Posso ottenere risultati da Google Now.Integrazione Google Now con l'app

C'è un modo per integrare le funzionalità di Google ora nella mia app?

risposta

2

Scopri i Voice Reorganization in Android

è possibile implementare come qui sotto:

scrivere il codice di seguito al clic del pulsante evento, che è responsabile per la cottura fuori l'intento voce.

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

Quando l'intento viene richiamato, viene visualizzata la voce trascritta.

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

Grazie GrIsHu per il vostro suggerimento. Secondo questa logica posso vedere che sarò in grado di ottenere il risultato nel browser, ma potresti spiegare come usare TTS per il risultato più accurato. Ad esempio, se chiedo quanto tempo è la torre Eiffel, otterrò il risultato nel browser, ma come posso selezionare il risultato su cui utilizzo TTS per la risposta vocale, in modo che il risultato possa essere udibile. – Shashi

+0

Cosa stai cercando di dire che non ti sto prendendo? – GrIsHu

+0

Il modo in cui si fa clic sull'icona di ricerca vocale di google sul dispositivo Android e si fa qualsiasi domanda, il più delle volte visualizza il risultato sullo schermo e comunica la risposta attraverso l'audio (utilizzando la sintesi vocale). Voglio sapere come farlo, fondamentalmente non sono interessato ai risultati visivi, piuttosto ho bisogno che i risultati vengano pronunciati dal dispositivo nello stesso modo in cui avviene in Google Now. Fammi sapere se non sono ancora abbastanza chiaro. – Shashi

0

Finora la cosa più vicina che ho trovato per le vostre esigenze è

RecognizerIntent.ACTION_VOICE_SEARCH_HANDS_FREE

Questo lancia fondamentalmente la schermata di Google Now in cima alla vostra app e risponde indietro con il feedback vocale come fa Google Now.

Non ho ancora trovato alcun modo per ascoltare in background e ottenere il risultato vocale o il risultato del testo che può essere convertito in parlato dal motore TTS.