2012-11-22 57 views
0

所以我有soundpool OnLoadCompleteListener它有这个代码mStreamId = soundPool.play(sampleId,1,1,0,1f);我有2个按钮,将发挥diffrent soundpools.I使用mStreamId停止soundpool.My问题是当我点击第一个按钮,它播放声音,我点击第二个按钮,它会停止第一个按钮的声音。这里是我的代码:SoundPool Streams

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

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

回答

0

因为你告诉它。 如果要让声音播放完成,请移除停止方法呼叫。 Soundpool会在播放声音时从池中返回下一个可用流。