您的位置:首页 > 移动开发 > Android开发

Android:视频(VideoView/MediaPlayer)

2013-08-23 11:18 417 查看
Android之视频播放

VideoView

if(android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)){ //判断SDCard是否存在
SDExit = true;
} else{
SDExit = false;
Toast.makeText(VideoActivity.this, "SD卡不存在!", Toast.LENGTH_SHORT).show();
} public class VideoActivity extends Activity{
private VideoView videoView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.video);
videoView=(VideoView)findViewById(R.id.video);
String videoPath = "file:///sdcard/video/he.mp4";
videoView.setVideoURI(Uri.parse(videoPath));
videoView.setMediaController(new MediaController(this));// 设置播放器的控制条
videoView.requestFocus();
videoView.start(); // 开始播放视频
}
} <!-- VideoView - 视频播放控件-->
<VideoView android:id="@+id/video" android:layout_width="fill_parent"
android:layout_height="360dp" /> MediaPlayer

<SurfaceView
android:id="@+id/surface"
android:layout_width="match_parent"
android:layout_height="360dp" > </SurfaceView> public class VideoActivity extends Activity implements OnBufferingUpdateListener, OnCompletionListener,
OnPreparedListener,OnVideoSizeChangedListener, SurfaceHolder.Callback{ private MediaPlayer mediaPlayer;
private SurfaceView surfaceView;
private SurfaceHolder holder;
private Bundle bundle;
private String videoPath;
private int mVideoWidth, mVideoHeight;
private static final String MEDIA = "media";
private static final int LOCAL_AUDIO = 1, STREAM_AUDIO = 2, RESOURCES_AUDIO = 3, LOCAL_VIDEO = 4, STREAM_VIDEO = 5;
private boolean isVideoSizeKnown = false, isVideoReadyToBePlayed = false; public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.video); surfaceView = (SurfaceView) findViewById(R.id.surface);
holder = surfaceView.getHolder();
holder.addCallback(this);
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
bundle = getIntent().getExtras();
private void playVideo(){ //播放视频
cleanUp();
try {
videoPath = "file:///sdcard/video/he.mp4";
//videoPath = "http://192.168.0.180:8080/?action=stream";
if(videoPath == ""){
Toast.makeText(VideoActivity.this, "视频路径不正确!", Toast.LENGTH_SHORT).show();
}
mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(videoPath);
mediaPlayer.setDisplay(holder);
mediaPlayer.prepare();
mediaPlayer.setOnBufferingUpdateListener(this);
mediaPlayer.setOnCompletionListener(this);
mediaPlayer.setOnPreparedListener(this);
mediaPlayer.setOnVideoSizeChangedListener(this);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
}catch (Exception e) {
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
playVideo();
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
@Override
public void onVideoSizeChanged(MediaPlayer mp, int width, int height) {
if (width == 0 || height == 0) {
return ;
}
isVideoSizeKnown = true;
mVideoWidth = width;
mVideoHeight = height;
if (isVideoReadyToBePlayed && isVideoSizeKnown) {
startVideoPlayback();
}
}
@Override
public void onPrepared(MediaPlayer mp) {
isVideoReadyToBePlayed = true;
if (isVideoReadyToBePlayed && isVideoSizeKnown) {
startVideoPlayback();
}
}
@Override
public void onCompletion(MediaPlayer mp) {
}
@Override
public void onBufferingUpdate(MediaPlayer mp, int percent) {
}
@Override
protected void onPause() {
super.onPause();
releaseMediaPlayer();
cleanUp();
}
@Override
protected void onDestroy() {
super.onDestroy();
releaseMediaPlayer();
cleanUp();
}
private void releaseMediaPlayer() {
if (mediaPlayer != null) {
mediaPlayer.release();
mediaPlayer = null;
}
}
private void cleanUp() {
mVideoWidth = 0;
mVideoHeight = 0;
isVideoReadyToBePlayed = false;
isVideoSizeKnown = false;
}
private void startVideoPlayback() {
holder.setFixedSize(mVideoWidth, mVideoHeight);
mediaPlayer.start();
}
}

官网参考链接:http://developer.android.com/reference/android/media/MediaPlayer.html

参考链接:

代码下载示例:http://download.csdn.net/detail/klcf0220/5999561
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: