Über RadioButtons die tts.setLanguage ändern

  • Antworten:29
  • Bentwortet
Frank S.
  • Forum-Beiträge: 357

08.05.2013, 09:19:49 via Website

Hallo.
Ich mache mir gerade eine kleine SprachausgabeApp.
Sie funktioniert auch. Nun wollte ich aber, über 3 Radio Buttons die Sprache ändern.

1public void sprache(View view){
2 RadioGroup radioGroup1 = (RadioGroup) findViewById(R.id.radioGroupL);
3 int result = radioGroup1.getCheckedRadioButtonId();
4 if (result==0){tts.setLanguage(Locale.GERMAN);}
5 else if (result==1){tts.setLanguage(Locale.ENGLISH);}
6 else if (result==2){tts.setLanguage(Locale.FRENCH);}
7}

Aber irgendwie, läuft das nicht.
kann mir bitte jemand weiter helfen ?
THX

— geändert am 08.05.2013, 09:22:32

Bildung ist, was übrig bleibt, wenn man vergessen hat, was man gelernt hat. =)

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

08.05.2013, 09:51:16 via Website

Bist du denn sicher das der Check der ID richtig ist ?

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Frank S.
  • Forum-Beiträge: 357

08.05.2013, 09:56:12 via Website

Mac Systems
Bist du denn sicher das der Check der ID richtig ist ?
wie meinst du das?
also die ID sind auch wirklich 0-2 in dieser Reihenfolge.
und mit getCheckedRadioButtonId bekommt man ja den ausgewählten Button.
Nur setzt er die Sprache nicht und verwendet die StandartSprache...

Bildung ist, was übrig bleibt, wenn man vergessen hat, was man gelernt hat. =)

Antworten
Michele
  • Forum-Beiträge: 1.525

08.05.2013, 11:43:52 via Website

Ohje weißt du nicht mal was eine ID ist?
Oder was verstehste da nicht?:D

Er meint die ID´s von deinen Buttons:

RadioButton radioGroup1 = (RadioButton) findViewById(R.id.radioGroupL1);
RadioButton radioGroup2 = (RadioButton) findViewById(R.id.radioGroupL2);
RadioButton radioGroup3 = (RadioButton) findViewById(R.id.radioGroupL3);

Und wenn du es richtig einfach machen willst, dann mach es so:

1@Override
2 protected void onCreate(Bundle savedInstanceState) {
3 super.onCreate(savedInstanceState);
4 setContentView(R.layout.main);
5
6 ButtonOne();
7 }
8
9 public void ButtonOne() {
10 Button buttonOne = (Button) findViewById(R.id.button1);
11 buttonOne.setOnClickListener(new View.OnClickListener() {
12
13 @Override
14 public void onClick(View v) {
15
16 tts.setLanguage(Locale.GERMAN);
17 }
18 });
19 }

Und das 3x für alle 3 Sprachen

Oder für die RadioGroup ein switch und case vorgang.
Oder einfach deine sache richtig vergleichen/check.


LG

— geändert am 08.05.2013, 14:51:58

Antworten
Frank S.
  • Forum-Beiträge: 357

08.05.2013, 13:22:36 via Website

[quote=Michele]Ohje weißt du nicht mal was eine ID ist?
Oder was verstehste da nicht?:D

na, die ID´s sind so wie ich sie verwendet habe schon richtig =)
wusste nur nicht ob sich die Frage auf die ID per se bezog, oder aber auf das get....

mit switch case will das auch nicht...

P.S.
ich habe nur eine Group.. mit 3 Buttons...

Habe es jetzt mit deiner Variante gemacht. =)

— geändert am 08.05.2013, 13:34:03

Bildung ist, was übrig bleibt, wenn man vergessen hat, was man gelernt hat. =)

Antworten
Michele
  • Forum-Beiträge: 1.525

08.05.2013, 13:28:17 via Website

Sehe auch eben erst richtig das es eine RadioGroup ist mit 3 RadioButton :*):grin:
Dachte wären 3 Button alleine.

Zeig uns mal dein ganzen Code und xml Layout bitte.


LG

— geändert am 08.05.2013, 13:30:49

Antworten
Frank S.
  • Forum-Beiträge: 357

08.05.2013, 13:38:20 via Website

geht nicht, bekomme eine Fehlermeldung, ich könne keine Links senden... komisch O_o

Bildung ist, was übrig bleibt, wenn man vergessen hat, was man gelernt hat. =)

Antworten
Michele
  • Forum-Beiträge: 1.525

08.05.2013, 13:43:23 via Website

Richtig impjor.

Und du sollst uns kein Link schicken.
Sondern alles hier einfügen.
Ohne zeigen = keine Hilfe.


LG

Antworten
Frank S.
  • Forum-Beiträge: 357

08.05.2013, 13:46:08 via Website

Michele
Richtig impjor.

Und du sollst uns kein Link schicken.
Sondern alles hier einfügen.
Ohne zeigen = keine Hilfe.
LG

lustig... genau das habe ich versucht...

Bildung ist, was übrig bleibt, wenn man vergessen hat, was man gelernt hat. =)

Antworten
Michele
  • Forum-Beiträge: 1.525

08.05.2013, 13:47:49 via Website

Geht auch freundlicher, wenn wir schon dir versuchen zu helfen.

Kannst du wenigstens nur die xml Layout zeigen?
Kann sein das du zuviel hier einfügen willst und er es nicht zulässt.


LG

Antworten
Frank S.
  • Forum-Beiträge: 357

08.05.2013, 13:50:23 via Website

Michele
Geht auch freundlicher, wenn wir schon dir versuchen zu helfen.

Kannst du wenigstens nur die xml Layout zeigen?
Kann sein das du zuviel hier einfügen willst und er es nicht zulässt.
LG

Sorry, aber schon das 2. mal, dass du mich doof darstellen willst ^^

geht auch nicht...

Bildung ist, was übrig bleibt, wenn man vergessen hat, was man gelernt hat. =)

Antworten
Michele
  • Forum-Beiträge: 1.525

08.05.2013, 13:51:56 via Website

Will ich nicht.

Kann aber sein das du ein Neuer bist der keine ahnung hat :grin:
Man weiß ja nie mit wem man es zutun hat.

Ich frage lieber alles genauer nach.

Versuch es so wie es impjor sagte.


LG

Antworten
Frank S.
  • Forum-Beiträge: 357

08.05.2013, 13:55:13 via Website

Michele
Will ich nicht.

Kann aber sein das du ein Neuer bist der keine ahnung hat :grin:
Man weiß ja nie mit wem man es zutun hat.

Ich frage lieber alles genauer nach.

Versuch es so wie es impjor sagte.


LG


neu ja ^^
mache es immerhin schon seid 3 tagen =) xD

na ich versuch es mal =)

Bildung ist, was übrig bleibt, wenn man vergessen hat, was man gelernt hat. =)

Antworten
Michele
  • Forum-Beiträge: 1.525

08.05.2013, 14:07:12 via Website

Also ich habs =) Bei mir geht es.

Habe es mit OnClickListener gemacht und if() in der public void onClick(View v) { }

Versuch es und lern dazu.


LG

Antworten
Frank S.
  • Forum-Beiträge: 357

08.05.2013, 14:07:29 via Website

1public void onRadioButtonClicked() {
2 // Is the button now checked?
3 RadioGroup gr = (RadioGroup) findViewById (R.id.group1);
4 boolean checked = ((Checkable) gr).isChecked();
5
6 // Check which radio button was clicked
7 switch(gr.getId()) {
8 case R.id.radioButton1:
9 if (checked)
10 tts.setLanguage(Locale.GERMAN);
11 break;
12 case R.id.radioButton2:
13 if (checked)
14 tts.setLanguage(Locale.ENGLISH);
15 break;
16 case R.id.radioButton3:
17 if (checked)
18 tts.setLanguage(Locale.FRENCH);
19 break;
20 }
21 }

aber i-wie geht das nicht...

Bildung ist, was übrig bleibt, wenn man vergessen hat, was man gelernt hat. =)

Antworten
Michele
  • Forum-Beiträge: 1.525

08.05.2013, 14:17:42 via Website

Sachmal was machst du da für ein mist *grins*:grin:

Wo hast du den mist abgelesen? Aus google?
Wozu checked immer? Mach es dir doch einfacher.

Wenn du schon in case was tust brauchst du keine if mehr.
Zumindestens nicht dafür.

1public class MainActivity extends Activity implements OnClickListener,OnInitListener {
2
3 public TextToSpeech speech;
4 public RadioButton button1;
5 public RadioButton button2;
6 public RadioButton button3;
7
8 @Override
9 protected void onCreate(Bundle savedInstanceState) {
10 super.onCreate(savedInstanceState);
11 setContentView(R.layout.main);
12
13 speech = new TextToSpeech(this, this);
14
15 button1 = (RadioButton) findViewById(R.id.radio0);
16 button2 = (RadioButton) findViewById(R.id.radio1);
17 button3 = (RadioButton) findViewById(R.id.radio2);
18 button1.setOnClickListener(this);
19 button2.setOnClickListener(this);
20 button3.setOnClickListener(this);
21 }
22
23
24 @Override
25 public void onClick(View v) {
26
27 if(button1 == v){
28
29 speech.setLanguage(Locale.ENGLISH);
30
31 } else if(button2 == v){
32
33 speech.setLanguage(Locale.ENGLISH);
34
35 } else if(button3 == v){
36
37 speech.setLanguage(Locale.ENGLISH);
38
39 }
40
41 @Override
42 public void onInit(int arg0) {
43
44 }
45}

— geändert am 08.05.2013, 14:45:27

Antworten
Frank S.
  • Forum-Beiträge: 357

08.05.2013, 14:38:37 via Website

Michele
Sachmal was machst du da für ein mist *grins*:grin:

Wo hast du den mist abgelesen? Aus google?
Wozu checked immer? Mach es dir doch einfacher.

Wenn du schon in case was tust brauchst du keine if mehr.
Zumindestens nicht dafür.

1public class MainActivity extends Activity implements OnClickListener,OnInitListener {
2
3 public TextToSpeech speech;
4 public RadioButton button1;
5 public RadioButton button2;
6 public RadioButton button3;
7
8 @Override
9 protected void onCreate(Bundle savedInstanceState) {
10 super.onCreate(savedInstanceState);
11 setContentView(R.layout.main);
12
13 speech = new TextToSpeech(this, this);
14
15 button1 = (RadioButton) findViewById(R.id.radio0);
16 button2 = (RadioButton) findViewById(R.id.radio1);
17 button3 = (RadioButton) findViewById(R.id.radio2);
18 button1.setOnClickListener(this);
19 button2.setOnClickListener(this);
20 button3.setOnClickListener(this);
21 }
22
23
24 @Override
25 public void onClick(View v) {
26
27 if(button1 == v){
28
29 speech.setLanguage(Locale.ENGLISH);
30
31 } else if(button2 == v){
32
33 speech.setLanguage(Locale.ENGLISH);
34
35 } else if(button3 == v){
36
37 speech.setLanguage(Locale.ENGLISH);
38
39 }
40}

aus einem Tut habe ich das ^^

aber das @Override nimmt er nicht

Bildung ist, was übrig bleibt, wenn man vergessen hat, was man gelernt hat. =)

Antworten
Michele
  • Forum-Beiträge: 1.525

08.05.2013, 14:41:00 via Website

Find den fehler mal selbs.
Müsste er dir sagen warum.
Dann haste irgendwas noch vergessen.

Man kann dir auch nicht bei jeden mini kram helfen.
Wenn du nichts selbst lernst dann bringt das Programmieren dir auch nichts.

Ich habe es dir so gegeben wie es geht.

Der Rest liegt an dir :D

LG

Antworten
Frank S.
  • Forum-Beiträge: 357

08.05.2013, 14:42:35 via Website

ahhhh... das klappt so nicht...
nehme wieder das erste Beispiel von dir, damit ging s =)

EDIT: beim letzten ändert sich die Sprache nicht und es wird immer beim Klick auf einen Radio Button die Methode ausgelöst...

— geändert am 08.05.2013, 14:43:57

Bildung ist, was übrig bleibt, wenn man vergessen hat, was man gelernt hat. =)

Antworten
Michele
  • Forum-Beiträge: 1.525

08.05.2013, 14:50:52 via Website

Welche Methode wird ausgelöst?

Du brauchst 3 Methoden = 3 Buttons.


LG

Antworten
Frank S.
  • Forum-Beiträge: 357

08.05.2013, 14:54:02 via Website

Michele
Welche Methode wird ausgelöst?

Du brauchst 3 Methoden = 3 Buttons.


LG

eine andere wurde ausgelöst.
aber jetzt geht grade gar nix mehr ^^

beim Override steht, es muss eine Supermethode Override oder implements werden.

Bildung ist, was übrig bleibt, wenn man vergessen hat, was man gelernt hat. =)

Antworten
Michele
  • Forum-Beiträge: 1.525

08.05.2013, 14:55:23 via Website

Ohjee dir muss man echt alles genau sagen was? :P

Für was brauchst du das eig? Was hast du vor für eine App zuschreiben?
Um was geht es?


LG

Antworten
Frank S.
  • Forum-Beiträge: 357

08.05.2013, 14:58:57 via Website

Michele
Ohjee dir muss man echt alles genau sagen was? :P

Für was brauchst du das eig? Was hast du vor für eine App zuschreiben?
Um was geht es?


LG

Ich mag eine App haben, die ausgibt was ich in ein Textfeld schreibe(per Sprache)
Ausserdem möchte ich die Sprache ändern können.
Später noch Pitch und Speed.

Bildung ist, was übrig bleibt, wenn man vergessen hat, was man gelernt hat. =)

Antworten
Michele
  • Forum-Beiträge: 1.525

08.05.2013, 15:00:22 via Website

Wie gesagt. Das was ich dir gab funktioniert.

LG

Antworten
Frank S.
  • Forum-Beiträge: 357

08.05.2013, 15:03:00 via Website

Michele
Wie gesagt. Das was ich dir gab funktioniert.

LG

war aber nicht, was ich wollte ^^
ich wollte ja nur das ich die Sprache auswähle, nicht das nach der auswahl auch gleich ausgelöst wird ^^

Bildung ist, was übrig bleibt, wenn man vergessen hat, was man gelernt hat. =)

Antworten
Michele
  • Forum-Beiträge: 1.525

08.05.2013, 15:04:33 via Website

Da wählst du doch alleine nur die Sprache aus?
Mach doch mal die Augen auf und bastel mal selbst mit?
Musst du alles genau so kopieren wie du es siehst?

Selbst ist der Mann? Oder bist doch eine Frau? :P

Antworten
Frank S.
  • Forum-Beiträge: 357

08.05.2013, 15:07:09 via Website

Michele
Da wählst du doch alleine nur die Sprache aus?
Mach doch mal die Augen auf und bastel mal selbst mit?
Musst du alles genau so kopieren wie du es siehst?

Selbst ist der Mann? Oder bist doch eine Frau? :P

HAHA ;-P
nee ich versuch es ja gerade...
aber egal was ich mach, es ändert sich die Sprache nicht -.-

Bildung ist, was übrig bleibt, wenn man vergessen hat, was man gelernt hat. =)

Antworten
Michele
  • Forum-Beiträge: 1.525

08.05.2013, 15:20:08 via Website

Also langsam gehts echt auf die nerven.
Komisch das es bei mir geht und bei dir nicht?
So hier haste alles. Und wenn du es nun nicht auf die reihe bekommst dann lass das mit dem Programmieren.

1import java.util.Locale;
2import android.app.Activity;
3import android.os.Bundle;
4import android.speech.tts.TextToSpeech;
5import android.speech.tts.TextToSpeech.OnInitListener;
6import android.view.View;
7import android.view.View.OnClickListener;
8import android.widget.Button;
9import android.widget.EditText;
10import android.widget.RadioButton;
11
12public class MainActivity extends Activity implements OnClickListener,OnInitListener {
13
14 public TextToSpeech speech;
15 public RadioButton button1;
16 public RadioButton button2;
17 public RadioButton button3;
18 public Button button;
19 public EditText eingabe;
20
21 @Override
22 protected void onCreate(Bundle savedInstanceState) {
23 super.onCreate(savedInstanceState);
24 setContentView(R.layout.main);
25
26 speech = new TextToSpeech(this, this);
27
28 button1 = (RadioButton) findViewById(R.id.radio0);
29 button2 = (RadioButton) findViewById(R.id.radio1);
30 button3 = (RadioButton) findViewById(R.id.radio2);
31 eingabe = (EditText) findViewById(R.id.editText1);
32 button = (Button) findViewById(R.id.button1);
33 button1.setOnClickListener(this);
34 button2.setOnClickListener(this);
35 button3.setOnClickListener(this);
36 button.setOnClickListener(this);
37 }
38
39 @Override
40 public void onClick(View v) {
41
42 String text = eingabe.getText().toString();
43
44 if (button == v) {
45 speech.speak(text, TextToSpeech.QUEUE_FLUSH, null);
46 }
47
48 else if (button1 == v) {
49
50 speech.setLanguage(Locale.ENGLISH);
51
52 } else if (button2 == v) {
53
54 speech.setLanguage(Locale.JAPAN);
55
56 } else if (button3 == v) {
57
58 speech.setLanguage(Locale.GERMAN);
59
60 }
61 }
62
63 @Override
64 public void onInit(int arg0) {
65
66 speech.setLanguage(Locale.GERMAN);
67
68 }
69}

Antworten
Frank S.
  • Forum-Beiträge: 357

13.05.2013, 08:49:24 via Website

genau das wollte ich, in deinem 1. Bespiel hat er den Text bei wahl der Sprache gleich ausgegeben. das wollte ich nicht.
Aber jetzt geht´s =)
danke

Bildung ist, was übrig bleibt, wenn man vergessen hat, was man gelernt hat. =)

Antworten