首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在活动的背景下播放大量的声音?

如何在活动的背景下播放大量的声音?
EN

Stack Overflow用户
提问于 2015-09-20 11:33:04
回答 2查看 112关注 0票数 3

例如,我想播放3首歌。当第一首歌结束时,第二首歌开始,当第二首歌结束时,第三首歌开始,当第三首歌结束时,第一首歌再次开始,以此类推。这里用的是mp.setOnCompletionListener吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-20 11:52:24

你是正确的。你可以做这样简单的事情:

代码语言:javascript
复制
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 of it,它将播放mp2和onCompletion of mp2,它将播放mp3和onCompletion of mp3,它将再次播放mp1等等。

票数 2
EN

Stack Overflow用户

发布于 2015-09-20 13:10:17

首先声明3个MediaPlayer文件:

代码语言:javascript
复制
MediaPlayer song1;
MediaPlayer song2;
MediaPlayer song3;

然后初始化MediaPlayer对象:

代码语言:javascript
复制
song1 = MediaPlayer.create(this, R.raw.exampleSong1);
song2 = MediaPlayer.create(this, R.raw.exampleSong2);
song3 = MediaPlayer.create(this, R.raw.exampleSong3);

现在开始第一个媒体文件

代码语言:javascript
复制
song1.start();

现在,在创建了每个实例之后,您应该向每个MediaPlayer对象添加一个setOnCompletionListener,如下所示:

代码语言:javascript
复制
song1.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
    @Override
    public void onCompletion(MediaPlayer mp) {
        song2.start();
    }
});

对第二个和第三个MediaPlayer文件执行相同的操作:

代码语言:javascript
复制
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();
    } 
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32678910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档