android mediaPlay 播放视频 循环播放

allanence 2012-07-10 11:03:06
我有一个存放播放路径的List<String> 里面有四个文件,我想一直循环播放这四个文件。请问要怎么去实现??最好给一个demo,非常感谢大家!
...全文
1646 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
haomingzidoumeilea 2014-02-14
  • 打赏
  • 举报
回复
引用 6 楼 allanence 的回复:
问题找到了,就是一个同步和一般的准备问题。
哎,解决后能不能给具体方法啊。。。
yxd三哥 2013-11-21
  • 打赏
  • 举报
回复
求分享源代码,谢谢,我得邮箱是 yangxingda1988@163.com 致敬!!!
yxd三哥 2013-11-21
  • 打赏
  • 举报
回复
求分享源代码,谢谢, 我的邮箱是 yangxingda1988@163.com 致敬!!!
Xavi_zhang 2013-07-25
  • 打赏
  • 举报
回复
楼主成功了吗?能不能分享下代码?
sweetsnow24 2013-04-10
  • 打赏
  • 举报
回复
allanence 2012-07-11
  • 打赏
  • 举报
回复
问题找到了,就是一个同步和一般的准备问题。
lqgyt1 2012-07-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

我今天才实现了这个功能。不过我是用VideoView控件做的。。
你已经继承了 OnCompletionListener,为什么添加监听器的时候,还要自己new一个呢。
[/Quote]
你这样的话,这个方法是不会执行的,只会执行你添加的那个监听器的onCompletion方法。
public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
// mp.seekTo(0);

mp.start();
}
lqgyt1 2012-07-10
  • 打赏
  • 举报
回复
我今天才实现了这个功能。不过我是用VideoView控件做的。。
你已经继承了 OnCompletionListener,为什么添加监听器的时候,还要自己new一个呢。
laolik 2012-07-10
  • 打赏
  • 举报
回复
播放下一个之前,把mediaplayer的对象stop()&&release(),这样再试试呢?
貌似播完一个,直接setDataSource()是不行的。
allanence 2012-07-10
  • 打赏
  • 举报
回复
设置了,但是设置后连视频都不能播放了?能帮我看看代码吗?


package ele.bus.ele;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;

import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnBufferingUpdateListener;
import android.media.MediaPlayer.OnCompletionListener;
import android.media.MediaPlayer.OnPreparedListener;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.KeyEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class ElebusDemActivity extends Activity implements
OnCompletionListener, Callback, OnBufferingUpdateListener,
OnPreparedListener {
/** Called when the activity is first created. */
private SurfaceView sView;
private SurfaceHolder hodler;
private MediaPlayer mediaPlayer;
private int videoWhith;
private int videoHeight;
private List<String> list;
private int index = 0;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
mediaPlayer = new MediaPlayer();
sView = (SurfaceView) findViewById(R.id.surfaceView1);
// 得到SurfaceHolder对象
hodler = sView.getHolder();
// 设置回调函数
hodler.addCallback(this);
// 设置风格
hodler.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
list = new ArrayList<String>();
String url = Environment.getExternalStorageDirectory()
.getAbsolutePath() + File.separatorChar + "VideosZip";
System.out.println(url);
getFiles(url);
}

private void play(String str) {

String path = Environment.getExternalStorageDirectory().getPath()
+ File.separatorChar + "VideosZip1" + File.separator
+ "video.mp4";

// 构建MediaPlayer对象
try {
// 设置媒体文件路径
mediaPlayer.setDataSource(path);
System.out.println(str);
// 设置通过SurfaceView来显示画面
mediaPlayer.setDisplay(hodler);
// 准备
mediaPlayer.prepareAsync();
// 设置监听事件
mediaPlayer.start();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch blockj
e.printStackTrace();
}
mediaPlayer.setOnBufferingUpdateListener(this);
mediaPlayer.setOnPreparedListener(this);
mediaPlayer.setOnCompletionListener(new OnCompletionListener() {

@Override
public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
next();
}
});
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
event.startTracking();
finish();
System.exit(0);
return true;
}

return super.onKeyDown(keyCode, event);
}

public class MyWebViewClient extends WebViewClient {
public boolean shouldOverviewUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}

private void next(){
if (++index >= list.size()) {
index = 0;
} else {
play(list.get(index));
System.out.println("111111111111111");
}
}


public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
// mp.seekTo(0);

mp.start();
}

public void onPrepared(MediaPlayer mp) {
// TODO Auto-generated method stub
videoWhith = mediaPlayer.getVideoWidth();
videoHeight = mediaPlayer.getVideoHeight();

if (videoWhith != 0 && videoHeight != 0) {
// 设置视频的宽度和高度
hodler.setFixedSize(videoWhith, videoHeight);
// 开始播放

}
}

public void onBufferingUpdate(MediaPlayer mp, int percent) {
// TODO Auto-generated method stub

}

// 更改时触发事件
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub

}

// 当SurfaceHolder创建时触发
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
play(list.get(index));

}


public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub

}

// 销毁
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
if (mediaPlayer != null) {
mediaPlayer.release();
mediaPlayer = null;
}
}

private void getFiles(String url) {
try {
File file = new File(url);
File[] files = file.listFiles();

for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
getFiles(files[i].getAbsolutePath());
} else {
if (files[i].getAbsolutePath().endsWi(".3gp")
|| files[i].getAbsolutePath().endsWith(".mp4")) {
list.add(files[i].toString());
System.out.println(files[i].toString());
}
}
}
} catch (Exception e) {
Log.d("getfile", "查找成功!");
}

}
}
laolik 2012-07-10
  • 打赏
  • 举报
回复
Mediaplayer 加一个OnCompletionListener

完成后播放下一个就是了。

80,354

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧