-
Notifications
You must be signed in to change notification settings - Fork 437
DataProvider
贾俊辉 edited this page Mar 14, 2019
·
3 revisions
数据提供者,DataProvider是为了播控的统一以及使用上的优雅而设计的。
在开发中,我们可能会遇到如下场景:你拿到的数据源可能只是个id之类的标识,并不是能直接播放的uri或者url,需要你再用这个id去请求一个接口才能拿到播放的源地址。通常我们都是先去请求接口,然后在成功回调中用拿到的源数据再设置给播放器去播放。
DataProvider的设计就是为了将此过程独立出来包装为一个数据提供者(其实也可以叫数据生产者),拿到数据后发送出去即可。而您只需要把那个id标识给DataProvider即可,接下来的过程就由DataProvider来完成了。DataProvider的具体实现需要由用户完成。
public class MonitorDataProvider extends BaseDataProvider {
//...
public MonitorDataProvider(){
//...
}
@Override
public void handleSourceData(DataSource sourceData) {
this.mDataSource = sourceData;
//...provider start
onProviderDataStart();
//...
//...将数据回调出去
onProviderMediaDataSuccess(bundle);
//...
//...异常时
onProviderError(-1, null)
}
//...
@Override
public void cancel() {
//...cancel something
}
@Override
public void destroy() {
//...destroy something
}
}
使用DataProvider
mVideoView.setDataProvider(new MonitorDataProvider());
mVideoView.setDataSource(mDataSource);
mVideoView.start();
注意: 数据提供者必须要设置在启动播放前。