1. Wir haben diesmal 2 Gewinnspiele zeitgleich für euch - Gewinne einmal ein UMI Plus E - Beim 2ten könnt ihr ein Nomu S30 gewinnen!
  1. Keine_Angabe, 11.03.2012 #1
    Keine_Angabe

    Keine_Angabe Threadstarter Android-Hilfe.de Mitglied

    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

    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

    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

  5. Keine_Angabe, 12.03.2012 #5
    Keine_Angabe

    Keine_Angabe Threadstarter Android-Hilfe.de Mitglied

    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

    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

    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

Besucher kamen mit folgenden Begriffen auf unsere Seite:

  1. here text-to-speech funktioniert nicht