- Forum-Beiträge: 11
07.06.2014, 13:59:51 via Website
07.06.2014 13:59:51 via Website
Hallo,
Ich hätte gerne die google Sprachsuche in meinem Programm implementiert, sodass nach einem Klick auf einem Button sich die Spracheingabe öffnet und das Gesagte in einem Textfeld erscheint.
Es öffnet sich auch die Spracheingabe, allerdings erst nach etwa 10 mal klicken. Zuerst habe ich es auf mehrere Arten mit einem OnClickListener versucht
findViewById(R.id.dictateButton).setOnClickListener(dictateButtonListener);
final OnClickListener dictateButtonListener = new OnClickListener(){
public void onClick(final View view){
Log.d("onClickListener", "onClickListener"
speechToText();
}
};
Oder so:
dictate.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
speechToText();
}
});
Nun habe ich zu diesem Button die OnClick Methode aufgerufen, die die Methode dictateButton aufruft:
public void dictateButton(View view){
speechToText();
}
Meine speechToText() Methode sieht folgendermaßen aus:
private void speechToText() {
PackageManager packageManager = context.getPackageManager();
List<ResolveInfo> infoList = packageManager.queryIntentActivities(new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0);
if (infoList.size() == 0) {
Log.d("speechtoText", "speechtoText2"
Toast.makeText(thisActivity,
"Ihr Gerät unterstützt leider keine Diktierfunktion",
Toast.LENGTH_LONG).show();
}
else {
try {
Intent speech = new Intent();
speech.setAction(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
Log.d("speech", "speech2 " + speech);
speech.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
startActivityForResult(speech, SPEECH_RECOGNIZED);
if (speech != null) {
Log.d("speech", "speech3 " + speech);
ArrayList<String> result = speech
.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
Log.d("result", "result " + result);
if (!(result.isEmpty())) {
EditText text = (EditText) findViewById(R.id.textInput);
Log.d("text", "edittext " + text);
text.setText(result.get(0));
Log.d("text", "getText " + result.get(0));
} else {
Toast.makeText(thisActivity,
"Leider kein Text erhalten",
Toast.LENGTH_LONG).show();
}
}
} catch (ActivityNotFoundException ex) {
Toast.makeText(thisActivity, "Activity nicht gefunden",
Toast.LENGTH_LONG).show();
ex.printStackTrace();
}
}
Könnt ihr mir da weiterhelfen, warum der Button nur bei jedem 10. Klick reagiert?
Vielen Dank
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.