//this is inside onCreate function
//layoutRost is declared as private, inside onCreate is initialized, also speak_rost...
layoutRost.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
speak_rost.start();
speak_rost.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
speak_rost.release();
}
});
}
});
第一次我按下它,按钮和音频工作正常,第二次我收到错误:再次打开应用程序
自从我上次接触 Android 以来已经有一段时间了,我创建了自己的播放声音的方法,考虑到我发布了一个应用程序,它工作得很好,所以也许它会有所帮助
//method that plays a sound effects
public void playMedia(int resid){
mediaPlayer = MediaPlayer.create(this,resid);
mediaPlayer.start();
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
mp.release();
}
});
}
每次有东西要玩时,我都会将资源的 id 传递给此方法
//just initialize inside ClickListener, speak_rost, and after .setOnCompletionListener, I put speak_rost().start; that was ALL, very nice problem, now all my 50+ buttons/layouts are "in the right form" to play 100+ time, every time I needed. Thank you.
layoutRost.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
speak_rost = MediaPlayer.create(hundred.this, R.raw.asa);
speak_rost .setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mysound) {
mysound.release();
}
});
speak_rost .start();
}
});