2016-03-03 59 views
1

我试图实现的目标是播放存储在原始文件夹中的多个视频,以循环播放并依次播放?我可以在视频视图中循环存储在原始文件夹中的多个视频吗?

我只能在videoview中循环播放一个,但无法访问其他播放器。 在此先感谢。 这是我的视频。

private VideoView myVideo1; 
String path = "http://192.168.0.22/output/files/video/"; 
Uri uri=Uri.parse(path); 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    getWindow().setFormat(PixelFormat.TRANSLUCENT); 
    setContentView(R.layout.activity_main); 
    myVideo1=(VideoView)findViewById(R.id.myvideoview); 
    myVideo1.setVideoURI(uri); 
    myVideo1.start(); 
    myVideo1.requestFocus(); 

    myVideo1.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
     @Override 
     public void onPrepared(MediaPlayer mp) { 
      mp.setLooping(true); 
     } 
    }); 
} 
+0

请界定“我不能访问其他的”。你有没有试过在'VideoView'上调用'.setVideoURI(uri)'? – Droidman

+0

是的,看看我的代码上面。 – Aldo

+0

你永远不会更新你的'路径',也不会指向任何资产。实际上你的问题是:我如何访问和播放位于'raw'目录*中的视频? – Droidman

回答

1

要发挥地处raw多个视频,请尝试以下方法:

注意:照顾指数和视频文件命名这个例子假设你的视频被命名为视频1VIDEO2 ..... VideoX时

private final int COUNT = 3; 
private int index = 1; 
private VideoView myVideo1; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    getWindow().setFormat(PixelFormat.TRANSLUCENT); 
    setContentView(R.layout.activity_main); 
    myVideo1 = (VideoView) findViewById(R.id.myvideoview); 
    myVideo1.requestFocus(); 
    myVideo1.setVideoURI(getPath(index)); 
    index++; 

    myVideo1.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
     @Override 
     public void onPrepared(MediaPlayer mp) { 
      myVideo1.start(); 
     } 
    }); 

    myVideo1.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
     @Override 
     public void onCompletion(MediaPlayer mediaPlayer) { 
       //videos count +1 since we started with 1 
      if (index == COUNT + 1) index = 1; 
      myVideo1.setVideoURI(getPath(index)); 
      index++; 
     } 
    }); 
} 

private Uri getPath(int id) { 
    return Uri.parse("android.resource://" + getPackageName() + "/raw/video" + id); 
} 

获取资源从raw解释:android.resource://是路径的恒定部分,getPackageName()点使你的应用程序,/raw/告诉系统在哪里查找文件,video文件的不断命名前缀和ID 是您的文件名的动态后缀

VideoView使用MediaPlayer播放视频,在这里是为更好地了解其状态的概述(从official docs拍摄):

enter image description here

+0

谢谢,但只是尝试,并没有工作。切换myVideo1.prepare();与mediaplayer.prepare();因为它给了我一个错误,但什么也没有 – Aldo

+0

@Aldo哦,我明白了,答案包含一些错误,因为我在回答时无法测试它。请检查更新后的代码,它适用于我的Nexus 5 – Droidman

+0

它终于起作用了,非常感谢:) 另一个问题是如何将视频下载到原始文件夹并在循环中用videoview播放它。这可能吗 ? – Aldo

相关问题