2011-10-16 10 views
5

私はStackOverflowを検索しましたが、私のようなシューターテーションは見つかりませんでした。私は各ボタンがサウンドファイルを再生する4つのボタンを使用しています。私はSoundPoolを使用しています

SoundPool sound = new SoundPool(4, AudioManager.STREAM_MUSIC, 0);

私も、LogCatでI通知を作成するためにログを使用していますOnLoadCompleteListener()を使用しています。
エミュレータでプログラムを起動すると、4つのサンプルすべてがロード完了しています。プログラム中には3つのサウンドが再生されますが、常に以下のようになります。
WARN/SoundPool(4842): sample 0 not READY

いいアイデアです。私は非常に気難しいです。サウンドファイルは、方形波トーンを再生する16ビットpcmウェーブファイルです。
負荷コード:
sound.setOnLoadCompleteListener(new OnLoadCompleteListener(){Android 2.2 - SoundPoolサンプル0は準備ができていません

 @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); 


再生音:

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

+0

音を読み込んで再生するコードを含めるように質問を編集します。 – Squonk

答えて

2

私は同じ問題を抱えています。私の実験からは、IDの処理に何か問題があるように見えます。 SoundPoolは数字の0のサウンドIDが好きではありません。

私は回避策を見つけました。サンプルIDを0ではなく1で開始してください。

+0

どうやってそれをしますか?私はあなたのサンプルIDを1で始めることを意味しますか? –

+0

Hmmm、私はHashMapでSoundPoolを使って、すべての異なる音を追跡していました。 HashMapでは、ID(「キー」とも呼ばれます)を手動で設定します。あなたがHashMapを使用していないように聞こえるので、私のコメントはおそらく意味をなさないでしょう。とにかく幸運! –

関連する問題