TextToSpeech, wo ist Fehler?

Keine_Angabe

Keine_Angabe

Ambitioniertes Mitglied
9
Hallo,
ich bin noch ein Anfänger in Sachen Android App-Entwicklung und habe grade versucht meine erste kleine App zu erstellen. Diese ist sehr spartanisch und soll nur einen Text ausgeben. Doch irgendwie klappt dies nicht so ganz. Die App wird zwar auf dem Smartphone gestartet, doch steht dann dort nur der Titel der App und "Hello World, StartActivity!". Eine Stimme höre ich nicht. Kann vielleicht jemand von euch mal über meinen Code schauen?

Code:
package de.android.saghallo;

import java.util.Locale;
import android.app.Activity;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;

public class StartActivity extends Activity implements OnInitListener {
   
    private TextToSpeech tts;
    
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);  
        tts = new TextToSpeech(this, this);
    }
    
    @Override
    public void onInit(int arg0) {
        tts.setLanguage(Locale.GERMANY);
        tts.speak("Hallo Android!", TextToSpeech.QUEUE_FLUSH, null);
    }
}
Achja, habe die Android-Version 2.3.4 und in Eclipse habe ich beim Erstellen des Projekts 2.3.3 eingetragen.

Vielen Dank
 
schau mal in den logcat - da findest vielleicht was hilfreiches
 
Nun ja, da steht sehr viel in Rot^^ Aber das baut sich denke ich alles aufeinander auf.
Der erste Eintrag lautet:
Code:
Activity de.android.saghallo.StartActivity has leaked ServiceConnection android.speech.tts.TextToSpeech$1@40520cc0 that was originally bound here
Wobei de.android.saghallo mein Package und StartActivity die Klasse ist.

Hier mal der komplette Log:
Code:
03-11 23:10:15.989: E/ActivityThread(16226): Activity de.android.saghallo.StartActivity has leaked ServiceConnection android.speech.tts.TextToSpeech$1@40520cc0 that was originally bound here
03-11 23:10:15.989: E/ActivityThread(16226): android.app.ServiceConnectionLeaked: Activity de.android.saghallo.StartActivity has leaked ServiceConnection android.speech.tts.TextToSpeech$1@40520cc0 that was originally bound here
03-11 23:10:15.989: E/ActivityThread(16226):     at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:938)
03-11 23:10:15.989: E/ActivityThread(16226):     at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:833)
03-11 23:10:15.989: E/ActivityThread(16226):     at android.app.ContextImpl.bindService(ContextImpl.java:936)
03-11 23:10:15.989: E/ActivityThread(16226):     at android.content.ContextWrapper.bindService(ContextWrapper.java:347)
03-11 23:10:15.989: E/ActivityThread(16226):     at android.speech.tts.TextToSpeech.initTts(TextToSpeech.java:467)
03-11 23:10:15.989: E/ActivityThread(16226):     at android.speech.tts.TextToSpeech.<init>(TextToSpeech.java:433)
03-11 23:10:15.989: E/ActivityThread(16226):     at de.android.saghallo.StartActivity.onCreate(StartActivity.java:18)
03-11 23:10:15.989: E/ActivityThread(16226):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
03-11 23:10:15.989: E/ActivityThread(16226):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
03-11 23:10:15.989: E/ActivityThread(16226):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
03-11 23:10:15.989: E/ActivityThread(16226):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
03-11 23:10:15.989: E/ActivityThread(16226):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
03-11 23:10:15.989: E/ActivityThread(16226):     at android.os.Handler.dispatchMessage(Handler.java:99)
03-11 23:10:15.989: E/ActivityThread(16226):     at android.os.Looper.loop(Looper.java:130)
03-11 23:10:15.989: E/ActivityThread(16226):     at android.app.ActivityThread.main(ActivityThread.java:3691)
03-11 23:10:15.989: E/ActivityThread(16226):     at java.lang.reflect.Method.invokeNative(Native Method)
03-11 23:10:15.989: E/ActivityThread(16226):     at java.lang.reflect.Method.invoke(Method.java:507)
03-11 23:10:15.989: E/ActivityThread(16226):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
03-11 23:10:15.989: E/ActivityThread(16226):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)
03-11 23:10:15.989: E/ActivityThread(16226):     at dalvik.system.NativeStart.main(Native Method)

Wäre für jeden Hinweis dankbar :)
 
Vielen Dank.
Heute funktioniert es aufeinmal, obwohl ich nichts am Code geändert habe. Bekomme aber trotzdem noch die selben roten Fehlermeldungen ;)
 
Moin,
vermutlich meckert er, weil du den speicher nicht wieder freigibts.
Dazu solltest du einen OnUtteranceCompletedListener mitgeben. Der wird aufgerufen, nachdem der Satz gesprochen wurde um den Speicher freizugeben.

Lass die Acitivity einen OnUtteranceCompletedListener implementieren. Im onInit dann tts.setOnUtteranceCompletedListener(this);

und dann
@Override
public void onUtteranceCompleted(String utteranceId) {
tts.shutdown();
}

tts.speak solltest du auch nicht ins onInit packen, sondern in eine andere Methode, zb. nach einem klick auf einen Button oder dergleichen.

MfG
 
Vielen Dank für den Tipp, werd es später mal ausprobieren.
Ich hatte auch noch vor, einen Button und ein Textfeld zu implementieren, taste mich also langsam vor ;)

Grüße
 

Ähnliche Themen

U
  • unerfahrenerAppEntwickler
Antworten
3
Aufrufe
666
swa00
swa00
D
Antworten
3
Aufrufe
438
jogimuc
J
Zurück
Oben Unten