2011-07-09 11 views
0

SoundPoolに1つのサウンドをロードしようとしている場所にアプリケーションを作成しています。私が必要なときに再生レートを管理し、必要なときに再生し、欲しいです。しかし、私のSoundPoolはロードされていません。私はいろいろなものを変えようとしましたが、何も動かないようです。 LogLをOnLoadComplete関数に入れてロードするかどうかを調べ、実行時にログが表示されないようにする...おそらく自分のコードを見て誰かが助けてくれるかもしれません。ありがとう!SoundPoolがAndroid Appにロードされていない

private int currentVoice = 0; 
private SoundPool voices = null; 
.... 
public void onCreate(Bundle savedInstanceState) { 
.... 
    voices = new SoundPool(1, 3, 0); 
    voices.setOnLoadCompleteListener(this); 
.... 
} 
private void giveSentence() throws IOException { 
.... 
voices.release(); 
currentVoice = voices.load(this, sentences[index].voice, 1); 
voices.play(currentVoice, 1, 1, 1, 0, 1f); 

public void onLoadComplete(SoundPool soundPool, int sampleId, int status) { 
    soundPool.play(sampleId, 1, 1, 1, 0, 1f); 
    boolean loaded = true; 
    Log.d("Game","Is it loaded? " + loaded); 
} 
+0

自分自身を修正しました。私はvoices.release()をやっていました。何かがロードされる前に。何らかの理由でSoundPoolをオフにしたばかりです。 – lespommes

答えて

0

自分自身を修正しました。私はvoices.release()を行っていました。何かがロードされる前に。何らかの理由でSoundPoolをオフにしたばかりです。その行を取り出して、既にロードされているかどうかを確認した後にvoices.release()を実行しました。今それは動作します。

0

サウンドプールをonCreateメソッドのどこかで初期化する必要があります。

private SoundPool voices; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    voices = new SoundPool(1, 3, 0); 
    voices.setOnLoadCompleteListener(this); 
} 
+0

申し訳ありませんが、コードを削除しました。それらはすでにonCreateメソッドにあります。だからそれは問題ではない... – lespommes

関連する問題