Mediaplayer 加一个OnCompletionListener完成后播放下一个就是了。
解决方案 »
- android手机与电脑远程连接问题
- Android 象棋电脑智能实现
- android应用如何备份
- android开发如何实现后台隐藏安装功能
- android appwidget如何支持复杂的view??
- Eclipse3.6.1配置ADT的时候总失败?如何解决
- 参与就有奖 UC浏览器问题征集活动
- ListView 搭配 CheckBox 全选超过一屏幕数据后出错
- app微信分享
- 请大神给一个安卓APP 抓取其它APP如微信的推送消息?
- android achartengine 柱状图和折线图混合画图问题?我现在想在折线和柱状图之间加一条0分割线,就是让折线图显示在上面,柱状图显示在下面。
- Android UDP broadcast
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", "查找成功!");
} }
}
貌似播完一个,直接setDataSource()是不行的。
你已经继承了 OnCompletionListener,为什么添加监听器的时候,还要自己new一个呢。
public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
// mp.seekTo(0);mp.start();
}