国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > 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();  } }

以上所述就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临泽县| 黄冈市| 延寿县| 花垣县| 柳州市| 星子县| 井冈山市| 文水县| 皋兰县| 固始县| 芒康县| 宝清县| 铜山县| 安溪县| 溧阳市| 呼和浩特市| 五峰| 冀州市| 沙雅县| 正安县| 公安县| 芒康县| 通道| 万全县| 紫金县| 漳浦县| 木兰县| 克什克腾旗| 武冈市| 嵩明县| 班玛县| 冷水江市| 崇阳县| 高淳县| 榆社县| 鄯善县| 郁南县| 东乌| 怀宁县| 泸溪县| 高青县|