Skip to content

PlayRecord

贾俊辉 edited this page Dec 13, 2018 · 1 revision

配置

框架支持内存播放记录(播放历史点),配置开启后会自动记录播放位置,再次起播时会从记录点开始播放。

//开启内存播放记录
PlayerConfig.playRecord(true);

框架使用LRUCache来管理内存记录,配置中可设置最大记录条数(默认200条)。

//相关配置
PlayRecordManager.setRecordConfig(
                new PlayRecordManager.RecordConfig.Builder()
                        //设置最大记录条数
                        .setMaxRecordCount(100)
                        .build());

为了保证播放数据和记录的准确关联,需要对数据进行索引映射,框架内部有默认的key生成器DefaultRecordKeyProvider。当然此处是可以自定义配置的,根据您数据源的特性进行key的生成。

new PlayRecordManager.RecordConfig.Builder()
                        //设置最大记录条数
                        .setMaxRecordCount(100)
                        .setRecordKeyProvider(new RecordKeyProvider() {
                            @Override
                            public String generatorKey(DataSource dataSource) {
                                //...
                                return null;
                            }
                        })
                        .build()

使用

您可以对播放记录进行删除和清理。

//删除某条记录
PlayRecordManager.removeRecord(dataSource);

//清除播放记录
PlayRecordManager.clearRecord();

扩展

如果内存记录并不满足您的需求,框架提供了记录操作回调输出,您可以自行处理播放记录的存储和获取。 比如您需要把播放记录存储到数据库中,操作如下:

new PlayRecordManager.RecordConfig.Builder()
                        .setMaxRecordCount(100)
                        .setOnRecordCallBack(new OnRecordCallBack() {
                            @Override
                            public int onSaveRecord(DataSource dataSource, int record) {
                                //save to db
                                return record;
                            }

                            @Override
                            public int onGetRecord(DataSource dataSource) {
                                //get record from db
                                return 0;
                            }

                            @Override
                            public int onResetRecord(DataSource dataSource) {
                                //reset
                                return 0;
                            }

                            @Override
                            public int onRemoveRecord(DataSource dataSource) {
                                //remove from db
                                return 0;
                            }

                            @Override
                            public void onClearRecord() {
                                //clean db record
                            }
                        })
                        .build()