您的位置:首页 > 其它

使用VideoView和MediaController进行视频播放

2018-01-04 18:23 483 查看
一个视频播放的activity,可以直接拿过来用,比较简单,直接贴个代码留作记录,效果如下:



[java] view plain copy print?/**
* 视频播放的activity<br>
* 使用方法:<br>
* 1、AndroidManifest.xml中添加此activity<br>
* 2、Intent中存入待播放视频的URL,支持本地和网络<br>
* 3、启动这个activity<br>
* <br>
* example:<br>
* String url = “play url”;<br>
* Intent intent = new Intent();<br>
* intent.setClass(this, VideoPlayActivity.class);<br>
* intent.putExtra(VideoPlayActivity.KEY_URL, url);<br>
* startActivity(intent);<br>
*
* @author ttworking
*
*/
public class VideoPlayActivity extends Activity implements OnPreparedListener, OnErrorListener {
public static final String KEY_URL = “view_url”;

private static final String TAG = “VideoPlayActivity”;
private static final int PLAY_RETURN = 2 * 1000; // 2 seconds
private static final String KEY_PLAY_POSITON = “paly_position”;
private static final String TOAST_ERROR_URL = “Paly url is null, please check parameter:” + KEY_URL;
private static final String TOAST_ERROR_PLAY = “Paly error, please check url exist!”;
private static final String DIALOG_TITILE = “奋力加载中,请稍后…”;

private static String url;

private ProgressDialog progressDialog;
private MediaController mc;
private VideoView videoView;
private LinearLayout llMain;
private LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

url = getIntent().getStringExtra(KEY_URL);
if (url == null && savedInstanceState != null) {
url = savedInstanceState.getString(KEY_URL);
}

if (url == null) {
Toast.makeText(getApplicationContext(), TOAST_ERROR_URL, Toast.LENGTH_LONG).show();
finish();
return;
}

setTheme(android.R.style.Theme_NoTitleBar_Fullscreen);

videoView = new VideoView(this);
videoView.setVideoURI(Uri.parse(url));
videoView.requestFocus();
videoView.setOnPreparedListener(this);
videoView.setOnErrorListener(this);

mc = new MediaController(this);
mc.setAnchorView(videoView);
mc.setKeepScreenOn(true);

videoView.setMediaController(mc);

llMain = new LinearLayout(this);
llMain.setGravity(Gravity.CENTER_VERTICAL);
llMain.setOrientation(LinearLayout.VERTICAL);
llMain.setLayoutParams(params);

llMain.addView(videoView, params);
setContentView(llMain);

initDialog();
}

@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);

int palyPosition = videoView.getCurrentPosition();
if (palyPosition > PLAY_RETURN) {
palyPosition -= PLAY_RETURN;
}
outState.putInt(KEY_PLAY_POSITON, palyPosition);
outState.putString(KEY_URL, url);
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);

videoView.seekTo(savedInstanceState.getInt(KEY_PLAY_POSITON));
}

@Override
public void onPrepared(MediaPlayer mp) {
progressDialog.cancel();

videoView.start();
}

@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
Log.d(TAG, ”onError:” + url);

Toast.makeText(getApplicationContext(), TOAST_ERROR_PLAY + ”\n” + url, Toast.LENGTH_LONG).show();
progressDialog.cancel();
finish();

return true;
}

private void initDialog() {
progressDialog = new ProgressDialog(this);
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.setMessage(DIALOG_TITILE);
progressDialog.setCancelable(false);
progressDialog.show();
}
}
/**
* 视频播放的activity<br>
* 使用方法:<br>
* 1、AndroidManifest.xml中添加此activity<br>
* 2、Intent中存入待播放视频的URL,支持本地和网络<br>
* 3、启动这个activity<br>
* <br>
* example:<br>
* String url = "play url";<br>
* Intent intent = new Intent();<br>
* intent.setClass(this, VideoPlayActivity.class);<br>
* intent.putExtra(VideoPlayActivity.KEY_URL, url);<br>
* startActivity(intent);<br>
*
* @author ttworking
*
*/
public class VideoPlayActivity extends Activity implements OnPreparedListener, OnErrorListener {
public static final String KEY_URL = "view_url";

private static final String TAG = "VideoPlayActivity";
private static final int PLAY_RETURN = 2 * 1000; // 2 seconds
private static final String KEY_PLAY_POSITON = "paly_position";
private static final String TOAST_ERROR_URL = "Paly url is null, please check parameter:" + KEY_URL;
private static final String TOAST_ERROR_PLAY = "Paly error, please check url exist!";
private static final String DIALOG_TITILE = "奋力加载中,请稍后...";

private static String url;

private ProgressDialog progressDialog;
private MediaController mc;
private VideoView videoView;
private LinearLayout llMain;
private LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

url = getIntent().getStringExtra(KEY_URL);
if (url == null && savedInstanceState != null) {
url = savedInstanceState.getString(KEY_URL);
}

if (url == null) {
Toast.makeText(getApplicationContext(), TOAST_ERROR_URL, Toast.LENGTH_LONG).show();
finish();
return;
}

setTheme(android.R.style.Theme_NoTitleBar_Fullscreen);

videoView = new VideoView(this);
videoView.setVideoURI(Uri.parse(url));
videoView.requestFocus();
videoView.setOnPreparedListener(this);
videoView.setOnErrorListener(this);

mc = new MediaController(this);
mc.setAnchorView(videoView);
mc.setKeepScreenOn(true);

videoView.setMediaController(mc);

llMain = new LinearLayout(this);
llMain.setGravity(Gravity.CENTER_VERTICAL);
llMain.setOrientation(LinearLayout.VERTICAL);
llMain.setLayoutParams(params);

llMain.addView(videoView, params);
setContentView(llMain);

initDialog();
}

@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);

int palyPosition = videoView.getCurrentPosition();
if (palyPosition > PLAY_RETURN) {
palyPosition -= PLAY_RETURN;
}
outState.putInt(KEY_PLAY_POSITON, palyPosition);
outState.putString(KEY_URL, url);
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);

videoView.seekTo(savedInstanceState.getInt(KEY_PLAY_POSITON));
}

@Override
public void onPrepared(MediaPlayer mp) {
progressDialog.cancel();

videoView.start();
}

@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
Log.d(TAG, "onError:" + url);

Toast.makeText(getApplicationContext(), TOAST_ERROR_PLAY + "\n" + url, Toast.LENGTH_LONG).show();
progressDialog.cancel();
finish();

return true;
}

private void initDialog() {
progressDialog = new ProgressDialog(this);
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.setMessage(DIALOG_TITILE);
progressDialog.setCancelable(false);
progressDialog.show();
}
}


from:http://blog.csdn.net/ttdevs/article/details/16863511
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: