2016-03-03 2 views
1

Что нужно сделать, чтобы воспроизвести несколько видеороликов, хранящихся в сырой папке, для воспроизведения в цикле и последовательно один за другим?Можно ли зацикливать несколько видеороликов, хранящихся в исходной папке в видеообъявлениях?

Я могу играть только один в цикле в виде видео, но не могу получить доступ к другим. Спасибо заранее. Вот мой видео.

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

пожалуйста, определить «Я не могу получить доступ к другим из них». Вы пробовали вызывать '.setVideoURI (uri)' на вас 'VideoView'? – Droidman

+0

Да, посмотрите мой код выше. – Aldo

+0

вы никогда не обновляете свой «путь», а также не указываете на какой-либо актив. Действительно ли ваш вопрос * как я могу получить доступ и воспроизводить видео, расположенные в каталоге 'raw' *? – Droidman

ответ

1

Чтобы играть несколько видео, расположенных в raw, попробуйте следующий подход:

(ПРИМЕЧАНИЕ:. Заботиться о индексировать и видеофайлы имен В этом примере предполагается, ваши видео названы video1 , video2 ..... 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 является постоянного именования префикса файлов и идентификатор является динамический суффикс ваших имен файлов.

VideoView использует MediaPlayer для воспроизведения видео, вот обзор его состояния (взято из official docs) для лучшего понимания:

enter image description here

+0

Спасибо, но просто попробовал и не работает. Включен myVideo1.prepare(); с mediaplayer.prepare(); потому что это дало мне ошибку и все еще ничего – Aldo

+0

@ Алдо ой, я вижу, ответ содержал некоторые ошибки, так как я не смог проверить его в момент ответа. Пожалуйста, проверьте обновленный код, он работает на моем Nexus 5 – Droidman

+0

. Он, наконец, работает, спасибо большое :) Еще один вопрос, как загрузить видео в сырую папку и играть в нее в режиме просмотра видео. Это возможно ? – Aldo

 Смежные вопросы

  • Нет связанных вопросов^_^