2016-03-03 61 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

相關問題