Spracheingabe?

  • Antworten:15
  • Bentwortet
ExKcir
  • Forum-Beiträge: 115

01.12.2012, 18:04:49 via Website

Hallo,
ich suche eine Funktion mit der man einen Text per spracheingabe "einlesen " kann.
Also eine Spracheingabe.

Ich bin mir sicher das es die gibt, aber bei Google werde ich leider nicht fündig.

Antworten
Gelöschter Account
  • Forum-Beiträge: 281

02.12.2012, 12:05:08 via Website

Also bei mir liefert Google zum Thema Android voice recognition mehr Treffer als ich lesen mag :-)

Antworten
ExKcir
  • Forum-Beiträge: 115

02.12.2012, 14:45:14 via Website

Thomas M.
Also bei mir liefert Google zum Thema Android voice recognition mehr Treffer als ich lesen mag :-)
Ja, hab gestern am späten abend noch was gefunden, hab vorher nur falsch gesucht.

Aber ich habe nun ein weiteres problem:
Ich habe dieses Beispiel gefunden und damit eine Spracheingabe für meine App gemacht:
https://github.com/gmilette/Say-the-Magic-Word-/blob/master/src/root/magicword/MagicWord.java

Nun bekomme ich mit dem String "https://github.com/gmilette/Say-the-Magic-Word-/blob/master/src/root/magicword/MagicWord.java" die Eingabe.
Leider muss ich gestehen das ich noch ein paar Probleme mit übergeben und zurückgeben von Werten habe.
Ich habe früher ja nur mit C/C++ gearbeitet und bei Java ist es ja ein wenig anders....
Naja, ich habe ein wenig gegooglet und ein paar beispiele verwendet um die Variable zurückzuliefern.

Aber leider habe ich es nicht ganz geschaft.


Letztendlich habe ich es damit versucht das ich den inhalt der Variable mit "SharedPreferences" zu speichern.
Aber irgendwie will es nicht ganz funktionieren.

Muss ich irgendwas tun damit ich in einer Methode Werte speichern kann mit SharedPreferences?
Ich habe es mit folgendem Code versucht:
In der OnCreate:
1final SharedPreferences SaveLoad = getSharedPreferences(PREFS_NAME, 0);
2final SharedPreferences.Editor editor = SaveLoad.edit();

In onActivityResult():
1editor.putString("Eingabe","" + mostLikelyThingHeard );
2editor.commit();

Antworten
ExKcir
  • Forum-Beiträge: 115

02.12.2012, 20:08:57 via Website

Halo nochmal,
ich habe jetzt den ganzen tag an dem blöden problem gearbeitet, hab gegooglet, probiert, gegooglet, probiert und immer weiter, aber irgendwie scheint es nicht gehen zu wollen.

Wie mache ich das am besten das ich den Wert der Variable "mostLikelyThingHeard" in der OnCreate verwenden kann?
Wie gebe ich da den Wert zurück?

Antworten
Gelöschter Account
  • Forum-Beiträge: 281

02.12.2012, 20:14:28 via Website

So wird das wohl gar nicht gehen - das Aufrufen des Intents zur Spracheingabe wird immer dazu führen, dass du in onActivityResult landest, und nicht wieder an der Stelle in onCreate, von der du offensichtlich deinen Intent abgefeuert hast. Und onCreate wird auch kein zweites Mal aufgerufen, so dass auch dein Ansatz mit den SharedPreferences bestenfalls bewirken würde, dass dir der Wert der Variablen beim NÄCHSTEN Start der Activity zur Verfügung stände. Was genau versuchst du eigentlich - also was soll deine App tun?

Antworten
ExKcir
  • Forum-Beiträge: 115

02.12.2012, 20:28:44 via Website

Thomas M.
So wird das wohl gar nicht gehen - das Aufrufen des Intents zur Spracheingabe wird immer dazu führen, dass du in onActivityResult landest, und nicht wieder an der Stelle in onCreate, von der du offensichtlich deinen Intent abgefeuert hast. Und onCreate wird auch kein zweites Mal aufgerufen, so dass auch dein Ansatz mit den SharedPreferences bestenfalls bewirken würde, dass dir der Wert der Variablen beim NÄCHSTEN Start der Activity zur Verfügung stände. Was genau versuchst du eigentlich - also was soll deine App tun?

Aso, ja ich glaube ich habe vorhin ein wenig vertan...
Ich will nicht das ich die Daten wieder im OnCreate verwenden kann sondern das ich sie im OnClickListener eines Buttons verwenden kann.

Also ich stelle es mir so vor:
Ich drücke auf den Button.
Dann wird die Spracheingabe aufgerufen und die eingabe wird in einer Variable gespeichert.
Dann soll ich die Variable irgendwie im OnClicklistener des Buttons weiterverwenden können.
Also das z.B nach aufruf der Spracheingabe die Eingabe in einem TextView ausgegeben wird...

Antworten
Gelöschter Account
  • Forum-Beiträge: 281

02.12.2012, 20:35:31 via Website

Da gilt das gleiche - alles was du per startActivityForResult Aufrufst kommt nicht da zurück, wo du es aufgerufen hast, sondern in onActivityResult. Das ist eben komplett anders als beim Aufruf einer Funktion.

Antworten
ExKcir
  • Forum-Beiträge: 115

02.12.2012, 20:48:50 via Website

Thomas M.
Da gilt das gleiche - alles was du per startActivityForResult Aufrufst kommt nicht da zurück, wo du es aufgerufen hast, sondern in onActivityResult. Das ist eben komplett anders als beim Aufruf einer Funktion.
Hm, was muss ich dann machen damit es so geht wie ich es will?

Antworten
Gelöschter Account
  • Forum-Beiträge: 281

02.12.2012, 20:58:02 via Website

Was immer du mit der Rückgabe in onClick machen willst, machst du ausgehend von onActivityResult...

Antworten
ExKcir
  • Forum-Beiträge: 115

02.12.2012, 21:04:22 via Website

Thomas M.
Was immer du mit der Rückgabe in onClick machen willst, machst du ausgehend von onActivityResult...
Ich rufe eine funktion der ich 4 Werte übergeben muss.

Aber wenn ich die im onActivityResult aufrufe funktioniert die ja nicht weil die Werte nicht übergeben werden können, oder?

Antworten
Gelöschter Account
  • Forum-Beiträge: 281

02.12.2012, 21:22:58 via Website

Kannst du mal was an Code posten?

Antworten
ExKcir
  • Forum-Beiträge: 115

02.12.2012, 21:36:55 via Website

Thomas M.
Kannst du mal was an Code posten?
Welchen genau?

Hier mal die Funktion die aufgerufen wird:
1private void Datenbank(EditText Eingabe,TextView Ausgabe, WebView WV, String temp)
In temp soll der Inhalt von mostLikelyThingHeard gespeichert sein

Reicht der oder soll ich noch was anderes posten?
Das mit der Spracheingabe ist ja fast gleich wie vom tutorial das ich verlinkt hatte.

Antworten
Gelöschter Account
  • Forum-Beiträge: 281

02.12.2012, 21:46:35 via Website

Ich vermute mal, dass du in deinem OnClickListener Referenzen der entsprechenden Typen (EditText usw.) per findViewById verschaffst, und dann kannst du die Gültigkeit dieser Referenzen doch einfach klassenlokal setzen (sie also nicht im OnClickListener deklarieren, sondern auf Activity-Ebene). Und dann stehen Sie dir auch im onActivityResult zur Verfügung.

Antworten
ExKcir
  • Forum-Beiträge: 115

02.12.2012, 22:09:42 via Website

Thomas M.
Ich vermute mal, dass du in deinem OnClickListener Referenzen der entsprechenden Typen (EditText usw.) per findViewById verschaffst, und dann kannst du die Gültigkeit dieser Referenzen doch einfach klassenlokal setzen (sie also nicht im OnClickListener deklarieren, sondern auf Activity-Ebene). Und dann stehen Sie dir auch im onActivityResult zur Verfügung.
Ja, fast.
Sie waren im OnCreate deklariert.
Ich habe sie jetzt vor dem OnCreate deklariert, jetzt muss ich nicht mehr die Werte übergeben.
Aber leider stürtzt jetzt die App beim starten ab, und logcat gibt leider auch keine Infos :(

Antworten
Gelöschter Account
  • Forum-Beiträge: 281

03.12.2012, 08:33:27 via Website

Du versuchst aber nicht, die Referenzen per findViewById sofort zu setzen, oder?

Antworten
ExKcir
  • Forum-Beiträge: 115

03.12.2012, 17:22:27 via Website

Thomas M.
Du versuchst aber nicht, die Referenzen per findViewById sofort zu setzen, oder?
Ach shit, das wars.
Das habe ich total übersehen .

Jetzt funktioniert es perfekt, danke :)

Antworten