如何在 activity 的背景中播放很多声音?
How to play a lot of sounds in background of an activity?
比如我要播放3首歌曲。第一首结束,第二首开始,第二首结束,第三首开始,第三首结束,第一首再次开始,以此类推。这里用的是mp.setOnCompletionListener
吗?
你是对的。你可以像这样做一些简单的事情:
public class MainActivity extends Activity {
MediaPlayer mp1, mp2, mp3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mp1 = MediaPlayer.create(this, R.raw.music_1);
mp2 = MediaPlayer.create(this, R.raw.music_2);
mp3 = MediaPlayer.create(this, R.raw.music_3);
mp1.start();
mp1.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp2.start();
}
});
mp2.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp3.start();
}
});
mp3.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp1.start();
}
});
}
}
这将播放 mp1,onCompletion 将播放 mp2,onCompletion mp2 将播放 mp3,onCompletion mp3 将再次播放 mp1,依此类推...
首先声明3个MediaPlayer文件:
MediaPlayer song1;
MediaPlayer song2;
MediaPlayer song3;
然后初始化MediaPlayer
个对象:
song1 = MediaPlayer.create(this, R.raw.exampleSong1);
song2 = MediaPlayer.create(this, R.raw.exampleSong2);
song3 = MediaPlayer.create(this, R.raw.exampleSong3);
现在开始第一个媒体文件
song1.start();
现在创建每个实例后,您应该向每个 MediaPlayer
对象添加一个 setOnCompletionListener
,如下所示:
song1.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
song2.start();
}
});
对第二个和第三个 MediaPlayer 文件执行相同的操作:
song2.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
song3.start();
}
});
song3.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
song1.start();
}
});
比如我要播放3首歌曲。第一首结束,第二首开始,第二首结束,第三首开始,第三首结束,第一首再次开始,以此类推。这里用的是mp.setOnCompletionListener
吗?
你是对的。你可以像这样做一些简单的事情:
public class MainActivity extends Activity {
MediaPlayer mp1, mp2, mp3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mp1 = MediaPlayer.create(this, R.raw.music_1);
mp2 = MediaPlayer.create(this, R.raw.music_2);
mp3 = MediaPlayer.create(this, R.raw.music_3);
mp1.start();
mp1.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp2.start();
}
});
mp2.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp3.start();
}
});
mp3.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp1.start();
}
});
}
}
这将播放 mp1,onCompletion 将播放 mp2,onCompletion mp2 将播放 mp3,onCompletion mp3 将再次播放 mp1,依此类推...
首先声明3个MediaPlayer文件:
MediaPlayer song1;
MediaPlayer song2;
MediaPlayer song3;
然后初始化MediaPlayer
个对象:
song1 = MediaPlayer.create(this, R.raw.exampleSong1);
song2 = MediaPlayer.create(this, R.raw.exampleSong2);
song3 = MediaPlayer.create(this, R.raw.exampleSong3);
现在开始第一个媒体文件
song1.start();
现在创建每个实例后,您应该向每个 MediaPlayer
对象添加一个 setOnCompletionListener
,如下所示:
song1.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
song2.start();
}
});
对第二个和第三个 MediaPlayer 文件执行相同的操作:
song2.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
song3.start();
}
});
song3.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
song1.start();
}
});