首页 > 编程 > Java > 正文

java制作仿微信视频播放控件

2019-11-26 15:14:01
字体:
来源:转载
供稿:网友

此控件继承自 SurfaceView,利用 MediaPlayer 播放视频。

小视频播放界面

MoviePlayerView.java

import java.io.IOException;import android.content.Context;import android.media.AudioManager;import android.media.MediaPlayer;import android.media.MediaPlayer.OnCompletionListener;import android.util.AttributeSet;import android.view.SurfaceHolder;import android.view.SurfaceHolder.Callback;import android.view.SurfaceView; /** * 视频播放控件*@author liuyinjun * @date 2015-2-8 */public class MoviePlayerView extends SurfaceView {   private SurfaceHolder mSurfaceHolder;  private MediaPlayer mPlayer;     public MoviePlayerView(Context context) {    this(context, null);  }     public MoviePlayerView(Context context, AttributeSet attrs) {    this(context, attrs, 0);  }     public MoviePlayerView(Context context, AttributeSet attrs, int defStyle) {    super(context, attrs, defStyle);         mSurfaceHolder = this.getHolder();    mSurfaceHolder.addCallback(mSurfaceHolderCallback); // holder加入回调接口    mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);// setType必须设置,要不出错.   }     /**   * 播放视频   * @param fileName 文件路径   */  public void play(String fileName, final OnPlayCompletionListener completionListener) {    mPlayer = new MediaPlayer();    mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);    mPlayer.setDisplay(mSurfaceHolder); // 定义一个SurfaceView播放它     mPlayer.setOnCompletionListener(new OnCompletionListener() {       @Override      public void onCompletion(MediaPlayer arg0) {        stop();        if(completionListener != null)          completionListener.onPlayCompletion();        // canvas.drawColor(Color.TRANSPARENT,        // PorterDuff.Mode.CLEAR);      }    });     try {      mPlayer.setDataSource(fileName);      mPlayer.prepare();    } catch (IllegalStateException e) {      // TODO Auto-generated catch block      e.printStackTrace();    } catch (IOException e) {      // TODO Auto-generated catch block      e.printStackTrace();    }    mPlayer.start();  }   private void stop() {    if (mPlayer != null) {      mPlayer.release();      mPlayer = null;    }  }   /**   * 释放资源   */  public void release() {    if (mPlayer != null) {      mPlayer.release();      mPlayer = null;    }  }     private Callback mSurfaceHolderCallback = new Callback() {     @Override    public void surfaceDestroyed(SurfaceHolder arg0) {      mSurfaceHolder = null;    }     @Override    public void surfaceCreated(SurfaceHolder arg0) {      // TODO Auto-generated method stub      mSurfaceHolder = arg0;    }     @Override    public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2,        int arg3) {      // TODO Auto-generated method stub      mSurfaceHolder = arg0;    }  };     /**   * 播放成功回调  *@author liuyinjun     * @date 2015-2-9   */  public interface OnPlayCompletionListener{    public void onPlayCompletion();  } }

以上所述就是本文的全部内容了,希望大家能够喜欢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表