Android 渠道资源预下载功能

1 文挡说明

1.1 功能描述

本文档旨在说明龙图BaseSDK 封装的渠道资源预下载功能。
本文的所述接口需要在接入龙图BaseSDK,并且初始化以后才可以使用。
仅支持Base SDK2.0.7及以后版本

1.2 阅读范围

本文档适用于SDK 接入人员阅读

1.3 使用说明

SDK封装了 vivo渠道预下载功能。
后期将会开发华为,小米,oppo 三家渠道预下载功能,其他渠道没有提供此功能。
游戏使用此功能的同时,还需要支持游戏自行下载资源功能。
SDK不提供资源完整性校验,游戏需要自行校验资源完整性。
对于没有获取到资源或者资源不完整研发需要支持重新下载资源。

1.4 渠道规范

渠道 资源格式 资源大小限制
Vivo 无格式要求 每个包体大小5G以内,同一任务资源包数量不超过20个
华为 无格式要求 每个包体大小不超过2000MB,总大小不超过4000MB,同一任务资源包数量不超过10个
OPPO 无格式要求 资源包数量1个,大小不超过6G
小米 无格式要求 每个包体不超过4G,总大小不超过8G,同一任务,资源包数量不能超过6个

2 检测当前是否支持资源下载功能

2.1 功能说明

通过此接口可以检测当前设备和渠道是否支持资源下载功能。
如果不支持游戏需要自行下载资源。

2.2 接口定义

  1. /**
  2. * 是否支持预下载功能。
  3. * 渠道是否支持预下载功能,
  4. * 初始化以后才可以调用,
  5. * @return true/flase
  6. */
  7. public boolean LTBasegetPreDownloadIsSupport();

2.3 接口示例

  1. // 是否支持预下载功能。
  2. boolean IsSupport = LTBaseSDK.getInstance(this).LTBasegetPreDownloadIsSupport();

3 设置资源文件信息回调

3.1 功能说明

设置预下载相关功能回调

3.2 接口定义

  1. /**
  2. * 设置预下载相关回调
  3. *
  4. * @param callBack
  5. */
  6. public void LTBasesetPreDownloadCallBack(LTPreDownloadCallBack callBack);

3.3 接口示例

  1. LTBaseSDK.getInstance(this).LTBasesetPreDownloadCallBack(mLTPreDownloadCallBack);

3.4 LTPreDownloadCallBack 回调类说明

  1. /**
  2. * 查询当前所有的资源文件信息
  3. *
  4. * @param isSupport 当前渠道是否支持查询
  5. * @param Jsondata 返回的资源文件信息 jsonArray (字段说明见 3.5)
  6. */
  7. void LTPreDownloadQueryList(boolean isSupport, String Jsondata);
  8. /**
  9. * 读取文件数据流
  10. *
  11. * @param inputStream 需要的资源数据流
  12. * @param fileUri 文件的uri地址
  13. * @param fileName 资源文件名
  14. */
  15. void LTPreDownloadInputStreamBegin(InputStream inputStream, Uri fileUri, String fileName);

3.5 资源文件信息 jsonArray说明

字段key 字段说明 字段类型
fileName 资源文件名 String
md5 资源MD5 String
fileLength 资源文件总大小 Long
state 资源状态 0未下载,1下载中,2已下载完成,3已被删除 int
currentLength 当前已经下载资源文件大小 Long
fileUri 文件Uri,可以通过此Uri打开文件 String

4 查询资源文件信息

4.1 功能说明

查询当前所有资源文件信息。

4.2 接口定义

  1. /**
  2. * 查询当前所有资源文件信息。
  3. * 不传fileName,默认查询全部。
  4. * 可以带上fileName。查询某一个文件的信息。
  5. *
  6. * @param fileName (可选,不传默认查询全部文件)
  7. * @param fileMd5 (暂时是预留参数 )
  8. *
  9. */
  10. public void LTBasegetPreDownloadQueryList(String fileName, String fileMd5);

4.3 接口示例

  1. // 举例查询所有文件。
  2. LTBaseSDK.getInstance(this).LTBasegetPreDownloadQueryList(null, null);

5 资源资源文件

5.1 功能说明

开始读取资源信息,使用查询到的资源fileuri 获取,研发也可以使用file自行读取。
使用此接口会通过回调接口返回InputStream 数据流。研发使用完以后需要自己关闭数据流。

5.2 接口定义

  1. /**
  2. * 读取资源文件.
  3. * <p>
  4. * return InputStream 数据流;
  5. */
  6. public void LTBaseopenPreDownloadInputStream_begin(Uri fileUri)

5.3 接口示例

  1. //读取资源文件.
  2. LTBaseSDK.getInstance(this).LTBaseopenPreDownloadInputStream_begin(fileUri);

6 通知渠道资源读取完成

6.1 功能说明

通知渠道文件校验完成。
渠道收到完成通知后会删除本设备上的资源文件。

6.2 接口定义

  1. /**
  2. * 通知渠道文件校验完成。渠道收到完成,会删除资源
  3. *
  4. * @param status 拷贝状态 (0:成功,1:失败)
  5. * @param fileName 完成的文件名(可以为空,如果为空,则为全部完成,渠道会删除全部资源)
  6. */
  7. public void LTBasesubmitPreDownloadUpdateResult(int status, String fileName);

6.3 接口示例

  1. // 删除全部资源文件。
  2. LTBaseSDK.getInstance(this).LTBasesubmitPreDownloadUpdateResult(0, null);