2011-10-16 4 views
5

Ho cercato StackOverflow e non riesco a trovare un situtation come il mio. Sto usando quattro pulsanti con ciascun pulsante che riproduce un file audio.
Sto usando Soundpool:
SoundPool sound = new SoundPool(4, AudioManager.STREAM_MUSIC, 0);

Inoltre sto usando la OnLoadCompleteListener() che utilizza Entra per creare una notifica io in LogCat.
Quando avvio il programma nell'emulatore, vedo il caricamento completo di tutti e quattro i campioni. Durante il programma verranno riprodotti tre suoni, tuttavia, uno dirà sempre:
WARN/SoundPool(4842): sample 0 not READY

Qualsiasi idea .. perché sono abbastanza sbalordito. I file audio sono file wave pcm a 16 bit che riproducono toni quadrati. Codice
carico:
sound.setOnLoadCompleteListener(new OnLoadCompleteListener(){Android 2.2 - SoundPool sample 0 non è READY

 @Override 
     public void onLoadComplete(SoundPool sound, int sampleId, int status) { 
      if(status != 0) 
       Log.e("SOUND LOAD"," Sound ID: " + sampleId + " Failed to load."); 
      else 
       Log.i("SOUND LOAD"," Sound ID: " + sampleId + " loaded."); 
     } 
    }); 

    soundID[0] = sound.load(this, R.raw.greennote, 1); 
    soundID[1] = sound.load(this, R.raw.rednote, 1); 
    soundID[2] = sound.load(this, R.raw.yellownote, 1); 
    soundID[3] = sound.load(this, R.raw.bluenote, 1); 


Giocare Suono:

streamid.setStreamId(myActivity.sound.play(id, 0.5f, 0.5f, 0, 0, 1)); 

+0

Modifica la tua domanda per includere il codice che carica e riproduce i suoni. – Squonk

risposta

2

Sto avendo gli stessi problemi. Dai miei esperimenti, sembra che ci sia qualcosa di sbagliato nella gestione dell'ID. SoundPool non ama gli ID audio con il numero 0.

Quindi ho trovato un work-around. Inizia i miei ID campione con 1, non con 0. Spero che funzioni.

+0

Come si fa? Intendo iniziare i tuoi ID campione con 1? –

+0

Hmmm, stavo usando il SoundPool con una HashMap per tenere traccia di tutti i diversi suoni. Con HashMap, si imposta manualmente l'ID (chiamato anche 'chiave'). Poiché sembra che tu non stia usando una HashMap, il mio commento probabilmente non ha senso. Buona fortuna comunque! –