App di riconoscimento vocale Android senza pop up

Sto attualmente cercando di get una carriera con JAVA e ho deciso di iniziare a build un'applicazione. Ho questo codice qui che sto usando per triggersre il riconoscimento vocale.

public class MainActivity extends Activity implements OnClickListener{ private static final int VR_REQUEST = 999; private ListView wordList; private final String LOG_TAG = "SpeechRepeatActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button speechBtn = (Button) findViewById(R.id.speech_btn); wordList = (ListView) findViewById (R.id.word_list); PackageManager packManager= getPackageManager(); List<ResolveInfo> intActivities = packManager.queryIntentActivities (new Intent(ReceachzerIntent.ACTION_RECOGNIZE_SPEECH), 0); if (intActivities.size() !=0){ speechBtn.setOnClickListener(this); } else { speechBtn.setEnabled(false); Toast.makeText(this,"Oops - Speech Receachtion Not Supported!", Toast.LENGTH_LONG).show(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } public void onClick(View v){ if (v.getId() == R.id.speech_btn) { listenToSpeech(); } } private void listenToSpeech() { //start the speech receachtion intent passing required data Intent listenIntent = new Intent(ReceachzerIntent.ACTION_RECOGNIZE_SPEECH); //indicate package listenIntent.putExtra(ReceachzerIntent.EXTRA_CALLING_PACKAGE, getClass().getPackage().getName()); //message to display while listening listenIntent.putExtra(ReceachzerIntent.EXTRA_PROMPT, "Say a word!"); //set speech model listenIntent.putExtra(ReceachzerIntent.EXTRA_LANGUAGE_MODEL, ReceachzerIntent.LANGUAGE_MODEL_FREE_FORM); //specify number of results to retrieve listenIntent.putExtra(ReceachzerIntent.EXTRA_MAX_RESULTS, 10); //start listening startActivityForResult(listenIntent, VR_REQUEST); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { //check speech receachtion result if (requestCode == VR_REQUEST && resultCode == RESULT_OK) { //store the returned word list as an ArrayList ArrayList<String> suggestedWords = data. getStringArrayListExtra(ReceachzerIntent.EXTRA_RESULTS); //set the retrieved list to display in the ListView //using an ArrayAdapter wordList.setAdapter(new ArrayAdapter<String> (this, R.layout.word, suggestedWords)); } //this detects which one the user clicks wordList.setOnItemClickListener(new OnItemClickListener(){ //click listener for items within list public void onItemClick(AdapterView<?> parent, View view, int position, long id){ //cast the TextView wordView = (TextView) //retrive the chosen word String wordChosen= (String) wordView. //output for debugging Log.v(LOG_TAG, "chosen:" +wordChosen); }}); super.onActivityResult(requestCode, resultCode, data); } } 

In questa applicazione l'utente preme un button e viene visualizzato con la schermata di immissione di Google Voice in cui è ansible fare clic su un button (in realtà viene automaticamente) e si può parlare, si arresta e visualizzerà. Non voglio che la window a pop up in tutti però. Invece basta lasciare che l'utente fa clic sul button e sia in grado di parlare e lasciare che l'applicazione si arresti e visualizzi automaticamente il text (già lo fa).

  • Come utilizzare il nuovo Android 2.0 Shrinker e impostare useProguard false?
  • Come determinare quale button è stato premuto su android
  • Selezione di più elementi in ListView
  • Come creare una nuova row o scheda in <string> XML (eclipse / android)?
  • Cambiare il colore di background di un elemento in ListActivity Android onListItemClick
  • Avvio di un'attività con Intent e SetClassName
  • PER FAVORE! Capisco che ci sono già risposte sulla forma che mostra come farlo, infatti un nome utente JEEZ ha inviato qualche codice qui .

    Non so se ho capito where metterlo nel mio file di progetto. Io sono un nodo! Se qualcuno potrebbe aiutare a chiarire questo, vorrei apprezzare appieno il tuo aiuto.

    Ecco il mio codice:

     package com.example.speechreceachzertest; import android.os.Bundle; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.speech.ReceachtionListener; import android.speech.ReceachzerIntent; import android.speech.SpeechReceachzer; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; import android.widget.Toast; import android.widget.TextView; import android.app.Activity; import android.view.Menu; public class MainActivity extends Activity { private static final int VR_REQUEST = 999; public static final String TAG = null; private ListView wordList; private final String LOG_TAG = "SpeechRepeatActivity"; private SpeechReceachzer mSpeechReceachzer; private Intent mSpeechReceachzerIntent; private boolean mIslistening; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button speechBtn = (Button) findViewById(R.id.speech_btn); wordList = (ListView) findViewById(R.id.word_list); PackageManager packManager = getPackageManager(); List<ResolveInfo> intActivities = packManager.queryIntentActivities( new Intent(ReceachzerIntent.ACTION_RECOGNIZE_SPEECH), 0); mSpeechReceachzer = SpeechReceachzer.createSpeechReceachzer(this); mSpeechReceachzerIntent = new Intent(ReceachzerIntent.ACTION_RECOGNIZE_SPEECH); mSpeechReceachzerIntent.putExtra(ReceachzerIntent.EXTRA_LANGUAGE_MODEL, ReceachzerIntent.LANGUAGE_MODEL_FREE_FORM); mSpeechReceachzerIntent.putExtra(ReceachzerIntent.EXTRA_CALLING_PACKAGE, this.getPackageName()); if (!mIslistening) { mSpeechReceachzer.startListening(mSpeechReceachzerIntent); } else { speechBtn.setEnabled(false); Toast.makeText(this, "Oops - Speech Receachtion Not Supported!", Toast.LENGTH_LONG).show(); } } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } protected class SpeechReceachtionListener implements ReceachtionListener { @Override public void onBeginningOfSpeech() { //Log.d(TAG, "onBeginingOfSpeech"); } @Override public void onBufferReceived(byte[] buffer) { } @Override public void onEndOfSpeech() { //Log.d(TAG, "onEndOfSpeech"); } @Override public void onError(int error) { mSpeechReceachzer.startListening(mSpeechReceachzerIntent); //Log.d(TAG, "error = " + error); } @Override public void onEvent(int eventType, Bundle params) { } @Override public void onPartialResults(Bundle partialResults) { } @Override public void onReadyForSpeech(Bundle params) { Log.d(TAG, "OnReadyForSpeech"); //$NON-NLS-1$ } @Override public void onResults(Bundle results) { //Log.d(TAG, "onResults"); //$NON-NLS-1$ ArrayList<String> suggestedWords = results.getStringArrayList(SpeechReceachzer.RESULTS_RECOGNITION); // matches are the return values of speech receachtion engine // Use these values for whatever you wish to do wordList.setAdapter(new ArrayAdapter<String>(this, R.layout.word, suggestedWords)); } @Override public void onRmsChanged(float rmsdB) { } } 

  • manca il phonegap cordova.js
  • Come posso aggiungere l'effetto termico all'image YUV?
  • Attaccare lo stile CardView personalizzato a tema
  • Android KitKat (API 19) - Come scrivere i messaggi nel provider di contenuti SMS, senza inviarli, da un'applicazione non predefinita?
  • Raccolta 3D di Android OpenGL
  • Android.mk - build tutti i file di origine in una directory
  • 4 Solutions collect form web for “App di riconoscimento vocale Android senza pop up”

    AndroidManifest.xml

    Aggiungere la seguente authorization:

     <uses-permission android:name="android.permission.RECORD_AUDIO" /> 

    membri della class

     private SpeechReceachzer mSpeechReceachzer; private Intent mSpeechReceachzerIntent; private boolean mIslistening; 

    In onCreate

     @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ......... ......... mSpeechReceachzer = SpeechReceachzer.createSpeechReceachzer(this); mSpeechReceachzerIntent = new Intent(ReceachzerIntent.ACTION_RECOGNIZE_SPEECH); mSpeechReceachzerIntent.putExtra(ReceachzerIntent.EXTRA_LANGUAGE_MODEL, ReceachzerIntent.LANGUAGE_MODEL_FREE_FORM); mSpeechReceachzerIntent.putExtra(ReceachzerIntent.EXTRA_CALLING_PACKAGE, this.getPackageName()); SpeechReceachtionListener listener = new SpeechReceachtionListener(); mSpeechReceachzer.setReceachtionListener(listener); } 

    nel tuo button ascoltatore utilizzare questo codice

     if (!mIsListening) { mSpeechReceachzer.startListening(mSpeechReceachzerIntent); } 

    In onDestroy

     if (mSpeechReceachzer != null) { mSpeechReceachzer.destroy(); } 

    All'interno della tua attività crei la class interiore

     protected class SpeechReceachtionListener implements ReceachtionListener { @Override public void onBeginningOfSpeech() { //Log.d(TAG, "onBeginingOfSpeech"); } @Override public void onBufferReceived(byte[] buffer) { } @Override public void onEndOfSpeech() { //Log.d(TAG, "onEndOfSpeech"); } @Override public void onError(int error) { mSpeechReceachzer.startListening(mSpeechReceachzerIntent); //Log.d(TAG, "error = " + error); } @Override public void onEvent(int eventType, Bundle params) { } @Override public void onPartialResults(Bundle partialResults) { } @Override public void onReadyForSpeech(Bundle params) { Log.d(TAG, "onReadyForSpeech"); //$NON-NLS-1$ } @Override public void onResults(Bundle results) { //Log.d(TAG, "onResults"); //$NON-NLS-1$ ArrayList<String> matches = results.getStringArrayList(SpeechReceachzer.RESULTS_RECOGNITION); // matches are the return values of speech receachtion engine // Use these values for whatever you wish to do } @Override public void onRmsChanged(float rmsdB) { } } 

    EDIT 2015-02-07: Codice incorporato dalle risposte a questa domanda da parte di ZakiMak e nato per vincere nel codice in questa risposta per renderlo più completo.

    Non dimenticate di aggiungere l'authorization di seguire: –

     <uses-permission android:name="android.permission.RECORD_AUDIO" /> 

    È passato molto tempo dal momento che è stato postato. Ancora per chi cerca, il codice di cui sopra da Hoan è quasi completo, ma manca una linea importnte. Sia in questione che risposta e non sono sicuro di come possa funzionare senza di essa.

    È necessario creare il SpeechReceachtionListener e impostarlo come un listener per il SpeechReceachzer. Inoltre deve essere fatto prima di effettuare una chiamata per iniziare il metodo di Linguizzazione () del SpeechReceachzer.

    SpeechReceachtionListener listener = nuovo SpeechReceachtionListener (); mSpeechReceachzer.setReceachtionListener (ascoltatore);

    Inoltre, è necessario rimuovere l'ascoltatore dall'evento onError.

    Mi sono imbattuto in quella questione. Sembra avere startActivityForResult(...) abilitare il pop-up mic, quindi è ansible gestire la risposta in onActivityResult() . Tuttavia, aggiungendo semplicemente che startActivityForResult messo in startListening(mSpeechReceachzerIntent) mio startListening(mSpeechReceachzerIntent) , quindi potrebbe essere necessario eseguire ulteriori regolazioni.

     mSpeechReceachzerIntent.putExtra(ReceachzerIntent.EXTRA_LANGUAGE_MODEL, ReceachzerIntent.LANGUAGE_MODEL_FREE_FORM); mSpeechReceachzerIntent.putExtra(ReceachzerIntent.EXTRA_CALLING_PACKAGE, this.getPackageName()); startActivityForResult(receachzerIntent, 100); // call back onActivityResult(int requestCode, int resultCode, Intent data){...} 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.