setNextMediaPlayer不起作用 [英] setNextMediaPlayer not working

查看:347
本文介绍了setNextMediaPlayer不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试找出如何使用android的MediaPlayer方法setNextMediaPlayer,该方法应该从一个播放器(歌曲)平滑过渡到另一个播放器(歌曲).但是由于缺少文档,所以不知道如何使用该方法.

I am trying to find out how to use the android's MediaPlayer method setNextMediaPlayer which should smoothly transition from one player (song) to another. But do not know how to use the method since there is a lack of documentation.

这是我的工作,它不起作用:

This is what i do and it does not work:

final MediaPlayer mp1 = new MediaPlayer();
    final MediaPlayer mp2 = new MediaPlayer();

    try {
        mp1.setDataSource("http://song1.MP3");
        mp2.setDataSource("http://song2.mp3");


        mp1.prepareAsync();

        mp1.setOnPreparedListener(new OnPreparedListener() {

            @Override
            public void onPrepared(MediaPlayer mp) {
                mp1.start();
            }
        });


        mp1.setNextMediaPlayer(mp2);

        mp1.setOnCompletionListener(new OnCompletionListener() {

            @Override
            public void onCompletion(MediaPlayer mp) {
                mp2.prepareAsync();
                mp2.setOnPreparedListener(new OnPreparedListener() {

                    @Override
                    public void onPrepared(MediaPlayer mp) {
                        mp2.start();
                    }
                });


            }
        });

    } catch (IllegalArgumentException e) {}

第一首歌曲开始播放.但是完成后,第二个就不会开始.

So the first song plays. But after it finishes the second does not start.

推荐答案

使其正常工作.

mp1.setDataSource(song1);

        mp1.prepareAsync();

        mp1.setOnPreparedListener(new OnPreparedListener() {

            @Override
            public void onPrepared(MediaPlayer mp) {
                mp1.start();
            }
        });
        //mp1.start();
        //mp1.seekTo(1000*100);

        mp2.setDataSource(song2);
        mp2.prepare();

        mp1.setNextMediaPlayer(mp2);

唯一的问题是第二个媒体播放器不能称为异步(即mp2.prepareAsync()).我不知道为什么,但是如果您这样尝试,它将无法启动,这是一件坏事:/..

The only problem is that the second mediaplayer cannot be called as async (i.e. mp2.prepareAsync()). I do not know why, but if you try it like that it does not start, which is a bad thing :/.

这篇关于setNextMediaPlayer不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆