2012-11-22 37 views
1

我有一個soundpool,將加載SD卡中的文件,我用mstreamID來停止它,我在OnLoadCompleteListener中使用mstreamID,因此可以加載文件。我使用2個按鈕來播放soundpool不同的聲音。但是,當我點擊第一個按鈕,並播放1聲音時,我點擊第二個按鈕,它會停止第一個按鈕的聲音。Soundpool不同streamid

這裏是我的代碼:

public class MainActivity extends Settings { 
     SoundPool mSoundPool; 
     int mSoundId; 
     int mStreamId = 0; 
@Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
      this.setVolumeControlStream(AudioManager.STREAM_MUSIC); 
    mSoundPool = new SoundPool(5, AudioManager.STREAM_MUSIC, 0); 
      mSoundPool 
        .setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() { 
         public void onLoadComplete(SoundPool soundPool, 
           int sampleId, int status) { 
          mStreamId = soundPool.play(sampleId, 1, 1, 1, 0, 1f); 
} 
       }); 

    } 
//OnClick 
public void button1(View view) { 
     if (mStreamId != 0) { 
      mSoundPool.stop(mStreamId); 
     } 
// et1 is extended from Settings.java 
     String path = getFullFilePath(getApplicationContext(), et1.getText() 
       .toString()); 
     mSoundId = mSoundPool.load(path, 1); 
    } 
public void button2(View view) { 
     if (mStreamId != 0) { 
      mSoundPool.stop(mStreamId); 
     } 

     String path = getFullFilePath(getApplicationContext(), et2.getText() 
       .toString()); 
     mSoundId = mSoundPool.load(path, 1); 
    } 

回答

1

閱讀文檔請,什麼是你想說的東西?

  1. 如果不卸載它,請不要一次加載同一個文件。
  2. 使用SoundPool時在開始時加載所有聲音。
  3. streamId一直在增加,你永遠不會得到相同的streamId。