最近更新时间:2023.09.20 16:23:43
首次发布时间:2022.10.18 20:15:10
本文为您介绍如何用 Android 上传 SDK 以简单便捷的方式上传图片。
此文档适用于 TTSDK 1.32.2 及以上版本,其他版本文档请参考 Android 上传 SDK 接入文档(旧版)。
您已完成上传 SDK 的集成准备。
在实际开发过程中,为了便于调试以及排查问题,建议您打开 logcat 日志。
说明
为了减少性能开销,请务必关闭 Release 线上版本。
BDUploadLog.turnOn(LOG_DEBUG, 1); BDUploadUtil.setEnableNativeLog(true);
初始化为轻量操作,建议您放到 Application#onCreate 中执行,来保障初始化顺序。
Env.init(new Config.Builder() .setApplicationContext(context) .setAppID("your app id") .setAppName("your app English name") // 合法版本号应大于、等于 3 位,如:"1.3.2" .setAppVersion(BuildConfig.VERSION_NAME) .setAppChannel("channel name") .build());
参数获取:请在火山引擎控制台创建应用后获取。
详细的参数说明如下表所示。
参数 | 类型 | 说明 |
---|---|---|
AppId | String | App ID,必填。从火山引擎控制台应用管理获取。 |
AppName | String | App 英文名,必填。从火山引擎控制台应用管理获取。 |
AppVersion | String | App 版本号,必填。该值需要您根据实际业务情况自定义,使用 BuildConfig.VERSION_NAME,合法版本号应包含大于等于 2 个分隔符,例如:"1.3.2" 。 |
AppChannel | String | APP 渠道号,必填。该值需要您根据实际业务情况自定义,例如:小米应用商店 (xiaomi)、华为应用市场 (huawei) 等。 |
实现创建实例的代码示例如下所示:
BDImageXUploader mUploader = new BDImageXUploader();
设置要上传的文件,上传 SDK 支持两种方式,您可任选其一。
具体示例如下所示:/** * 设置文件绝对路径 * * @param num 图片个数,最大值为 10,大于 10 报错 * @param path 图片绝对路径数组 */ public void setFilePath(int num, String[] path)
int num = 2; String[] path = new String[num]; path[0] = "/mnt/sdcard/test0.jpg"; path[1] = "/mnt/sdcard/test1.jpg"; mUploader.setFilePath(num, path);
从您的 AppServer 获取鉴权参数设置给 SDK。鉴权参数说明及获取方式详见客户端上传说明,具体操作代码示例如下所示:
注意
如需使用重名文件覆盖上传,请确保您获取的 STS2 上传签名(此处以 Golang 为例)已开启重名覆盖。
mUploader.setTopAccessKey("xxx"); mUploader.setTopSecretKey("xxx"); mUploader.setTopSessionToken("xxx");
为账号对应的 ServiceID,具体说明以及获取方式您可参考图片服务管理。具体操作代码示例如下所示:
mUploader.setServiceID("xxx");
mUploader.start() ;
注意
当您不需要再次进行上传操作时,请务必调用close()
,否则会导致内存泄漏。
在 A 线程创建 Uploader 实例,如果 A 线程存在 Looper,则在 A 线程回调;否则在主线程回调。
public void setListener(BDImageXUploaderListener listener) public interface BDImageXUploaderListener { // 上传进度和上传完成的回调,详见下表 onNotify 回调说明 void onNotify(int what, long parameter, BDImageXInfo info); // 关键日志回调,接入方可将回调信息上传到接入方服务器,可通过日志排查线上问题。 // 需要通过 mUploader.setEnableLogCallBack(true) 开启才能生效。 // 不使用空实现即可。 void onLog(int what, int code, String info); // 上传出错重试时回调;由接入方检查网络状态, // 返回 1 sdk 认为有网,进行重试; // 返回 0 sdk 认为无网,不再进行重试 // 如接入方不想检查网络状态,返回 1 即可,SDK 会在重试次数、超时时间内重试。 int imageXUploadCheckNetState(int errorCode, int tryCount); }
onNotify
回调说明如下表所示:
消息类型 what | 说明 | 对应 parameter 含义 | 对应 info 含义 |
---|---|---|---|
MsgIsUpdateProgress | 单张图片上传进度更新。 | 上传进度。取值范围为[0, 100] | info 里包含图片的 index 信息。详见BDImageXInfo 参数说明。 |
MsgIsSingleImageComplete | 单张图片上传完成通知。 | 0,无意义 | info 里包含上传完成图片的 index 和 mImageTosKey 等信息。详见BDImageXInfo 参数说明。 |
MsgIsSingleImageFail | 图片上传失败通知。调用close() 来释放上传对象。 | 错误码 | info 里包含图片的 index 信息。详见BDImageXInfo 参数说明 |
MsgIsComplete | 整个上传流程完成通知,调用 | 0,无意义 | 无需关注 |
BDImageXInfo
参数 | 说明 |
---|---|
mImageTosKey | TOS 存储 Key。 |
mFileIndex | 图片序号,对应传入上传图片数组的下标。 |
mMetaInfo | 文件信息,包含 FileName、SourceUri、ImageSize、ImageUri 等。 |
mProgress | 上传进度,取值范围为:[0, 100]。 |
mErrorCode | 详情请参见上传 SDK 错误码。 |
mEncryptionMeta | 图片的加密信息,字段为空,暂不支持使用。 |