Speech API+ListView

  • Antworten:2
Marc
  • Forum-Beiträge: 13

27.04.2013, 19:49:03 via Website

Hi Leute, ich möchte gern einen gesprochenen Text in eine ListView packen und darstellen lassen. Also man sagt zB "Hallo wie geht es euch" und danach sollen 5 "Listeneinträge" dargestellt werden:
Hallo
wie
geht
es

euch

sodass man danach diese Einträge auswählen könnte. Ich habe es geschafft, die gesprochenen Wörter in ein StringArray zu packen und nun möchte ich diese Arrayfelder als ListView darstellen. Leider funktioniert es nicht und ich weiß nicht warum. Erkennt ihr einen Fehler?Wenn ich die Wörter nacheinander in ein TextView packe, funktioniert es. Also es liegt irgendwie am ListView.
Danke

Hier der Code der Activity:
1*imports etc.
2
3public class MainActivity extends Activity {
4 protected static final int RESULT_SPEECH = 1;
5 private ImageButton btnSpeak;
6 private TextView txtText;
7 private ListView listview;
8 ArrayList<String> values = new ArrayList<String>();
9
10 public void onCreate(Bundle savedInstanceState) {
11 super.onCreate(savedInstanceState);
12 setContentView(R.layout.activity_main);
13 txtText = (TextView) findViewById(R.id.txtText);
14 ListAdapter adapter = new ArrayAdapter<String>(getApplicationContext(),
15 android.R.layout.simple_list_item_1, values);
16 final ListView listview = (ListView) findViewById(R.id.listview);
17 listview.setAdapter(adapter);
18 btnSpeak = (ImageButton) findViewById(R.id.btnSpeak);
19 btnSpeak.setOnClickListener(new View.OnClickListener() {
20 public void onClick(View v) {
21 Intent intent = new Intent(
22 RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
23 intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "en-US");
24 try {
25 startActivityForResult(intent, RESULT_SPEECH);
26 txtText.setText("");
27 } catch (ActivityNotFoundException a) {
28 Toast t = Toast.makeText(getApplicationContext(),
29 "Ops! Your device doesn't support Speech to Text",
30 Toast.LENGTH_SHORT);
31 t.show();
32 }
33 }
34 });
35 }
36
37 public boolean onCreateOptionsMenu(Menu menu) {
38 getMenuInflater().inflate(R.menu.activity_main, menu);
39 return true;
40 }
41
42 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
43 super.onActivityResult(requestCode, resultCode, data);
44 switch (requestCode) {
45 case RESULT_SPEECH: {
46 if (resultCode == RESULT_OK && null != data) {
47
48 ArrayList<String> text = data
49 .getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
50 String[] separate = text.get(0).split(" ");
51 for (String word : separate) {
52 values.add(word);
53 }
54 }
55 break;
56 }
57 }
58 }
59}

— geändert am 28.04.2013, 10:43:09

Antworten
Marc
  • Forum-Beiträge: 13

28.04.2013, 10:43:38 via Website

kann keiner helfen? :(

Antworten
impjor
  • Forum-Beiträge: 1.793

28.04.2013, 19:02:25 via App

1. pushen ist doof
2. such auf voogela mal nach einem tut für ListView
3. Lösung: du musst den Adapter benachrichtigen, dass sich deine ArrayList geändert hat

Gruß

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

San Blarnoi

Antworten