【问题标题】:android studio- playing audio files sequentlyandroid studio-依次播放音频文件
【发布时间】:2020-09-24 09:24:12
【问题描述】:

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

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();
    }
}

''

【问题讨论】:

    标签: android android-studio audio media-player sequential


    【解决方案1】:

    试试这个

    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();
    }
    

    【讨论】:

    • 我在使用这个 solotion 时遇到了一些问题 - 在音频文件完成运行应用程序后失败
    • 应用仍然失败
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    相关资源
    最近更新 更多