2017-04-26 5 views
1

Eine einfache Spracherkennung App ich codiert funktioniert nicht, wie ich es erwartet hatte. Grundsätzlich gibt es keine sichtbaren Fehler im Protokoll und es wird gut übersetzt, aber wenn ich auf die Schaltfläche klicke, erscheint die Spracherkennung und beginnt mit der Aufnahme, aber nach der Aufnahme erscheint nichts auf dem App-Bildschirm, auf dem die Listview angezeigt werden soll was auch immer aufgezeichnet wurde (im Textformat)Einfache Spracherkennung App auf Android funktioniert nicht wie erwartet

hier ist der Java-Code

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.speech.RecognizerIntent; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.ListView; 

import java.util.ArrayList; 


public class Voice extends Activity implements View.OnClickListener { 

    ListView lv; 
    final static int check = 1111; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.voice); 
     lv = (ListView) findViewById(R.id.lvVoiceReturn); 
     Button b = (Button) findViewById(R.id.bVoice); 
     b.setOnClickListener(this); 
    } 



    @Override 
    public void onClick(View v) { 
     Intent i = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);  // set speech recognizer intent 
     i.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); //set language 
     i.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speak up son!");    // set prompt to user 
     startActivityForResult(i, check); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     if (requestCode == check && resultCode == RESULT_OK) { 
      // create an empty array list and link it to the recognizer intent 
      ArrayList<String> results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); 
      // link the listview from my layout to the arraylist I created just now with the results from voice recognition 
      lv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, results)); 
     } 

    } 
} 

Und hier ist das xML-Layout

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <Button 
     android:id="@+id/bVoice" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Click to Speak" /> 

    <ListView 
     android:id="@+id/lvVoiceReturn" 
     android:layout_width="match_parent" 
     android:layout_height="fill_parent" /> 
</LinearLayout> 

Dank!

Antwort

0

@Kalid könnten Sie versuchen, die Sprache als intent.putExtra (RecognizerIntent.EXTRA_LANGUAGE_MODEL, "en-US"); und mit debug oder logs überprüfen, ob die app-steuerung geht auf onactivityresult

+0

dumme fehler. Ich hatte nicht mit dem Internet verbunden. Die App funktioniert jetzt und eine überraschende Spracherkennung erfordert Konnektivität. Aber danke Aditi! – Kalid

Verwandte Themen