我在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) {
}
答案 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();
}