SoundPool fail

  • 1 Antworten
  • Letztes Antwortdatum
Jaiel

Jaiel

Dauer-User
235
Hallo ich kriege folgenden LogCat:

PHP:
07-06 01:39:49.279: E/AudioTrack(18668): AudioFlinger could not create track, status: -12
07-06 01:39:49.279: E/SoundPool(18668): Error creating AudioTrack

Ich spiele einen kurzen Sound ab. Ich hab so weit alles richtig gemacht in der Initialisierung und so weiter.

Der Sound wird richtig geladen ich setze einen entsprechenden boolean der das anzeigt. Und dann spiele ich den sound mit Hilfe der ID ab.

So jetzt tue ich das zum Beispiel ganz oft hintereinander. Jedoch , ich glaube nach 20-30 mal schnell hintereinander weg spielen, bricht der Sound für kurze Zeit ab (vom Gefühl her wird es leise) und dann gehts wieder 20-30 mal wieder normal weiter, dann wieder langsam leiser. Und es werden diese Fehler gemeldet.

Ich konnte bis Heute nciht rausfinden was der Fehlercode -12 bedeutet.

Wie gesagt es ist alles geladen nur hat er Probleme ganz viele Streams hintereinander zu spielen.

Ich habe mittlerweile den Streamparameter meines Soundpools von 50 auf 500 erweitert. Hat ncihts gebracht...

Ich hatte dieses Problem schonmal mitSound da waren sie schlicht zu kurz da kam genau diese Fehlermeldung.

Aber hier verstehe ich das nicht, er versagt auch ncoh periodisch also muss es dafür einen guten Grund geben wieso ich es falsch mache und was genau. Denn der Fehler tritt auch auf anderen Geräten auf.

edit: Das laden der Sound passiert auch nur einmal diese wird in onCreate aufgerufen und nur wenn savedinstancestate null ist
und ich habe versucht diese exception genau dann wenn cih es abspiele zu catchen aber das scheint wohl im Hintergrund zu passieren

Falls ihr Code braucht:

So werden die Sound initialisiert:
PHP:
    /**
    * sets up the sounds
    */
    @SuppressWarnings("deprecation")
    public void setUpSounds()
    {
        soundPool=new SoundPool(500,AudioManager.STREAM_MUSIC,0);
        soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener()
        {
            @Override
            public void onLoadComplete(SoundPool soundPool, int sampleId,int status) 
            {
                if(status!=0)
                    return;
                if(sampleId==explodingSoundID)
                {
                    explodingSoundLoaded=true;
                }
                else if(sampleId==chargingSoundID)
                {
                    chargingSoundLoaded=true;
                }
                ...
            }
           
        });
       
        chargingSoundID=soundPool.load(this,R.raw.chargingsound, 1);
        explodingSoundID=soundPool.load(this, R.raw.dotexplosionsound,1);
        ...
    }

und das ist ein Sound abspielen Beispiel:

PHP:
    /**
     * plays the buttonclick sound
     */
    public void playButtonClickSound()
    {
        if(soundFXOn&&pAct.buttonClickSoundLoaded)
        {
            pAct.soundPool.play(pAct.buttonClickSoundID,1f, 1f, 0, 0, 1.0f);
        }
    }

Danke schonmal
 
Zuletzt bearbeitet:
Und hier ein Beispiel damit ihr es euch besser "visualisieren" könnt :Playing: Sprachmemo_004.mp3 - picosong

Man hört dort die Pausen es sollte igenltich durchgehend sein...sowie ich das richtig gehört habe sind es dch ca alle 7-10 plays bevor er abbricht udn dann geht es von vorne los
 
Zurück
Oben Unten