簡體   English   中英

如果第一個完成然后第二個將開始,如何播放原始文件夾中的所有 mp3 文件

[英]how to play all mp3 files from raw folder if first is complete then second will be start

我想連續播放原始文件夾中的所有 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.getStartOffset(), afd.getLength());
                        afd.close();
                        mp.prepare();
                        mp.start();
                    }
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
            } else {
                mCompleted = 0;
                mp.release();
                mp = null;
            }

        }
    });
}

這是完整的代碼,您可以循環播放歌曲

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM