android 播放https 并且可以设置headers

查了很多东西,终于发现一个非常不错的第三方框架分享给大家,直接写用法

1.添加类库

gradle

dependencies {
    # 必选,内部默认使用系统mediaplayer进行解码
    implementation 'com.github.dueeeke.dkplayer:dkplayer-java:3.2.6'

    # 可选,包含StandardVideoController的实现
    implementation 'com.github.dueeeke.dkplayer:dkplayer-ui:3.2.6'

    # 可选,使用exoplayer进行解码
    implementation 'com.github.dueeeke.dkplayer:player-exo:3.2.6'

    # 可选,使用ijkplayer进行解码
    implementation 'com.github.dueeeke.dkplayer:player-ijk:3.2.6'
    
    # 可选,如需要缓存或者抖音预加载功能请引入此库
    implementation 'com.github.dueeeke.dkplayer:videocache:3.2.6'
}

或者将library下载并导入项目中使用

2.添加布局

<com.dueeeke.videoplayer.player.VideoView
        android:id="@+id/player"
        android:layout_width="match_parent"
        android:layout_height="300dp" />

注意:一定要定死宽高

3.设置视频地址、控制器等

videoView.setUrl(URL_VOD); //设置视频地址
StandardVideoController controller = new StandardVideoController(this); 
controller.addDefaultControlComponent("标题", false);
videoView.setVideoController(controller); //设置控制器
videoView.start(); //开始播放,不调用则不自动播放

4.在Activity

@Override
    protected void onPause() {
        super.onPause();
        videoView.pause();
    }

    @Override
    protected void onResume() {
        super.onResume();
        videoView.resume();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        videoView.release();
    }
    

    @Override
    public void onBackPressed() {
        if (!videoView.onBackPressed()) {
            super.onBackPressed();
        }
    }

5.在AndroidManifest.xml

<activity
    android:name=".PlayerActivity"
    android:configChanges="orientation|screenSize|keyboardHidden"
    android:screenOrientation="portrait" />

6. 下面是在项目中的代码

private void setUrl() {
    try{
        //使用IjkPlayer解码
        OCFile file = getIntent().getParcelableExtra("file");
        Account mAccount = getIntent().getParcelableExtra("account");
        OwnCloudAccount ocAccount = new OwnCloudAccount(mAccount, YHLMyVideoActivity.this);
        OwnCloudClient client = OwnCloudClientManagerFactory.getDefaultSingleton().
            getClientFor(ocAccount, YHLMyVideoActivity.this);
        String url = client.getBaseUri()+"/remote.php/webdav"+file.getRemotePath();
        String userAgent = OwnCloudClientManagerFactory.getUserAgent();
        Map<String, String> headers = new HashMap<>();
        String authorization = getSharedPreferences("hptk", Context.MODE_PRIVATE)
            .getString("Authorization", "");
        headers.put("Authorization", authorization);
        headers.put(OCS_API_HEADER, OCS_API_HEADER_VALUE);
        headers.put("User-Agent", userAgent);
        Log_OC.d("aaa","User-Agent = " + userAgent);
        Log_OC.d("aaa","authorization = " + authorization);
        Log_OC.d("aaa","url = " + url);
        //-------------
        mVideoView.setPlayerFactory(IjkPlayerFactory.create());
        StandardVideoController controller = new StandardVideoController(this);
        //根据屏幕方向自动进入/退出全屏
        controller.setEnableOrientation(true);
        PrepareView prepareView = new PrepareView(this);//准备播放界面
        controller.addControlComponent(prepareView);
        controller.addControlComponent(new CompleteView(this));//自动完成播放界面
        controller.addControlComponent(new ErrorView(this));//错误界面
        TitleView titleView = new TitleView(this);//标题栏
        controller.addControlComponent(titleView);
        VodControlView vodControlView = new VodControlView(this);//点播控制条
        //是否显示底部进度条。默认显示
        vodControlView.showBottomProgress(true);
        controller.addControlComponent(vodControlView);
        GestureView gestureControlView = new GestureView(this);//滑动控制视图
        controller.addControlComponent(gestureControlView);
        //根据是否为直播决定是否需要滑动调节进度
        controller.setCanChangePosition(true);
        //设置标题
        titleView.setTitle("");
        mVideoView.setVideoController(controller);
        mVideoView.setUrl(url,headers);
        //播放状态监听
        mVideoView.addOnStateChangeListener(mOnStateChangeListener);
        mVideoView.start();

    }catch (Exception e){

    }

}
原创文章 1 获赞 1 访问量 125

猜你喜欢

转载自blog.csdn.net/qq_27591421/article/details/106101576