Sprachausgabe funktioniert nicht

A

Androide231198

Ambitioniertes Mitglied
0
Hallo Zusammen,
habe aus langeweile ein Programm geschrieben, dass eine Texteingabe in Form von Sprachausgabe wiedergeben soll. Leider finde ich meinen Fehler nicht:

Code:
package de.androidnewcomer.saghallo;

import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

import java.util.Locale;

public class MainActivity extends AppCompatActivity implements TextToSpeech.OnInitListener,OnClickListener {
    private TextToSpeech tts;

    @override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }

    @override
    public void onInit(int arg0) {
     tts.setLanguage(Locale.GERMAN);
        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(this);



    }


    @override
    public void onClick(View view) {
    EditText editText = (EditText) findViewById(R.id.editText);
    tts.speak(editText.getText().toString(),
        TextToSpeech.QUEUE_FLUSH, null);


    }

}
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

Wird die Methode onInit() überhaupt ausgeführt?
Was sagt der Log Cat?

Bitte die Code Tags nutzen!

Gruß
 
Hallo,
woran sehe ich , ob die OnInit() ausgeführt wird?
Der Log Cat sagt folgendes:
11-14 19:09:52.008 11110-11110/de.androidnewcomer.saghallo I/HwSecImmHelper: mSecurityInputMethodService is null
11-14 19:09:52.009 11110-11110/de.androidnewcomer.saghallo I/HwSecImmHelper: mSecurityInputMethodService is null
 
Achso also Stürzt das Programm schonmal nicht ab.

Du kannst folgendes machen um ein Eintrag in den Logcat zu erhalten.

Code:
@override
public void onInit(int arg0)
Log.d("MainActivity","onInit wird ausgeführt");
tts.setLanguage(Locale.GERMAN);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(this);
 
Hallo Andro,

a) so wie ich das sehe , initiierst du nirgendwo deine SpeechEngine
b) im onInit fehlt dann die komplette Initialisierung (Construct-Body)
c) dort eine Resource mit einem ClickListener zu setzen ist falsch , das gehört nicht an diese stelle und
der Override hat nichts mit dem UI zu tun
d) so wie du .speak angewendet hast , ist es leider deprecated (und nicht asynchron)

Fazit : Was du da gebastelt hast , kann nicht funktionieren , da ein Grossteil fehlt
 
Zuletzt bearbeitet:
Hi,
wenn du Android Studio verwendest kannst du einen Breakpoints setzen. Die APP im Debug-mode laufen lassen, dann bleibt die Programmausführung beim Break-Point stehen.

Grüße
 
Leuts,

so wird er niemals ein onInit kommen. (s.o.)

Also bitte step by step
 
Zuletzt bearbeitet:
@Android231198

swa00 hat recht, du hast zwar die die Interface-Funktionen eingerichtet, aber die Objecte TextToSpeech. OnInitListener, OnClickListener die diese Funktionen nutzen wollen hast du hast du nirgends erzeugt.

Ist dir die Verwendung von interfaces klar :confused2:
 
@andro

kann es sein , dass wir jetzt ein deja vu haben , nur dass es sich nicht diesmal auf
Canvas/Draw bezieht , sondern SpeechEngine ?

Wenn ja, auch hierzu habe ich keine Zeit , dir das Programm zu schreiben ,
sondern dir nur zu helfen :)

Die komplette Anleitung steht oben
 
Zuletzt bearbeitet:
Code:

Code:
package de.androidnewcomer.saghallo;

import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

import java.util.Locale;

public class MainActivity extends AppCompatActivity implements TextToSpeech.OnInitListener,OnClickListener {
private TextToSpeech tts;

@override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

}

@override
public void onInit(int arg0) {
tts.setLanguage(Locale.GERMAN);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(this);



}


@override
public void onClick(View view) {
EditText editText = (EditText) findViewById(R.id.editText);
tts.speak(editText.getText().toString(),
TextToSpeech.QUEUE_FLUSH, null);


}

}
 
Zuletzt bearbeitet von einem Moderator:
Und was soll uns jetzt dieser Code sagen ?
(Ausser , dass du eine Zeile dem Ursprünglichen hinzugefügt hast )

Andro,

wie ich schon in den anderen Threads von Dir erwähnt habe , scheint es dir eine wahre Freude zu bereiten,
die anderen Teilnehmer und auch mich an der Nase herumzuführen ...

a) Thomas hat dich z.b. gebeten, Code Tags zu verwenden - scheint dich nicht zu interessieren
b) Meine Antworten - die dir zur Lösung verhelfen - ignorierst du offensichtlich gezielt
oder hast schlichtweg NULL Plan.

Wir erwarten von Dir genau den gleichen Respekt , den du auch von uns erwartest.


Wenn du also weiterhin Hilfe von uns hier erhalten möchtest , so bitte ich Dich mit deinen 17 Jahren
sich in Zukunft am Riemen zu reissen,

oder

Nimm dir ein Buch und erlerne erst mal die Grundlagen (heisser Tip von Nonsens)

P.S Und nur als beiläufige Info : Meine beiden Söhne sind zumindest älter als du
und denen würde ich gehörig was Pusten :)
 
Zuletzt bearbeitet:
@swa00
vielleicht weis er nicht wie man das Code-Tag aufruft. Ich musste auch erst suchen.

@android231198
im Editor gibt es oben ein '+', da draufklicken. In der Liste dann auf Code klicken. Den Code dann in dem Dialogfenster eintragen. Das ist alles.

Grüße
 

Ähnliche Themen

SaniMatthias
Antworten
19
Aufrufe
1.002
swa00
swa00
O
Antworten
15
Aufrufe
3.017
ORHUX
O
K
Antworten
3
Aufrufe
1.179
Kapikalaani
K
Zurück
Oben Unten