【问题标题】:How to play videos randomly?如何随机播放视频?
【发布时间】:2022-01-17 14:50:23
【问题描述】:

我想创建一个应用程序,从 ArrayList 中以随机顺序一一播放 3 个视频。首先,我想知道如何一个接一个地播放视频,然后随机播放。我在互联网上进行了研究,但尽管尝试了多种技术和尝试,但还是没有得到结果。

public class MainActivity extends AppCompatActivity {

    private Random rand = new Random();
    private VideoView videoView;
    static MediaPlayer mMediaPlayer;
    int i = 0;

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

        ArrayList<Integer> WaitingArray = new ArrayList<>();

        videoView = (VideoView) findViewById(R.id.video_view);

        WaitingArray.add(0, R.raw.d41);
        WaitingArray.add(1, R.raw.d42);
        WaitingArray.add(2, R.raw.d43);


        mMediaPlayer = MediaPlayer.create(getApplicationContext(), WaitingArray.get(i));

    }
}

您可以看到我创建了一个包含 3 个视频的列表。但我不知道该怎么做才能随机播放它们,或者至少用媒体播放器按顺序播放。

有人可以帮帮我吗?

【问题讨论】:

    标签: java android arrays random media-player


    【解决方案1】:

    很遗憾,我无法帮助您完成连续播放视频的任务。

    但是对于您在此处随机化列表的问题,有一些值得深思的地方。如果你有一个集合col,你可以使用Collections.shuffle(col) 来打乱他们的条目。

    List<Integer> waitingArray = new ArrayList<>();
    
    waitingArray.add(R.raw.d41);
    waitingArray.add(R.raw.d42);
    waitingArray.add(R.raw.d43);
    Collections.shuffle(waitingArray);
    

    如果我需要一个包含三个条目的列表,这可能就足够了。

    考虑到您循环播放视频的其他问题,我可以想象您希望您的视频列表以不可预测的方式继续。

    一种方法是创建一个包含所有可能视频的包,然后将其随机播放并一个接一个地拉动元素,直到包为空。然后再随机重新填充。这就是 tetrominoes modern versions of Tetris 的分发方式。

    public class RandomBag<T>
    {
        private final Collection<T> sources;
        private List<T> currentBag = Collections.emptyList();
    
        public RandomBag(Collection<T> sources)
        {
            this.sources = sources;
        }
    
        public synchronized T get()
        {
            if (currentBag.isEmpty())
            {
                createNewBag();
            }
            currentBag.get(0);
        }
    
        private void createNewBag()
        {
            currentBag = new ArrayList<>(sources);
            Collections.shuffle(currentBag);
        }
    }
    

    【讨论】:

    • 感谢@Vala 的回答。 D ,但是你能告诉我如何在媒体播放器中添加视频的路径吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多