【发布时间】:2021-09-19 06:23:16
【问题描述】:
我编写了一个简单的代码来构建一个适用于 android 的钢琴应用程序。当我按下相关按钮时它可以播放音符,但是当我按下一个又一个按钮时,两个音符一起播放。我想在按下新按钮时停止预览按钮的声音。我只想一次播放一种声音。我使用了 soundpool.stop(streamID) 但它不起作用。请问谁能解释一下如何解决这个问题?
public class MainActivity extends AppCompatActivity {
private Button a,b,c,d,e,f,g;
private SoundPool soundPool;
private int sound_a,sound_b,sound_c,sound_d,sound_e,sound_f,sound_g,sound_h;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
a = (Button) findViewById(R.id.a);
b = (Button) findViewById(R.id.b);
c = (Button) findViewById(R.id.c);
d = (Button) findViewById(R.id.d);
e = (Button) findViewById(R.id.e);
f = (Button) findViewById(R.id.f);
g = (Button) findViewById(R.id.g);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
soundPool = new SoundPool.Builder().setMaxStreams(5).build();
}else {
soundPool = new SoundPool(5, AudioManager.STREAM_MUSIC,0);
}
sound_a = soundPool.load(this,R.raw.a3,1);
sound_b = soundPool.load(this,R.raw.b3,1);
sound_c = soundPool.load(this,R.raw.c3,1);
sound_d = soundPool.load(this,R.raw.d3,1);
sound_e = soundPool.load(this,R.raw.e3,1);
sound_f = soundPool.load(this,R.raw.f3,1);
sound_g = soundPool.load(this,R.raw.g3,1);
a.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
soundPool.play(sound_a,1,1,0,0,1);
}
});
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
soundPool.play(sound_b,1,1,0,0,1);
}
});
c.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
soundPool.play(sound_c,1,1,0,0,1);
}
});
d.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
soundPool.play(sound_d,1,1,0,0,1);
}
});
e.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
soundPool.play(sound_e,1,1,0,0,1);
}
});
f.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
soundPool.play(sound_f,1,1,0,0,1);
}
});
g.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
soundPool.play(sound_g,1,1,0,0,1);
}
});
}
}
【问题讨论】:
标签: android android-studio soundpool