【问题标题】:Random start in Android video appAndroid 视频应用中的随机启动
【发布时间】:2014-01-05 09:17:02
【问题描述】:

我有这个视频应用:

public class MainActivity extends Activity {

    int i = 0;
    List<String> videoPathes = new ArrayList<String>();
    
    private VideoView videoview;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        videoview = (VideoView) findViewById(R.id.videoView_video);
        videoPathes.add(Environment.getExternalStorageDirectory().getAbsolutePath()+"/intros/intro1.mp4");
        videoPathes.add(Environment.getExternalStorageDirectory().getAbsolutePath()+"/intros/intro2.mp4");
        videoPathes.add(Environment.getExternalStorageDirectory().getAbsolutePath()+"/intros/intro3.mp4");

        videoview.setVideoPath(videoPathes.get(i));
        videoview.start();

        videoview.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            public void onCompletion(final MediaPlayer mp){
                i = (i + 1) % videoPathes.size();

                videoview.setVideoPath(videoPathes.get(i));
                videoview.start();
            }
        });

    }
}

当应用启动时运行第一个视频(“intro1.mp4”)。该应用程序有 20 个视频。我需要的是,当我打开应用程序时,它会开始播放随机视频。

例子:

现在

应用程序从第一个视频开始:“intro1.mp4”,然后继续到“intro2.mp4”和 >“intro3.mp4”。 (等等...)

我需要

从随机视频开始:“intro2.mp4”、“intro3.mp4”、“intro1.mp4”

第二次:“intro1.mp4”、“intro2.mp4”、“intro3.mp4”

下一次:“intro3.mp4”、“intro1.mp4”、“intro2.mp4”

(等等...)

因此,从任何视频 (intro11.mp4) 开始,然后继续播放下一个 (intro12.mp4)、下一个 (intro13.mp4) 和下一个 (intro14.mp4)。

我的应用可以做到这一点吗?

感谢您的支持。

【问题讨论】:

  • 在完成时,您需要跟踪 i 的先前值,而不是 i = (i + 1) % videoPathes.size();,这样您就不会重复,而是使用随机计算下一个 i 值。然而,程序运行之间的跟踪必须涉及某种会话间跟踪(序列化、数据库等)。
  • 谢谢,但我不需要这么复杂的东西。 :)

标签: android video random


【解决方案1】:

最简单的方法是创建随机顺序的视频列表。 未编译代码:

List randomList = new ArrayList();
Random random = new Random();
int pathsCount = videoPathes.size();
for (int i = 0; i < pathsCount; i++){
 int randomPathIndex = random.nextInt(videoPathes.size();
 String path = videoPathes.get(randomPathIndex));
 videoPathes.remove(randomPathIndex);
 randomList.add(path);
}

我认为这应该可行:)

【讨论】:

  • 就在 videoview.setVideoPath(videoPathes.get(i));之后你使用 randomList 而不是使用 videoPathes。
猜你喜欢
  • 1970-01-01
  • 2014-10-21
  • 1970-01-01
  • 2011-08-24
  • 2013-12-01
  • 1970-01-01
  • 2017-07-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多