Не удается получить VIdeoView для перемешивания
У меня есть видеовид в Android, который читает строки из текстового файла и воспроизводит их. Текстовый файл содержит ссылки на аудио и видео файлы на веб-сервере. Однако, когда он достигает конца песни / видео, он не будет воспроизводить следующий.
Кажется, мне нужно реализовать OnCompletionListener
но я понятия не имею, как это сделать. Будет ли это правильный путь, чтобы пойти вниз?
Я пытался поместить его в цикл, чтобы выполнить метод воспроизведения X раз, но он просто зависает. Я предполагаю, что он просто постоянно перемешивает, пока не достигнет конца цикла.
Я также попытался заставить его приостановить аудио / видео дорожку, используя videoVIew.getDuration()
Код ниже:
try {
BufferedReader br = new BufferedReader(new InputStreamReader(new DataInputStream(new FileInputStream(file))));
LineNumberReader rdr = new LineNumberReader(br);
int min = 1; //Line 1 (start of file)
int max = 20; // Line 20 (end of file)
Random r = new Random();
int someRandomNo = r.nextInt(max - min + 1) + min;
textView1.setText(Integer.toString(someRandomNo));
// get random number - go to line - save it
rdr.setLineNumber(someRandomNo);
int linenum = 0;
String theLine = "";
while (linenum < someRandomNo) {
theLine = br.readLine();
linenum++;
}
textView1.setText(theLine);
VideoView videoView = (VideoView) findViewById(R.id.VideoView);
MediaController mediaController = new MediaController(this);
mediaController.setAnchorView(videoView);
// Set Audio/Video to play
Uri video = Uri.parse(theLine);
videoView.setMediaController(mediaController);
videoView.setVideoURI(video);
videoView.start();
}
catch (Exception e) {
}
2 ответа
Это то, что вы хотите:
viedoView.setOnCompletionListener(MediaPlayer.OnCompletionListener l);
И ресурс onCompletionListener на android dev- http://developer.android.com/reference/android/media/MediaPlayer.OnCompletionListener.html
И для чего бы это ни стоило, я бы посоветовал вам сделать IO с файлом один раз и сохранить theLine в массиве или ArrayList, чтобы вы могли получить к нему доступ, или даже создать собственный класс для обработки перетасовки. Например, вы можете отслеживать, какие строки были отправлены, т.е. какие видео были воспроизведены, а затем случайным образом выбрать новую, которая еще не была воспроизведена.
Ответ AJcodez был тем, что мне было нужно, я просто не знал, как использовать OnCompletion Listener.
Я поместил свой код OnCreate в его собственный метод, а затем просто заставлял слушателя вызывать его каждый раз. Я также не осуществлял MediaPayer.OnCompletition
Слушатель для класса.
//Implement the listener
public class CardioActivity extends Activity implements MediaPlayer.OnCompletionListener {
//Oncreate calls play
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
play();
}
public void play() {
//Blah blah all other code is here
//Set the listener etc like this
videoView.setMediaController(mediaController);
videoView.setVideoURI(video);
videoView.setOnCompletionListener(this);
videoView.start();
}
catch (Exception e) {
//Handling exceptions
}
}
@Override
public void onCompletion(MediaPlayer arg0) {
//Recall the method
play();
}