在Android中播放带有MediaPlayer的mp3文件列表 [英] Play list of mp3 file with MediaPlayer in Android

查看:1049
本文介绍了在Android中播放带有MediaPlayer的mp3文件列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在使用Android中的MediaPlayer重现多个mp3文件时遇到问题。
我能够重现一个单独的文件,但我没有发现一个接一个地重现不同文件没什么用。

I have a problem to reproduce more than one mp3 file using MediaPlayer in Android. I'm able to reproduce one single file but I did not find nothing useful to reproduce different files one after the other.

我现在使用的代码重现一个文件是:

The code that now I use to reproduce one file is:

public MediaPlayer mediaPlayer = null;

public void playP(View view) {

    if (mediaPlayer == null) {
        mediaPlayer = MediaPlayer.create(MainActivity.this, R.raw.music);
    }
    mediaPlayer.start();

}

如何修改它以重现更多的文件列表?

How can I modify it to reproduce more a list of file?

谢谢

推荐答案

创建你的音乐列表想要包含在播放列表中。然后跟踪正在播放的音乐,一旦完成,就开始列表中的下一个音乐。

Create a list of the music that you want to include in playlist. Then keep track of the music that is playing and once finished start the next in the list.

喜欢这个

import android.media.MediaPlayer;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;

import java.util.ArrayList;
import java.util.Timer;
import java.util.TimerTask;


public class MainActivity extends AppCompatActivity {

    Timer timer;
    MediaPlayer mp;
    ArrayList<Integer> playlist;
    int i=0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        playlist = new ArrayList<>();
        playlist.add(R.raw.a1);
        playlist.add(R.raw.a2);
        mp = MediaPlayer.create(this,playlist.get(0));
        mp.start();
        timer = new Timer();
        if (playlist.size()>1) playNext();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    public void playNext() {
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                mp.reset();
                mp = MediaPlayer.create(MainActivity.this,playlist.get(++i));
                mp.start();
                if (playlist.size() > i+1) {
                    playNext();
                }
            }
        },mp.getDuration()+100);
    }

    @Override
    public void onDestroy() {
        if (mp.isPlaying())
            mp.stop();
        timer.cancel();
        super.onDestroy();
    }
}

这篇关于在Android中播放带有MediaPlayer的mp3文件列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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