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

    @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播放视频的基本逻辑)