无法让VIdeoView进行随机播放

时间:2012-02-04 22:31:44

标签: android android-videoview shuffle

我在android中有一个视频视图,它从文本文件中读取行并播放它们。文本文件包含指向Web服务器上的音频和视频文件的链接。然而,当它到达歌曲/视频的结尾时,它将无法播放下一首歌。

我似乎需要实现一个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 个答案:

答案 0 :(得分:1)

这就是你想要的:

viedoView.setOnCompletionListener(MediaPlayer.OnCompletionListener l);

android dev- http://developer.android.com/reference/android/media/MediaPlayer.OnCompletionListener.html

上的onCompletionListener资源

为了它的价值,我建议你用文件执行一次IO,并将theLine保存在数组或ArrayList中,这样你就可以访问它,甚至可以创建一个自定义类来处理shuffling。例如,您可以让它跟踪已发送的字符串,即已播放的视频,然后随机选择尚未播放的新视频。

答案 1 :(得分:0)

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();
}

Another SO link that I came across