Java 如何播放原始文件夹中的所有mp3文件如果第一个文件已完成,则第二个文件将开始播放

Java 如何播放原始文件夹中的所有mp3文件如果第一个文件已完成,则第二个文件将开始播放,java,android-studio,android-mediaplayer,media-player,Java,Android Studio,Android Mediaplayer,Media Player,我想连续播放原始文件夹中的所有mp3文件,但用户仍单击“暂停”按钮。是否有任何方法循环所有文件并播放第一、第二、第三等等,直到用户暂停它 变量 ImageView playBtn; private MediaPlayer mediaPlayer; public static int[] SoundIndex; public static int position = 0; 原始文件夹中的音频文件 SoundIndex = new int[] { R.raw.r0, R.

我想连续播放原始文件夹中的所有mp3文件,但用户仍单击“暂停”按钮。是否有任何方法循环所有文件并播放第一、第二、第三等等,直到用户暂停它

变量

ImageView playBtn;
private MediaPlayer mediaPlayer;
public static int[] SoundIndex;
public static int position = 0;
原始文件夹中的音频文件

SoundIndex = new int[] {
            R.raw.r0, R.raw.r1, R.raw.r2, R.raw.r3, R.raw.r4, R.raw.r5, R.raw.r6, R.raw.r7, R.raw.r8, R.raw.r9,
            R.raw.r10, R.raw.r11, R.raw.r12, R.raw.r13, R.raw.r14, R.raw.r15, R.raw.r16, R.raw.r17, R.raw.r18, R.raw.r19,
            R.raw.r20, R.raw.r21, R.raw.r22, R.raw.r23, R.raw.r24, R.raw.r25, R.raw.r26, R.raw.r27, R.raw.r28, R.raw.r29,
            R.raw.r30, R.raw.r31, R.raw.r32, R.raw.r33, R.raw.r34, R.raw.r35, R.raw.r36, R.raw.r37, R.raw.r38, R.raw.r39,
            R.raw.r40, R.raw.r41, R.raw.r42, R.raw.r43, R.raw.r44, R.raw.r45, R.raw.r46, R.raw.r47, R.raw.r48, R.raw.r49,
            R.raw.r50, R.raw.r51, R.raw.r52, R.raw.r53, R.raw.r54, R.raw.r55, R.raw.r56, R.raw.r57, R.raw.r58, R.raw.r59,
            R.raw.r60, R.raw.r61, R.raw.r62, R.raw.r63, R.raw.r64, R.raw.r65, R.raw.r66, R.raw.r67, R.raw.r68, R.raw.r69,
            R.raw.r70, R.raw.r71, R.raw.r72, R.raw.r73, R.raw.r74, R.raw.r75, R.raw.r76, R.raw.r77, R.raw.r78, R.raw.r79,
            R.raw.r80, R.raw.r81, R.raw.r82, R.raw.r83 };
单击按钮播放所有mp3文件

是否有任何方法循环所有文件并播放第一、第二、第三等等,直到用户暂停它。请有人告诉我哪种方法或逻辑可以应用于播放原始文件夹中的所有音频连续播放用户单击暂停

playBtn = findViewById(R.id.playBtn);

    playBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (mediaPlayer == null) {
                mediaPlayer = MediaPlayer.create(getApplicationContext(), SoundIndex[position]);
                playBtn.setBackgroundResource(R.drawable.pause);
                mediaPlayer.start();
            } else {
                if (mediaPlayer.isPlaying()) {
                    playBtn.setBackgroundResource(R.drawable.play);
                    mediaPlayer.pause();
                } else {
                    mediaPlayer.start();
                    playBtn.setBackgroundResource(R.drawable.pause);
                }
            }
        }
    });

我找到了在continue循环中播放所有mp3文件的解决方案

public class AutoActivity extends AppCompatActivity {

ImageView playBtn;

private int[] soundIndex = {
        R.raw.r0, R.raw.r1, R.raw.r2, R.raw.r3, R.raw.r4, R.raw.r5, R.raw.r6, R.raw.r7, R.raw.r8, R.raw.r9,
        R.raw.r10, R.raw.r11, R.raw.r12, R.raw.r13, R.raw.r14, R.raw.r15, R.raw.r16, R.raw.r17, R.raw.r18, R.raw.r19,
        R.raw.r20, R.raw.r21, R.raw.r22, R.raw.r23, R.raw.r24, R.raw.r25, R.raw.r26, R.raw.r27, R.raw.r28, R.raw.r29,
        R.raw.r30, R.raw.r31, R.raw.r32, R.raw.r33, R.raw.r34, R.raw.r35, R.raw.r36, R.raw.r37, R.raw.r38, R.raw.r39,
        R.raw.r40, R.raw.r41, R.raw.r42, R.raw.r43, R.raw.r44, R.raw.r45, R.raw.r46, R.raw.r47, R.raw.r48, R.raw.r49,
        R.raw.r50, R.raw.r51, R.raw.r52, R.raw.r53, R.raw.r54, R.raw.r55, R.raw.r56, R.raw.r57, R.raw.r58, R.raw.r59,
        R.raw.r60, R.raw.r61, R.raw.r62, R.raw.r63, R.raw.r64, R.raw.r65, R.raw.r66, R.raw.r67, R.raw.r68, R.raw.r69,
        R.raw.r70, R.raw.r71, R.raw.r72, R.raw.r73, R.raw.r74, R.raw.r75, R.raw.r76, R.raw.r77, R.raw.r78, R.raw.r79,
        R.raw.r80, R.raw.r81, R.raw.r82, R.raw.r83};
int mCompleted = 0;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_auto);

    final MediaPlayer mediaPlayer = MediaPlayer.create(this, soundIndex[0]);


    //Play button initialize
    playBtn = findViewById(R.id.playBtn);

    playBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (mediaPlayer.isPlaying()){
                mediaPlayer.pause();
                playBtn.setImageResource(R.drawable.play);
            }else {
                mediaPlayer.start();
                playBtn.setImageResource(R.drawable.pause);
            }
        }
    });
    mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mp) {
            mCompleted++;
            mp.reset();
            if (mCompleted < soundIndex.length) {
                try {
                    AssetFileDescriptor afd = getResources().openRawResourceFd(soundIndex[mCompleted]);
                    if (afd != null) {
                        mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
                        afd.close();
                        mp.prepare();
                        mp.start();
                    }
                } catch (Exception ex) {
                    ex.printStackTrace();
                }

            } else if (mCompleted >= soundIndex.length) {
                mCompleted = 0;
                try {
                    AssetFileDescriptor afd = getResources().openRawResourceFd(soundIndex[mCompleted]);
                    if (afd != null) {
                        mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
                        afd.close();
                        mp.prepare();
                        mp.start();
                    }
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
            } else {
                mCompleted = 0;
                mp.release();
                mp = null;
            }

        }
    });
}
公共类自动活动扩展了AppCompatActivity{
IMAGEVIEWPLAYBTN;
私有int[]声音索引={
R.raw.r0、R.raw.r1、R.raw.r2、R.raw.r3、R.raw.r4、R.raw.r5、R.raw.r6、R.raw.r7、R.raw.r8、R.raw.r9、,
R.raw.r10、R.raw.r11、R.raw.r12、R.raw.r13、R.raw.r14、R.raw.r15、R.raw.r16、R.raw.r17、R.raw.r18、R.raw.r19、,
R.raw.r20、R.raw.r21、R.raw.r22、R.raw.r23、R.raw.r24、R.raw.r25、R.raw.r26、R.raw.r27、R.raw.r28、R.raw.r29、,
R.raw.r30、R.raw.r31、R.raw.r32、R.raw.r33、R.raw.r34、R.raw.r35、R.raw.r36、R.raw.r37、R.raw.r38、R.raw.r39、,
R.raw.r40、R.raw.r41、R.raw.r42、R.raw.r43、R.raw.r44、R.raw.r45、R.raw.r46、R.raw.r47、R.raw.r48、R.raw.r49、,
R.raw.r50、R.raw.r51、R.raw.r52、R.raw.r53、R.raw.r54、R.raw.r55、R.raw.r56、R.raw.r57、R.raw.r58、R.raw.r59、,
R.raw.r60、R.raw.r61、R.raw.r62、R.raw.r63、R.raw.r64、R.raw.r65、R.raw.r66、R.raw.r67、R.raw.r68、R.raw.r69、,
R.raw.r70、R.raw.r71、R.raw.r72、R.raw.r73、R.raw.r74、R.raw.r75、R.raw.r76、R.raw.r77、R.raw.r78、R.raw.r79、,
R.raw.r80,R.raw.r81,R.raw.r82,R.raw.r83};
int mcomcompleted=0;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_auto);
final MediaPlayer=MediaPlayer.create(这个,soundIndex[0]);
//播放按钮初始化
playBtn=findviewbyd(R.id.playBtn);
playBtn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
if(mediaPlayer.isPlaying()){
mediaPlayer.pause();
playBtn.setImageResource(R.drawable.play);
}否则{
mediaPlayer.start();
playBtn.setImageResource(R.drawable.pause);
}
}
});
mediaPlayer.setOnCompletionListener(新的mediaPlayer.OnCompletionListener(){
@凌驾
完成时的公共作废(MediaPlayer mp){
mCompleted++;
mp.reset();
如果(mCompleted=soundIndex.length){
mCompleted=0;
试一试{
AssetFileDescriptor afd=getResources().openRawResourceFd(声音索引[McCompleted]);
如果(afd!=null){
setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());
afd.close();
mp.prepare();
mp.start();
}
}捕获(例外情况除外){
例如printStackTrace();
}
}否则{
mCompleted=0;
mp.release();
mp=null;
}
}
});
}
这是完整的代码,您可以在循环中连续播放歌曲