美文网首页
Android使用MediaPlayer播放视频的基本逻辑

Android使用MediaPlayer播放视频的基本逻辑

作者: 淡蓝色梦想 | 来源:发表于2018-12-08 17:29 被阅读0次
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            //下面开始实例化MediaPlayer对象
            final MediaPlayer player = new MediaPlayer();
    
            //设置数据数据源,也就播放文件地址,可以是网络地址
            String dataPath = Environment.getExternalStorageDirectory().getPath()+"/abc.mp4";
            try {
                player.setDataSource(dataPath);
            } catch (Exception e) {
                e.printStackTrace();
            }
    
            //只有当播放器准备好了之后才能够播放,所以播放的出发只能在触发了prepare之后
            player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                @Override
                public void onPrepared(MediaPlayer mp) {
                    player.start();
                }
            });
    
            /*
                向player中设置dispay,也就是SurfaceHolder。
                但此时有可能SurfaceView还没有创建成功,所以需要监听SurfaceView的创建事件
             */
            SurfaceView surfaceView = (SurfaceView)this.findViewById(R.id.surfaceView);
            surfaceView.getHolder().addCallback(new SurfaceHolder.Callback() {
                @Override
                public void surfaceCreated(SurfaceHolder holder) {
                    //将播放器和SurfaceView关联起来
                    player.setDisplay(holder);
    
                    //异步缓冲当前视频文件,也有一个同步接口
                    player.prepareAsync();
                }
    
                @Override
                public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
    
                }
    
                @Override
                public void surfaceDestroyed(SurfaceHolder holder) {
    
                }
            });
        }
    

    相关文章

      网友评论

          本文标题:Android使用MediaPlayer播放视频的基本逻辑

          本文链接:https://www.haomeiwen.com/subject/hgnqhqtx.html