Android笔记:视屏播放、VideoView、surfaceView,简易视频播放
一、VideoView方法

十多年的惠农网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都营销网站建设的优势是能够根据用户设备显示端的尺寸不同,自动调整惠农建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“惠农网站设计”,“惠农网站推广”以来,每个客户项目都认真落实执行。
1.activity_video.xml
2.代码
package com.example.vediotest;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.view.Menu;
import android.view.Window;
import android.view.WindowManager;
import android.widget.MediaController;
import android.widget.VideoView;
public class VideoActivity extends Activity
{
private VideoView videoView;
private Uri mUri;
private int mPositionWhenPaused;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);// 设置成全屏模式
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);// 强制为横屏
setContentView(R.layout.activity_video);
String url = "http://videofile.xxxx.cn/Upload/Video/File/20140411/201404110228168972.mp4";
// String url =
// "http://player.youku.com/player.php/sid/XNDYwOTEzNzQ4/v.swf";
mUri = Uri.parse(url);
videoView = (VideoView) findViewById(R.id.video_videoView);
MediaController mediaController = new MediaController(this);
videoView.setMediaController(mediaController);
// videoView.setVideoPath("/sdcard/xyx.3gp");
// videoView.setVideoURI(mUri);
// videoView.requestFocus();
// videoView.start();
}
public void onStart()
{
// Play Video
videoView.setVideoURI(mUri);
videoView.start();
super.onStart();
}
public void onPause()
{
// Stop video when the activity is pause.
mPositionWhenPaused = videoView.getCurrentPosition();
videoView.stopPlayback();
super.onPause();
}
public void onResume()
{
// Resume video player
if (mPositionWhenPaused >= 0)
{
videoView.seekTo(mPositionWhenPaused);
mPositionWhenPaused = -1;
}
super.onResume();
}
public boolean onError(MediaPlayer player, int arg1, int arg2)
{
return false;
}
public void onCompletion(MediaPlayer mp)
{
this.finish();
}
}二、surfaceView方法
(一)
1.activity_video_surface.xml
2.代码
package com.example.vediotest;
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.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;
public class SurfaceVideoActivity extends Activity implements Callback, OnBufferingUpdateListener, OnCompletionListener, OnPreparedListener
{
private int width = 0;
private int height = 0;
private MediaPlayer mMediaPlayer = null;
private SurfaceView mSurfaceView = null;
private SurfaceHolder holder = null;
private String path = "";
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video_surface);
mSurfaceView = (SurfaceView) this.findViewById(R.id.surfaceVideo_surfaceView);
holder = mSurfaceView.getHolder();
holder.addCallback(this);
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);// 设置风格
}
public void playVedio()
{
try
{
path = android.os.Environment.getExternalStorageDirectory() + "/moto_0012.3gp";
mMediaPlayer = new MediaPlayer();
// mMediaPlayer.setDataSource(path);
String url = "http://videofile.housebox.cn/Upload/Video/File/20140411/201404110228168972.mp4";
// String url = "http://player.youku.com/player.php/sid/XNDYwOTEzNzQ4/v.swf";
mMediaPlayer.setDataSource(this, Uri.parse(url));
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setDisplay(holder);
mMediaPlayer.prepare();// 准备
Log.e("TAG-Duration", mMediaPlayer.getDuration() + "");
mMediaPlayer.setOnBufferingUpdateListener(this);
mMediaPlayer.setOnCompletionListener(this);
mMediaPlayer.setOnPreparedListener(this);
}
catch (Exception ex)
{
}
}
public void onBufferingUpdate(MediaPlayer mp, int percent)
{
// TODO Auto-generated method stub
Log.i("TAG-onBufferingUpdate", percent + "|" + mMediaPlayer.getCurrentPosition());
}
public void onCompletion(MediaPlayer mp)
{
// TODO Auto-generated method stub
Log.i("TAG-onCompletion", "Completion");
}
public void onPrepared(MediaPlayer mp)
{
// TODO Auto-generated method stub
width = mMediaPlayer.getVideoWidth();
height = mMediaPlayer.getVideoHeight();
if (width != 0 && height != 0)
{
holder.setFixedSize(width, height);// 设置视频高宽
mMediaPlayer.start();
Log.i("TAG-Duration2", mMediaPlayer.getDuration() + "");
}
}
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height)
{
// TODO Auto-generated method stub
}
public void surfaceCreated(SurfaceHolder holder)
{
// TODO Auto-generated method stub
playVedio();
}
public void surfaceDestroyed(SurfaceHolder holder)
{
// TODO Auto-generated method stub
Log.i("TAG-surfaceDestroyed", "surfaceDestroyed");
}
@Override
protected void onPause()
{
super.onPause();
if (mMediaPlayer != null)
{
if (mMediaPlayer.isPlaying())
{
mMediaPlayer.stop();
}
mMediaPlayer.reset();
mMediaPlayer.release();
mMediaPlayer = null;
}
}
}(二)
activity_video_surface2.xml
2.代码
package com.example.vediotest;
import java.io.IOException;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnBufferingUpdateListener;
import android.media.MediaPlayer.OnCompletionListener;
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.util.Log;
import android.view.Menu;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.Window;
public class SurfaceVideo2Activity extends Activity implements OnBufferingUpdateListener, OnCompletionListener, MediaPlayer.OnPreparedListener,
SurfaceHolder.Callback
{
private MediaPlayer mediaPlayer;
private SurfaceView surfaceView;
private SurfaceHolder surfaceHolder;
private int videoWidth;
private int videoHeight;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_video_surface2);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);// 强制为横屏
this.surfaceView = (SurfaceView) this.findViewById(R.id.surface2_surfaceView);
this.surfaceHolder = this.surfaceView.getHolder();
this.surfaceHolder.addCallback(this);
this.surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
Log.v("cat", ">>>create ok.");
}
private void playVideo() throws IllegalArgumentException, IllegalStateException, IOException
{
String url = "http://videofile.housebox.cn/Upload/Video/File/20140411/201404110228168972.mp4";
// String url = "http://player.youku.com/player.php/sid/XNDYwOTEzNzQ4/v.swf";
this.mediaPlayer = new MediaPlayer();
// this.mediaPlayer.setDataSource("/sdcard/daoxiang.3gp");
this.mediaPlayer.setDataSource(this, Uri.parse(url));
this.mediaPlayer.setDisplay(this.surfaceHolder);
this.mediaPlayer.prepare();
this.mediaPlayer.setOnBufferingUpdateListener(this);
this.mediaPlayer.setOnPreparedListener(this);
this.mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
Log.i("mplayer", ">>>play video");
}
@Override
public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3)
{
Log.i("cat", ">>>surface changed");
}
@Override
public void surfaceCreated(SurfaceHolder holder)
{
try
{
this.playVideo();
}
catch (Exception e)
{
Log.i("cat", ">>>error", e);
}
Log.i("cat", ">>>surface created");
}
@Override
public void surfaceDestroyed(SurfaceHolder holder)
{
Log.v("mplayer", ">>>surface destroyed");
}
@Override
public void onCompletion(MediaPlayer arg0)
{
// TODO Auto-generated method stub
}
@Override
public void onBufferingUpdate(MediaPlayer mp, int percent)
{
// TODO Auto-generated method stub
}
@Override
public void onPrepared(MediaPlayer arg0)
{
this.videoWidth = this.mediaPlayer.getVideoWidth();
this.videoHeight = this.mediaPlayer.getVideoHeight();
if (this.videoHeight != 0 && this.videoWidth != 0)
{
this.surfaceHolder.setFixedSize(this.videoWidth, this.videoHeight);
this.mediaPlayer.start();
}
}
@Override
protected void onDestroy()
{
super.onDestroy();
if (this.mediaPlayer != null)
{
this.mediaPlayer.release();
this.mediaPlayer = null;
}
}
}参考资料:
1.http://blog.csdn.net/cynhafa/article/details/6400050
2.http://aina-hk55hk.iteye.com/blog/706060
分享名称:Android笔记:视屏播放、VideoView、surfaceView,简易视频播放
转载来于:http://www.jxjierui.cn/article/ijsjpg.html


咨询
建站咨询
