Android studio 使用vitamio

    @Override
    protected void Load() {
   
        if(!isPrepared || !isVisible)
            return;
        Vitamio.initialize(getActivity());
        if(!io.vov.vitamio.LibsChecker.checkVitamioLibs(getActivity())){
            return;
        }
        if(isCreate) playVideo();

    }

    @Override
    protected void onInvisible() {
        releaseMediaPlayer();
        LogUtils.i(TAG,"media play  onInvisible");
        super.onInvisible();
    }

    @Override
    public void onResume() {
        super.onResume();
    }

    @Override
    public void onPause() {
        LogUtils.i(TAG,"media play  pause");
        super.onPause();
    }

    @Override
    public void onDestroy() {
        releaseMediaPlayer();
        LogUtils.i(TAG,"media play  onDestroy");
        super.onDestroy();
    }

    public void playVideo(){
        try {
            s=path.split("/");
            file_name =s[s.length-1];
          
            getvideofromsdcard(getActivity(),file_name,flag_ssi);
           //判断本地是否有缓存的视频,如果有就读取的,如果没有就从网上边播边下载
            if(getvideofromsdcard(getActivity(),file_name,flag_filename)){
                mVvv.setVideoURI(Uri.parse("/sdcard/DCIM/"+ file_name));
                Log.d("videosuccess","videosuccess");
               isexist=false;
            }else {
                try {
                    mVvv.setVideoURI(Uri.parse(path));        
                    mHandler.postDelayed(donwnloadrun,0);
//103对应的操作 将视频边播边存入到本地                                                         //mVvv.setVideoURI(Uri.parse("cache:/sdcard/DCIM/" + file_name + ":" + Uri
                } catch (Exception e) {
                    e.printStackTrace();
                    String s = e.getMessage();
                    Log.d("DCIM", s);
                }
            }

           //设置进度条和操作按钮不可见
            MediaController mc=  new MediaController(getActivity());
            mc.setVisibility(View.GONE);
            mVvv.setMediaController(mc);
            try {
                mVvv.start();
            }catch (Exception e){
                String s=e.getMessage();

            }

            Log.d("videosuccess"," mVvv.start();");
            mVvv.setVideoQuality(MediaPlayer.VIDEOQUALITY_HIGH); //清晰度设置高清
​​​​​​   ​//视频播放完成后调用。
            mVvv.setOnCompletionListener(new MediaPlayer.OnCompletionListener(){

                @Override
                public void onCompletion(MediaPlayer mp) {
                    Log.d("vitamioproblem","onCompletion");
                    //mp.seekTo(0);
                    mVvv.stopPlayback();
                    setHandlerDelayed(0);
                }
            });
           //在视频预处理完成后被调用,此时视频的宽度、高度、宽高比信息已经获取到,此时可调用seekTo让视频从指定位置开始播放。
            mVvv.setOnPreparedListener(new MediaPlayer.OnPreparedListener(){

                @Override
                public void onPrepared(MediaPlayer mp) {
                    Log.d("vitamioproblem","onPrepared");

                    mProgressBarLayout.setVisibility(View.GONE);
                }
            });
            //监听 开始缓冲、缓冲结束、下载速度变化
            mVvv.setOnInfoListener(new MediaPlayer.OnInfoListener() {

                @Override
                public boolean onInfo(MediaPlayer mp, int what, int extra) {
                    switch (what) {
                        case MediaPlayer.MEDIA_INFO_BUFFERING_START:
                            if (mVvv.isPlaying()) {
                                mVvv.pause();
                                mProgressBarLayout.setVisibility(View.VISIBLE);
                                //isBufferingStart = true;
                            }
                            time_start = System.currentTimeMillis();
                            Log.d("vitamioproblem", "MediaPlayer.MEDIA_INFO_BUFFERING_START" + " " + time_start);
                            break;
                        case MediaPlayer.MEDIA_INFO_BUFFERING_END:
                            mProgressBarLayout.setVisibility(View.GONE);
                            mVvv.start();
                            time_end = System.currentTimeMillis();
                            Log.d("vitamioproblem", " " + "时长为"+mVvv.getDuration());


                            if ((time_end - time_start) > 10000) {
                                Toast.makeText(getActivity(), "播放太慢,建议下载到本地", Toast.LENGTH_LONG).show();
                                Toast.makeText(getActivity(), "正在下载中,请耐心等待", Toast.LENGTH_LONG).show();
                                mHandler.postDelayed(mRunnable,2000);
                            }
                            Log.d("vitamioproblem", "MediaPlayer.MEDIA_INFO_BUFFERING_END" + " " + time_end);
                            break;
                        case MediaPlayer.MEDIA_INFO_DOWNLOAD_RATE_CHANGED:
                            break;
                    }
                    return true;
                }
            });
           //错误监听
            mVvv.setOnErrorListener(new MediaPlayer.OnErrorListener(){
                @Override
                public boolean onError(MediaPlayer mp, int what, int extra) {
                    switch (what){
                        case MediaPlayer.MEDIA_ERROR_UNKNOWN:
                            Toast.makeText(getActivity(),"未知错误",Toast.LENGTH_LONG).show();
                            setHandlerDelayed(5000);
                            break;
                        case MediaPlayer.MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK:
                            Toast.makeText(getActivity(),"视频播放比较慢或视频本身有问题",Toast.LENGTH_LONG).show();
                            setHandlerDelayed(5000);
                            break;
                        case MediaPlayer.MEDIA_INFO_VIDEO_TRACK_LAGGING:
                            Toast.makeText(getActivity(),"视频不能解码",Toast.LENGTH_LONG).show();
                            setHandlerDelayed(5000);
                            break;
                    }
                    return true;
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 播放视频
     */
    private void startVideoPlayback() {
        isPlaying = true;
        removeHandlerDelayed();
        holder.setFixedSize(mVideoWidth, mVideoHeight);
       // mMediaPlayer.start();
    }

    /**
     * 释放MediaPlayer
     */
    private void releaseMediaPlayer() {

        LogUtils.i(TAG,"media release");
        if (mVvv != null) {
            if(isPlaying)mVvv.stopPlayback();
          /*  mMediaPlayer.release();
            mMediaPlayer = null;*/
        }
    }

    /**
     * SurfaceHolder.Callback
     */
    @Override
    public void surfaceCreated(SurfaceHolder surfaceHolder) {
        isCreate = true;
        if(isPrepared && isVisible)playVideo();
    }

    @Override
    public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) {

    }

    @Override
    public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
        releaseMediaPlayer();
    }


   


   
}

猜你喜欢

转载自blog.csdn.net/sunshine_0707/article/details/81289750