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

问题描述

我想连续播放原始文件夹中的所有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);
                }
            }
        }
    });

解决方法

我找到了在继续循环中播放所有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.getLength());
                        afd.close();
                        mp.prepare();
                        mp.start();
                    }
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
            } else {
                mCompleted = 0;
                mp.release();
                mp = null;
            }

        }
    });
}

这是完整的代码,您可以连续循环播放歌曲

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...