Android Spracherkennung

Noki99

Mitglied
Guten Tag,

ich würde gerne die Spracherkennung von Android nutzen.
Dazu habe ich folgenden Code gemacht:


Code:
package de.vollkanone.sprachhilfe;

import java.util.ArrayList;

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

public class MainActivity extends Activity {

    Button btn_go;
    TextView tw;
   
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        btn_go = (Button) findViewById(R.id.btn_go);
        tw = (TextView) findViewById(R.id.textView1);
       
       
        btn_go.setOnClickListener(new View.OnClickListener() {
           
            @Override
            public void onClick(View v) {
                button("btn_go");
            }
        });
       
    }


    @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 button(String btn) {
        if(btn.equalsIgnoreCase("btn_go")) {
            erkennen(this);
        }
    }


    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode == SPEECH_RECOGNIZED) {
            if(data != null) {
                String[] result = data.getStringArrayExtra(RecognizerIntent.EXTRA_RESULTS);
               
                tw.setText(result[0]);
               
            }
        }
       
    }


    static public final int SPEECH_RECOGNIZED = 1;
   
    static public void erkennen(Activity activity) {
        Intent intent = new Intent();
        intent.setAction(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
        intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
        activity.startActivityForResult(intent, SPEECH_RECOGNIZED);
    }
   
   
}


Wenn ich auf den Button klicke, kommt das Interface mit der Erkennung. Nachdem ich etwas gesagt habe, und das Gerät einen Ton von sich gibt, wird die App angehalten. Ich weiß leider nicht woran es liegt.

Was mache ich falsch? Die Berechtigung für Audioaufnahme hat die App.
 

Noki99

Mitglied
Dass geht doch nur mit dem Emulator oder?
Und der hat ja kein Mikrofon. Oder geht dass mit dem LogCat auch mit nem echten Handy?

Danke :)
 

saftmeister

Nutze den Saft!
Ja, das geht auch mit einem echten Handy. Du musst halt erstmal die ADB-Driver auf deinem Rechner installieren. Dann kannst du das Handy mittels USB oder auch über TCP/IP koppeln. Dafür gibt es die adb-Commands.
 

Noki99

Mitglied
Ah ok danke, habs hinbekommen. Lag daran dass man das result in ner ArrayList abspeichern musste.

Danke :)