微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android studio-依次播放音频文件

如何解决android studio-依次播放音频文件

当我按下播放按钮时,我想使用android MediaPlayer逐一播放mp3文件。 当我运行代码时,音频文件同时运行,而不是顺序运行。我猜解决方案应该在onCompletion函数中-仅在最后一个完成后才开始新的mp3文件,但是我尝试了几种方法,但没有用。这是我的代码

package com.example.PlayerApp;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    MediaPlayer player;
    static List<Integer> audio_id_list = new ArrayList<Integer>();;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        audio_id_list.add(R.raw.audio1);
        audio_id_list.add(R.raw.audio2);
    }
    public void play(View v) {
        for (int i = 0; i < audio_id_list.size(); i++) {
            player = MediaPlayer.create(this,audio_id_list.get(i));
            player.setonCompletionListener(new MediaPlayer.OnCompletionListener() {
                @Override
                public void onCompletion(MediaPlayer mp) {
                    stopPlayer();
                }
            });
            player.start();
        }
    }
    public void pause(View v) {
        if (player != null) {
            player.pause();
        }
    }
    public void stop(View v) {
        stopPlayer();
    }
    private void stopPlayer() {
        if (player != null) {
            player.release();
            player = null;
            Toast.makeText(this,"MediaPlayer released",Toast.LENGTH_SHORT).show();
        }
    }
    @Override
    protected void onStop() {
        super.onStop();
        stopPlayer();
    }
}

''

解决方法

尝试一下

int i = 0;

public void play(View v) {
     
     player = MediaPlayer.create(this,audio_id_list.get(i));
     player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
          @Override
          public void onCompletion(MediaPlayer mp) {
             stopPlayer();
             if(i < audio_id_list.size()) {
                i++;
                play(v);
             }
          }
     });
     player.start();
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。