zoukankan      html  css  js  c++  java
  • surfaceview+mediaplayer

    public class VideosurfaceView extends SurfaceView implements SurfaceHolder.Callback, MediaPlayer.OnPreparedListener {
    private SurfaceHolder holder;
    private MediaPlayer mediaPlayer;

    public VideosurfaceView(Context context, AttributeSet attrs) {
    super(context, attrs);
    init();
    }

    private void init() {
    holder= getHolder();
    holder.addCallback(this);
    holder.setKeepScreenOn(true);
    }
    //设置路径并播放
    public void playVideo(String patn){
    if (mediaPlayer==null){
    mediaPlayer=new MediaPlayer();
    mediaPlayer.setOnPreparedListener(this);
    }

    try {
    //重置mediaplayer
    mediaPlayer.reset();
    //设置播放路径
    //设置画面播放源
    mediaPlayer.setDisplay(holder);
    mediaPlayer.setDataSource(patn);

    //准备播放
    mediaPlayer.prepareAsync();
    //开始播放
    mediaPlayer.start();
    mediaPlayer.isPlaying();

    } catch (IOException e) {
    e.printStackTrace();
    }

    }
    // public void kuaijin(){
    // int currentPosition = mediaPlayer.getCurrentPosition();
    // currentPosition+=2000;
    // mediaPlayer.seekTo(currentPosition);
    //
    // }
    //停止播放
    public void stop(){
    if (mediaPlayer!=null){
    if (mediaPlayer.isPlaying()){
    mediaPlayer.pause();
    }else {
    mediaPlayer.start();
    }
    }
    }
    //重新播放
    public void replay(){
    mediaPlayer.reset();
    }
    @Override
    //当surface第一次创建的时候
    public void surfaceCreated(SurfaceHolder holder) {

    }

    @Override
    //当surface要改变的时候
    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {

    }

    @Override
    //当surface要销毁的时候
    public void surfaceDestroyed(SurfaceHolder holder) {
    if (mediaPlayer!=null){
    mediaPlayer.release();//释放资源
    mediaPlayer=null;
    }

    }

    @Override
    public void onPrepared(MediaPlayer mp) {
    mediaPlayer.start();
    mediaPlayer.isPlaying();
    }
    }



    //在主函数里只需调用即可
        public void onClick(View v) {
    switch (v.getId()) {
    case R.id.play_btn:
    patn = Environment.getExternalStorageDirectory().getPath() + "/1508553914748.mp4";
    // 获取外部存储目录
    // 设置显示
    video_view.setVisibility(View.VISIBLE);
    // 设置路径
    video_view.playVideo(patn);
    break;
    case R.id.pause_btn:
    video_view.stop();
    //video_view.kuaijin();
    break;
    case R.id.replay_btn:
    video_view.playVideo(patn);
    break;
    }
    }
  • 相关阅读:
    js开发笔记
    安全相关开发笔记
    常用.NET库使用总结
    Windows使用总结
    .NET Web开发笔记
    Unity插件使用总结
    WinForm开发笔记
    C#开发笔记
    iTunes使用总结
    Mac使用总结
  • 原文地址:https://www.cnblogs.com/la66/p/7883541.html
Copyright © 2011-2022 走看看