1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

TextToSpeech, wo ist Fehler?

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Keine_Angabe, 11.03.2012.

  1. Keine_Angabe, 11.03.2012 #1
    Keine_Angabe

    Keine_Angabe Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    81
    Erhaltene Danke:
    9
    Registriert seit:
    11.03.2012
    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
     
  2. swordi, 11.03.2012 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    schau mal in den logcat - da findest vielleicht was hilfreiches
     
  3. Keine_Angabe, 11.03.2012 #3
    Keine_Angabe

    Keine_Angabe Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    81
    Erhaltene Danke:
    9
    Registriert seit:
    11.03.2012
    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 :)
     
  4. Sentence, 12.03.2012 #4
    Sentence

    Sentence Erfahrener Benutzer

    Beiträge:
    242
    Erhaltene Danke:
    51
    Registriert seit:
    27.01.2011
    Phone:
    S3, S6 Edge
  5. Keine_Angabe, 12.03.2012 #5
    Keine_Angabe

    Keine_Angabe Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    81
    Erhaltene Danke:
    9
    Registriert seit:
    11.03.2012
    Vielen Dank.
    Heute funktioniert es aufeinmal, obwohl ich nichts am Code geändert habe. Bekomme aber trotzdem noch die selben roten Fehlermeldungen ;)
     
  6. Sentence, 12.03.2012 #6
    Sentence

    Sentence Erfahrener Benutzer

    Beiträge:
    242
    Erhaltene Danke:
    51
    Registriert seit:
    27.01.2011
    Phone:
    S3, S6 Edge
    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
     
  7. Keine_Angabe, 12.03.2012 #7
    Keine_Angabe

    Keine_Angabe Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    81
    Erhaltene Danke:
    9
    Registriert seit:
    11.03.2012
    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
     

Diese Seite empfehlen