博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
视频播放Demo
阅读量:7290 次
发布时间:2019-06-30

本文共 4529 字,大约阅读时间需要 15 分钟。

话不多说,直接上代码:xml文件:

View Code

activity:

private EditText nameEdit;    private MediaPlayer media;    private String path;    private SurfaceView surfaceView;    private Boolean pause=false;    private int position;        @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_media_play);                media=new MediaPlayer();        nameEdit=(EditText) findViewById(R.id.fileedite);        //把输送给surfaceView的视频画面,直接显示到屏幕上,不要在自己的缓冲区        surfaceView=(SurfaceView) findViewById(R.id.surfaceView);        surfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);        surfaceView.getHolder().setFixedSize(176, 144);        surfaceView.getHolder().setKeepScreenOn(true);        surfaceView.getHolder().addCallback(new SurfaceCallBack());            }        public final class SurfaceCallBack implements Callback{                public void surfaceCreated(SurfaceHolder holder) {            // TODO Auto-generated method stub            if(position>0 && path!=null){                play(position);                position=0;            }        }                public void surfaceChanged(SurfaceHolder holder, int format, int width,                int height) {            // TODO Auto-generated method stub                    }                public void surfaceDestroyed(SurfaceHolder holder) {            // TODO Auto-generated method stub            if(media.isPlaying()){                position=media.getCurrentPosition();                media.stop();            }                    }        }    private void mediaPlay(View v){        switch(v.getId()){        case R.id.play:            String filename=nameEdit.getText().toString();            if(filename.startsWith("http")){                path=filename;                play(0);            }else{                File file=new File(Environment.getExternalStorageDirectory(),filename);                                if(file.exists()){                    path=file.getAbsolutePath();                    play(0);                }else{                    path=null;                    Toast.makeText(this, "视频文件不存在", 1).show();                    }            }                        break;        case R.id.pause:            if(media.isPlaying()){                media.pause();                pause=true;            }else{                if(pause){                    media.start();                    pause=false;                }            }            break;        case R.id.reset:            if(media.isPlaying()){                media.seekTo(0);            }else{                if(path!=null){                    play(0);                }            }            break;        case R.id.stop:            if(media.isPlaying()){                media.stop();            }            break;                    default:                break;                    }    }        @Override    protected void onDestroy() {        // TODO Auto-generated method stub        media.release();        media=null;        super.onDestroy();    }    private void play(int position){        media.reset();        try {            media.setDataSource(path);            media.setDisplay(surfaceView.getHolder());            media.prepare();//缓冲            media.setOnPreparedListener(new PreparedListener(position));                    } catch (IllegalArgumentException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (SecurityException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (IllegalStateException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }                    }        private final class PreparedListener implements OnPreparedListener{        private int position;                public PreparedListener(int position){            this.position=position;                    }        @Override        public void onPrepared(MediaPlayer mp) {            // TODO Auto-generated method stub            media.start();            if(position>0 && path!=null){            media.seekTo(position);            }        }
View Code

 

转载于:https://www.cnblogs.com/wei1228565493/p/4187050.html

你可能感兴趣的文章
转 Python爬虫入门五之URLError异常处理
查看>>
转 Python执行系统命令的方法
查看>>
CSS 折角效果
查看>>
个人作业3---个人总结
查看>>
[分享]ip地址爬取过滤的shell
查看>>
差分数组
查看>>
Shiro 加密helloWorld
查看>>
关于安装sql2012出现的netfx3功能问题
查看>>
基础关3
查看>>
tar 解压缩
查看>>
(转)Sharepoint学习笔记—Debug--寻找 WSS_Logging下的ULSTraceLog
查看>>
数据库命令大全(也不是很全哈)
查看>>
鼠标变小手的方式
查看>>
20111124
查看>>
HierarchyId 与.Net Framework 4.5.3报错
查看>>
强大的ldd
查看>>
SpringMVC知识(1)
查看>>
Xshell 常用命令
查看>>
理解JavaScript的prototype和__proto__
查看>>
Ubuntu 10.04下编译安装Bochs 2.6及问题解决
查看>>