所以我一直在尝试从youtube教程中制作Soundbox应用。到目前为止,它可以正常工作,但是我有一些问题,我不知道如何解决。。。我是100%的初学者,我尝试搜索以前的主题,但没有任何效果。因此,当我按下一个按钮时会播放声音,但问题是当我按下另一个按钮时,它会停止播放第一个声音。我想保持第一个声音在播放,而第二个声音在按下按钮时开始播放。可能吗?
Ps:如何也可以通过“停止”按钮停止所有歌曲?
谢谢
这是我的代码:
package com.example.appcamp;
import androidx.appcompat.app.AppCompatActivity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;public class MainActivity extends AppCompatActivity {
private MediaPlayer mPlayer = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button criloin= (Button) findViewById(R.id.criloin1);
criloin.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
playSound(R.raw.cri);
}
});
Button criloin2= (Button) findViewById(R.id.criloin2);
criloin2.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
playSound(R.raw.cri2);
}
});
Button criloin3= (Button) findViewById(R.id.criloin3);
criloin3.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
playSound(R.raw.cri3);
}
});
Button criloin4= (Button) findViewById(R.id.criloin4);
criloin4.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
playSound(R.raw.cri4);
}
});
Button ambiance1= (Button) findViewById(R.id.ambiance1);
ambiance1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
playSound(R.raw.marais);
}
});
}
@Override
public void onPause(){
super.onPause();
if(mPlayer !=null){
mPlayer.stop();
mPlayer.release();
}
}
private void playSound(int resId){
if(mPlayer != null){
mPlayer.stop();
mPlayer.release();
}
mPlayer = MediaPlayer.create(this, resId);
mPlayer.start();
}
}
if(mPlayer != null){
mPlayer.stop();
mPlayer.release();
}
来自playSound()函数。它应该看起来像这样:
private void playSound(int resId){ mPlayer = MediaPlayer.create(this, resId); mPlayer.start(); } }
并且要停止所有音乐,您应该对每种音乐使用单独的mediaPlayer对象,以停止和隐式停止所有功能,例如mp1.stop(); mp2.stop();。等等。希望对您有用。