腾讯云android sdk接入文档

Meiyou 贡献于2017-12-14

作者 庆 毛  创建于2015-03-31 15:39:00   修改者redickran(冉启蕾)  修改于2015-12-15 08:17:00字数21341

文档摘要:腾讯云androidSDK接入文档
关键词:

腾讯云android SDK接入文档 1 注册APP 2 2 工程配置 2 2.1 导入SDK 2 2.2 配置manifest 2 3 上传SDK 3 3.1 初始化 3 3.2 图片上传 3 3.3 暂停、恢复、取消上传 5 3.4 文件查询 5 3.5 文件删除 7 3.6 文件复制 8 3.7 日志上报 9 4 下载SDK 10 4.1 初始化 10 4.2 下载并发数 10 4.3 长连接/断点续传 10 4.4 图片/视频下载 11 4.5 取消下载 12 4.6 缓存查询 13 4.7 日志上报 13 5 文件SDK 14 5.1 初始化 14 5.2 创建目录 15 5.3 拉取目录 15 5.4 前缀搜索 19 5.5 文件上传 20 5.6 视频上传 22 5.7 暂停、恢复、取消上传 23 5.8 对象查询 23 5.9 对象更新 25 5.10 对象删除 25 1 注册APP 在腾讯云页面上注册APP信息,获取APPID。 2 工程配置 2.1 导入SDK 将SDK包中的libs目录合并到本地工程的libs目录,然后配置工程导入所有jar包。 上传SDK的libs目录如下: PS:如果工程中含有armeabi-v7a,则上述so也需要拷贝一份到此目录下,否则由于android系统的问题在安装apk之后会找不到so。 so兼容x86架构,若项目需要兼容x86,则将sdk中的so复制一份放入x86目录下即可。 下载SDK的libs目录如下: 2.2 配置manifest SDK需要网络访问相关的一些权限,需要在manifest中进行权限声明如下所示: 3 上传SDK 3.1 初始化 在使用上传功能之前需要先初始化,目前支持文件、图片和视频三种业务,用户根据需求进行注册,初始化分为两步: 1. 创建UploadManager对象 /** * 业务类型 * File–文件业务,Photo-图片业务,Video视频业务,Audio暂时未支持 * */ public enum FileType { File, Photo, Audio, Video, Other } /** * 构造方法 * @param context * @param appid 腾讯云注册的APPID * @param fileType 业务类型 * @param persistenceId 持久化ID,每个UploadManager需设置一个唯一的ID用于持久 * 化保存未完成任务列表,以便应用退出重进后能继续进行上传;传 * 入为Null,则不会进行持久化保存 */ public UploadManager(Context context, String appid, FileType fileType, String persistenceId) n 原型: import com.tencent.upload.UploadManager; import com.tencent.upload.Const.FileType; // 实例化Photo业务上传管理类 UploadManager photoUploadMgr = null; photoUploadMgr = new UploadManager(context, APPID, FileType.Photo, "qcloudphoto"); n 示例: 3.2 图片上传 上传一张图片的步骤如下: 1. 创建PhotoUploadTask对象 2. 调用UploadManager的upload方法,将PhotoUploadTask对象传入 public PhotoUploadTask(String file_path, IUploadTaskListener listener); /** 上传回调监听器 */ public interface IUploadTaskListener { // 上传成功 void onUploadSucceed(FileInfo result); // 上传失败 void onUploadFailed(int errorCode, String errorMsg); // 上传进度 void onUploadProgress(long totalSize, long recvDataSize); // 上传任务状态变化 void onUploadStateChange(TaskState state); } n 原型: import com.tencent.upload.task.impl.PhotoUploadTask; PhotoUploadTask task = new PhotoUploadTask(filePath, new IUploadTaskListener() { @Override public void onUploadSucceed(final FileInfo result) { Log.i("Demo", "upload succeed: " + result.url); } @Override public void onUploadStateChange(TaskState state) { } @Override public void onUploadProgress(long totalSize, long sendSize){ long p = (long) ((sendSize * 100) / (totalSize * 1.0f)); Log.i("Demo", "上传进度: " + p + "%"); } @Override public void onUploadFailed(final int errorCode, final String errorMsg){ Log.i("Demo", "上传结果:失败! ret:" + errorCode + " msg:" + errorMsg); } } ); task.setBucket(BUCKET); // 设置Bucket(可选) task.setFileId("test_fileId_" + UUID.randomUUID()); // 为图片自定义FileID(可选) task.setAuth(PHOTO_SIGN); photoUploadMgr.upload(task); // 开始上传 n 示例: 3.3 暂停、恢复、取消上传 上传任务可以暂停、恢复或者取消,只需要传入相应的taskId即可,上传任务的状态变化会通过IUploadTaskListener通知。 /** * 暂停指定的上传任务 * @param taskId 对应UploadTask的任务ID * @return 成功返回True,失败返回False;如果传入的taskId没有对应的UploadTask,则失败 */ public boolean pause(int taskId); /** * 恢复指定的上传任务,重新发送 * @param taskId 对应UploadTask的任务ID * @return 成功返回True,失败返回False;如果传入的taskId没有对应的UploadTask,则失败 */ public boolean resume(int taskId); /** * 取消指定的上传任务 * @param taskId 对应UploadTask的任务ID * @return 成功返回True,失败返回False;如果传入的taskId没有对应的UploadTask,则失败 */ public boolean cancel(int taskId); n 原型: int photoTaskId = photoTask.getTaskId(); photoUploadMgr.pause(photoTaskId); // 暂停上传 photoUploadMgr.resume(photoTaskId); // 恢复上传 photoUploadMgr.cancel(photoTaskId); // 取消上传 n 示例: 3.4 文件查询 查询图片或者视频文件的详细信息,步骤如下: 1. 通过文件url创建FileStatTask对象 2. 调用UploadManager的sendCommand方法,将FileStatTask对象传入 3. 在FileStatTask.Ilistener的回调中获取查询结果 /** * 文件查询任务,Photo业务使用 * @param file_id 查询的文件ID * @param fileType 查询的文件类型 * @param bucket 查询的文件所属Bucket * @param listener 结果回调 */ public FileStatTask(String file_id, FileType fileType, String bucket, IListener listener) n 原型: // FileInfo -- 文件详细信息Key String _file_url = "file_url"; //文件url String _file_fileid = "file_fileid"; //文件key String _file_upload_time = "file_upload_time"; //上传时间 String _file_size = "file_size"; //文件大小 String _file_md5 = "file_md5"; //存储中文件md5 String _file_type = "file_type"; //图片/视频还是 String _photo_type = "photo_type"; //图片类型1JPG、2PNG、3BMP、4WEBP String _photo_width = "photo_width"; //图片宽 String _photo_height = "photo_height"; //图片高 String _photo_bind_info = "photo_bind_info"; //图片绑定数据 String _video_status = "video_status"; //视频状态VideoStatus String _video_play_time = "video_play_time"; //视频播放时长 String _video_title = "video_title"; //视频标题 String _video_desc = "video_desc"; //视频描述 String _video_cover_url = "video_cover_url"; //视频封面url n 原型 import com.tencent.upload.task.impl.FileStatTask; FileStatTask filetask = new FileStatTask(fileId, FileType.Photo, BUCKET, new FileStatTask.IListener() { @Override public void onSuccess(final FileInfo result) { Log.i("Demo", "MD5:" + result.extendInfo.get("file_md5") + "\nWidth : " + result.extendInfo.get("photo_width") + "\nHeight: " + result.extendInfo.get("photo_height")); } @Override public void onFailure(final int ret, final String msg) { Log.e("Demo", "查询结果:失败! ret:" + ret + " msg:" + msg); } }); task.setAuth(PHOTO_SIGN); photoUploadMgr.sendCommand(filetask); n 示例: 3.5 文件删除 删除文件步骤如下: 1. 通过文件url创建FileDeleteTask对象 2. 调用UploadManager的sendCommand方法,将FileDeleteTask对象传入 3. 在FileDeleteTask.Ilistener的回调中获取查询结果文件复制 n 原型: /** * 文件删除任务,Photo业务使用 * @param file_id 删除的文件ID * @param fileType 删除的文件类型 * @param bucket 删除的文件所属Bucket * @param listener 删除结果回调 */ public FileDeleteTask(String file_id, FileType fileType, String bucket, IListener listener) import com.tencent.upload.task.impl.FileDeleteTask; FileDeleteTask filetask = new FileDeleteTask(fileId, FileType.Photo, BUCKET, new FileDeleteTask.IListener() { @Override public void onSuccess(Void result) { Log.e("Demo", "删除结果:成功!"); } @Override public void onFailure(final int ret, final String msg) { Log.e("Demo", "删除结果:失败! ret:" + ret + " msg:" + msg); } }); task.setAuth(PHOTO_SINGLE_SIGN); photoUploadMgr.sendCommand(filetask); n 示例: 3.6 文件复制 复制文件步骤如下: 1. 通过文件url创建FileCopyTask对象 调用UploadManager的sendCommand方法,将FileCopyTask对象传入 2. 在FileCopyTask.Ilistener的回调中获取查询结果文件复制 /** * 文件复制任务,Photo业务使用 * @param fileType 文件类型 * @param bucket 文件所在Bucket * @param src_fileId 源文件的fileid * @param dst_fileId 复制后新文件的fileid * @param listener */ public FileCopyTask(FileType fileType, String bucket, String src_fileId, String dst_fileId, IListener listener) n 原型: import com.tencent.upload.task.impl.FileCopyTask; FileCopyTask filetask = new FileCopyTask(FileType.Photo, BUCKET, fileId, fileId + "_copy", new FileCopyTask.IListener() { @Override public void onSuccess(final String result) { Log.e("Demo", "复制结果:成功! url:" + result); } @Override public void onFailure(final int ret, final String msg) { Log.e("Demo", "复制结果:失败! ret:" + ret + " msg:" + msg); } }); task.setAuth(PHOTO_SINGLE_SIGN); photoUploadMgr.sendCommand(filetask); n 示例: 3.7 日志上报 SDK会将上传过程中的日志保存到本地文件中,以便当用户上传过程中遇到问题时可以直接通过日志文件进行详细定位分析,SDK提供了日志上报接口,可以将指定日期的日志上报到腾讯云后台。 /** * 上报formDate到toDate对应的日志 * @param appid 腾讯云注册的APPID * @param fromDate 开始上报时间(时间单位:天) * @param toDate 结束上报时间(时间单位:天) * @return 成功返回True,失败返回False */ public static boolean uploadLog(String appid, Date fromDate, Date toDate); n 原型: // 上报一天前的日志 Date beginDate = new Date(System.currentTimeMillis() - 24 * 3600 * 1000); Date endDate = beginDate; UploadManager.uploadLog(APPID, beginDate, endDate); n 示例: 4 下载SDK 4.1 初始化 n 函数原型: // 实例化下载管理类 Downloader downloader = new Downloader(this, APPID, "TestDownloader"); /** * 构造方法 * @param context Android Context * @param appid 腾讯云注册的APPID * @param persistenceId 每个Download实例需要分配一个唯一的id,该ID用于区分临时缓存 * 目录 */ public Downloader(Context context, String appid, String persistenceId); n 示例: 4.2 下载并发数 可以指定下载器最大并发数。 /** * 指定下载队列的最⼤大并发数 * @param count 并发数; 调用下载接口之后再修改则无效 */ public void setMaxConcurrent(int count); n 函数原型: n 示例: // 设置最大并发数 downloader.setMaxConcurrent(3); 4.3 长连接/断点续传 下载器提供开关,可以设定是否开启长连接和断点续传功能。 /** * 指定下载器是否支持断点续传 * @param enable True -- 支持; False -- 不支持 */ public void enableHTTPRange(boolean enable); /** * 指定下载器是否支持HTTP长连接 * @param keepalive True -- 支持; False -- 不支持 */ public void enableKeepAlive(boolean keepalive); n 函数原型: // 启动断点续传功能 downloader.enableHTTPRange(true); // 启动长连接功能 downloader.enableKeepAlive(true); n 示例: 4.4 图片/视频下载 文件下载是采用异步模式进行下载,下载的进度/成功/失败/取消等信息通过DownloadListener进行回调通知。 /** * 异步下载请求 * @param url 要下载的文件URL * @param listener 下载结果监听器 * @return */ public boolean download(String url, DownloadListener listener); n 函数原型: /** 下载监听器 */ public interface DownloadListener{ public void onDownloadSucceed(String url, DownloadResult result); public void onDownloadFailed(String url, DownloadResult result); public void onDownloadCanceled(String url); public void onDownloadProgress(String url, long totalSize, float progress); } n 函数原型: n 示例: DownloadListener listener = new DownloadListener() { @Override public void onDownloadSucceed(String url, DownloadResult result) { Log.i("Demo", "下载成功: " + result.getPath()); } @Override public void onDownloadProgress(String url, long totalSize, float progress) { long nProgress = (int) (progress * 100); Log.i("Demo", "下载进度: " + nProgress + "%"); } @Override public void onDownloadFailed(String url, DownloadResult result) { Log.i("Demo", "下载失败: " + result. getErrorCode()); } @Override public void onDownloadCanceled(String url) { Log.i("Demo", "下载任务被取消"); } }; downloader.download(url, listener); 4.5 取消下载 /** * 取消指定的下载任务 * @param url 下载文件地址 * @param listener 下载结果监听器 */ public void cancel(String url, DownloadListener listener); /** * 取消所有下载任务 */ public void cancelAll(); n 函数原型: // 取消单个下载任务: listener 为创建下载任务的时候传入的监听器 downloader.cancel(url, listener); // 取消全部下载任务 downloader.cancelAll(); n 示例: 4.6 缓存查询 Downloader下载组件支持本地文件缓存 /** * 判断指定URL对应的本地缓存文件是否存在 * @param url 文件地址 * @return 有本地缓存文件则返回True,否则False */ public boolean hasCache(String url); /** * 获取指定URL的本地缓存文件 * @param url 文件地址 * @return 缓存存在则返回对应的File,否则返回Null */ public File getCacheFile(String url); /** * 清除SDK所有缓存文件 */ public void cleanCache(); n 函数原型: //先检查是否有本地缓存文件 if (mDownloader.hasCache(url)) { File file = mDownloader.getCacheFile(url); if (file != null && file.exists()) { Log.i("Demo", "命中缓存"); return; } } // 如果需求清空本地缓存 mDownloader.cleanCache(); n 示例: 4.7 日志上报 SDK会将下载过程中的日志保存到本地文件中,以便当用户上传过程中遇到问题时可以直接通过日志文件进行详细定位分析,SDK提供了日志上报接口,可以将指定日期的日志上报到腾讯云后台。 /** * 上报formDate到toDate对应的日志 * @param appid 腾讯云注册的APPID * @param fromDate 开始上报时间(时间单位:天) * @param toDate 结束上报时间(时间单位:天) * @return 成功返回True,失败返回False */ public static boolean uploadLog(String appid, Date fromDate, Date toDate); n 原型: // 上报一天前的日志 Date beginDate = new Date(System.currentTimeMillis() - 24 * 3600 * 1000); Date endDate = beginDate; Downloader.uploadLog(APPID, beginDate, endDate); n 示例: 5 文件SDK 5.1 初始化 见3.1初始化章节 import com.tencent.upload.UploadManager; import com.tencent.upload.Const.FileType; // 实例化File业务上传管理类 UploadManager fileUploadMgr = null; fileUploadMgr = new UploadManager(context, APPID, FileType.File, "qcloudfile"); // 实例化Video业务上传管理类 UploadManager videoUploadMgr = null; videoUploadMgr = new UploadManager(context, APPID, FileType.Video, "qcloudvideo"); n 示例: 5.2 创建目录 创建目录步骤如下: 3. 通过文件path创建DirCreateTask对象 4. 调用UploadManager的sendCommand方法,将DirCreateTask对象传入 5. 在DirCreateTask.Ilistener的回调中获取查询结果文件复制 /** * 文件删除任务,File和Video业务使用 * @param fileType 业务类型 * @param bucket bucket * @param path 相对路径 * @param bizAttr 目录属性 * @param listener 结果回调 */ public DirCreateTask (FileType fileType, String bucket, String path, String bizAttr, IListener listener) n 原型: import com.tencent.upload.task.impl.DirCreateTask; DirCreateTask filetask = null filetask = new DirCreateTask(FileType.File, BUCKET, path, bizAttr, new DirCreateTask.IListener(){ @Override public void onSuccess(final DirCreateTask.CmdTaskRsp result) { Log.e("Demo", "目录创建结果:成功! accessUrl:" + result. accessUrl); } @Override public void onFailure(final int ret, final String msg) { Log.e("Demo", "目录创建结果:失败! ret:" + ret + " msg:" + msg); } }); filetask.setAuth(FILE_SIGN); fileUploadMgr.sendCommand(filetask); n 示例: 5.3 拉取目录 拉取目录步骤如下: 1. 通过path创建DirListTask对象 2. 调用UploadManager的sendCommand方法,将DirListTask对象传入 3. 在DirListTask.Ilistener的回调中获取查询结果文件复制 //文件、目录、bucket等对象入口 public class Dentry { public final static int MORE = -1; //更多… public final static int DIR = ObjectType._eObjectDir; //目录对象 public final static int FILE = ObjectType._eObjectDir; //文件对象 public final static int BUCKET = ObjectType._eObjectBucket; //bucket对象 public final static int VIDEO = ObjectType._eObjectVideo; //视频对象 // 拉取文件选项 public final static int ListBoth = ListPattern._eListBoth; //拉取文件和目录 public final static int ListDirOnly = ListPattern._eListDirOnly; //只拉取目录 public final static int ListFileOnly = ListPattern._eListFileOnly;//只拉取文件 public Dentry(); //构造DIR对象类型 public Dentry(int type); public VideoInfo getVideoInfo();// 如果是VIDEO对象类型, // 则返回视频相关信息,否则返回null public int type = 0; //对象类型 public String sha = ""; //sha信息 public String path = ""; //相对路径 public String name = ""; //对象名称 public String accessUrl = ""; //访问URL public String attribute = ""; //对象属性 public long fileSize = 0; //文件长度 public long fileLength = 0; //文件长度 public long createTime = 0; //创建时间 public long modifyTime = 0; //修改时间 } n 原型: // 视频相关属性 public class VideoAttr { public String title = ""; // 视频title public String desc = ""; // 视频描述 public long timeLen = 0; // 视频时长 public boolean isCheck = true; // 0:先发后审,1:先审后发; public String coverUrl = ""; // 视频封面地址 } // 视频相关信息 public class VideoInfo { //微视频新增 //-------------- //f10:手机 //f20:标清 //f30:高清 //-------------- public static final int F0 = VideoFormat._eF0; public static final int F10 = VideoFormat._eF10; public static final int F20 = VideoFormat._eF20; public static final int F30 = VideoFormat._eF30; //----------------------- //- 描述:原视频状态 //----------------------- public static final int DEFAULT = CosVideoStatus._eDEFAULT; //默认状态 public static final int UPLOADING = CosVideoStatus._eUPLOADING; //视频入库中 public static final int CHECKPASS = CosVideoStatus._eCHECKPASS; //审核通过 public static final int CHECKNOTPASS = CosVideoStatus._eCHECKNOTPASS;//审核不通过 public static final int CHECKFAIL = CosVideoStatus._eCHECKFAIL; //审核失败 //----------------------- //- 描述:不同码率视频状态 //----------------------- public static final int INVALID = TranscodeStat._eINVALID; //默认状态 public static final int TRANSCODING = TranscodeStat._eTRANSCODING; //转码中 public static final int TRANSCODEDONE = TranscodeStat._eTRANSCODEDONE; //转码成功 public static final int TRANSCODEFAIL = TranscodeStat._eTRANSCODEFAIL; //转码失败 //----------------------- //- 描述:属性修改标记 //----------------------- public static final int MaskBizAttr = FileModifyFlag._eMaskBizAttr; public static final int MaskTitle = FileModifyFlag._eMaskTitle; public static final int MaskDesc = FileModifyFlag._eMaskDesc; public static final int MaskVideoCover = FileModifyFlag._eMaskVideoCover; public static final int MaskAll = FileModifyFlag._eMaskAll; public int videoStatus = VideoInfo.DEFAULT; // 视频状态 public VideoAttr videoAttr; // 视频属性 public Map playUrlList; // 转码视频url列表 public Map transStatus; // 不同码率转码状态 } n 原型: /** * 文件删除任务,File和Video业务使用 * @param fileType 业务类型 * @param bucket bucket * @param path 相对路径 * @param num 拉多少记录 * @param pattern 拉取方式,目录和文件一起拉的时候,先拉取目录再拉取文件 * @param order 0-正序 1-反序 * @param content 首次拉取必须清空,拉取下一页时需要传入上次一拉去时返回的content * @param listener 结果回调 */ public DirListTask (FileType fileType, String bucket, String path, int num, int pattern, boolean order, String content, IListener listener) n 原型: n 示例: import com.tencent.upload.task.impl.DirListTask; String content = ""; // 第一次拉取目录传入空,拉取path下一页时填入result.content DirListTask filetask = null filetask = new DirListTask(FileType.File, BUCKET, path, 10, Dentry.ListBoth, false, content new DirListTask.IListener() { @Override public void onSuccess(final DirCreateTask.CmdTaskRsp result) { ArrayList dirList = result.inodes; String strEntryList = ""; for (Dentry entry : dirList) { strEntryList += entry.path + "\n"; } if (result.hasMore) { // 存在下一页保存当前页的状态信息 String content = result.content; } Log.e("Demo", "目录拉取结果:成功! \n" + strEntryList); } @Override public void onFailure(final int ret, final String msg) { Log.e("Demo", "目录拉取结果:失败! ret:" + ret + " msg:" + msg); } }); filetask.setAuth(FILE_SIGN); fileUploadMgr.sendCommand(filetask); 5.4 前缀搜索 前缀搜索步骤如下: 1. 通过path+前缀创建DirListTask对象 2. 通过DirListTask对象的setPrefixSearch(true)开启前缀搜索 3. 调用UploadManager的sendCommand方法,将DirListTask对象传入 4. 在DirListTask.Ilistener的回调中获取查询结果文件复制 /** * DirListTask任务前缀搜索开关 * @param prefixSearch true-开启 false-关闭 */ public void setPrefixSearch(boolean prefixSearch) n 原型: import com.tencent.upload.task.impl.DirListTask; String content = ""; // 第一次拉取目录传入空,拉取path下一页时填入result.content DirListTask filetask = null filetask = new DirListTask(FileType.File, BUCKET, path, 10, Dentry.ListBoth, false, content, new DirListTask.IListener() { @Override public void onSuccess(final DirCreateTask.CmdTaskRsp result) { ArrayList dirList = result.inodes; String strEntryList = ""; for (Dentry entry : dirList) { strEntryList += entry.path + "\n"; } if (result.hasMore) { // 存在下一页保存当前页的状态信息 String content = result.content; } Log.e("Demo", "目录拉取结果:成功! \n" + strEntryList); } @Override public void onFailure(final int ret, final String msg) { Log.e("Demo", "目录拉取结果:失败! ret:" + ret + " msg:" + msg); } }); filetask .setPrefixSearch(true); filetask.setAuth(FILE_SIGN); fileUploadMgr.sendCommand(filetask); n 示例: 5.5 文件上传 上传文件的步骤如下: 1. 创建FileUploadTask对象 2. 调用UploadManager的upload方法,将FileUploadTask对象传入 /** 上传回调监听器 */ public interface IUploadTaskListener { // 上传成功 void onUploadSucceed(FileInfo result); // 上传失败 void onUploadFailed(int errorCode, String errorMsg); // 上传进度 void onUploadProgress(long totalSize, long recvDataSize); // 上传任务状态变化 void onUploadStateChange(TaskState state); } n 原型: /** * 文件任务 * @param bucket bucket * @param srcFilePath 本地绝对路径 * @param destFilePath 远程相对路径 * @param bizAttr 文件私有属性 * @param listener 上传结果回调 */ public FileUploadTask(String bucket, String srcFilePath, String destFilePath, String bizAttr, IUploadTaskListener listener); n 原型: import com.tencent.upload.task.impl.FileUploadTask; import com.tencent.upload.task.IUploadTaskListener; FileUploadTask task = new FileUploadTask(BUCKET, filePath, destPath, "", new IUploadTaskListener() { @Override public void onUploadSucceed(final FileInfo result) { Log.i("Demo", "upload succeed: " + result.url); } @Override public void onUploadStateChange(TaskState state) { } @Override public void onUploadProgress(long totalSize, long sendSize){ long p = (long) ((sendSize * 100) / (totalSize * 1.0f)); Log.i("Demo", "上传进度: " + p + "%"); } @Override public void onUploadFailed(final int errorCode, final String errorMsg) { Log.i("Demo", "上传结果:失败! ret:" + errorCode + " msg:" + errorMsg); } }); filetask.setAuth(FILE_SIGN); fileUploadMgr.upload(task); // 开始上传 n 示例: 5.6 视频上传 上传视频的步骤如下: 1. 创建VideoUploadTask对象 2. 调用UploadManager的upload方法,将VideoUploadTask对象传入 /** * 视频上传任务 * @param bucket bucket * @param srcFilePath 本地绝对路径 * @param destFilePath 远程相对路径 * @param bizAttr 文件私有属性,选填 * @param videoAttr 视频私有属性,选填 * @param listener 文件上传结果监听器,选填 */ public VideoUploadTask(String bucket, String srcFilePath, String destFilePath, String bizAttr, VideoAttr videoAttr, IUploadTaskListener listener) n 原型: n 视频上传示例: import com.tencent.upload.task.VideoAttr; import com.tencent.upload.task.VideoInfo; import com.tencent.upload.task.impl.FileUploadTask; import com.tencent.upload.task.IUploadTaskListener; VideoAttr videoAttr = new VideoAttr(); videoAttr.isCheck = false; videoAttr.title = fileName; videoAttr.desc = "cos-video-desc" + fileName; videoAttr.coverUrl = coverUrl; // 视频封面地址 VideoUploadTask task = new VideoUploadTask(BUCKET, filePath, destPath, "", videoAttr, new IUploadTaskListener() { @Override public void onUploadSucceed(final FileInfo result) { Log.i("Demo", "upload succeed: " + result.url); } @Override public void onUploadStateChange(TaskState state) { } @Override public void onUploadProgress(long totalSize, long sendSize){ long p = (long) ((sendSize * 100) / (totalSize * 1.0f)); Log.i("Demo", "上传进度: " + p + "%"); } @Override public void onUploadFailed(final int errorCode, final String errorMsg) { Log.i("Demo", "上传结果:失败! ret:" + errorCode + " msg:" + errorMsg); } }); filetask.setAuth(FILE_SIGN); fileUploadMgr.upload(task); // 开始上传 5.7 暂停、恢复、取消上传 见3.4暂停、恢复、取消上传章节 5.8 对象查询 查询Bucket、目录、文件等对像的详细信息,步骤如下: 4. 通过path和ObjectType创建ObjectStatTask对象 5. 调用UploadManager的sendCommand方法,将ObjectStatTask对象传入 6. 在ObjectStatTask.Ilistener的回调中获取查询结果。 /** * 文件查询任务,File和Video业务使用 * @param fileType 业务类型 * @param bucket bucket * @param path 相对路径 * @param type 对像类型 * @param listener 结果回调 */ public ObjectStatTask(FileType fileType, String bucket, String path, int type, IListener listener); n 原型: import com.tencent.upload.task.impl.ObjectStatTask; ObjectStatTask filetask = null; filetask = new ObjectStatTask(FileType.File, BUCKET, path, Dentry.Dir, new ObjectStatTask.IListener() { @Override public void onSuccess(final ObjectStatTask.CmdTaskRsp result) { Dentry dentry = result.inode; String info = "name:" + dentry.name; info += " sha:" + dentry. sha; info += " path:" + dentry. path; info += " type:" + dentry. type; info += " accessUrl:" + dentry.accessUrl; info += " attribute:" + dentry. attribute; info += " fileSize:" + dentry. fileSize; info += " fileLength:" + dentry.fileLength; info += " createTime:" + dentry.createTime; info += " modifyTime:" + dentry.modifyTime; Log.i("Demo", info); } @Override public void onFailure(final int ret, final String msg) { Log.e("Demo", "查询结果:失败! ret:" + ret + " msg:" + msg); } }); filetask.setAuth(FILE_SIGN); fileUploadMgr.sendCommand(filetask); n 示例: 5.9 对象更新 更新Bucket、目录、文件等对像步骤如下: 4. 通过文件path、ObjectType和attr创建ObjectUpdateTask对象 5. 调用UploadManager的sendCommand方法,将ObjectUpdateTask对象传入 6. 在ObjectUpdateTask.Ilistener的回调中获取删除对像结果。 /** * 文件删除任务,File和Video业务使用 * @param fileType 业务类型 * @param bucket bucket * @param path 相对路径 * @param type 对像类型 * @param attr 对像属性 * @param listener 结果回调 */ public ObjectUpdateTask(FileType fileType, String bucket, String path, String attr, int type, IListener listener) n 原型: import com.tencent.upload.task.impl.ObjectUpdateTask; ObjectUpdateTask filetask = null; filetask = new ObjectUpdateTask (FileType.File, BUCKET, path, Dentry.Dir, attr, new ObjectUpdateTask.IListener() { @Override public void onSuccess(ObjectDeleteTask.CmdTaskRsp result) { Log.e("Demo", "更新结果:成功!"); } @Override public void onFailure(final int ret, final String msg) { Log.e("Demo", "更新结果:失败! ret:" + ret + " msg:" + msg); } }); filetask.setAuth(FILE_SINGLE_SIGN); fileUploadMgr.sendCommand(filetask); n 示例: 5.10 对象删除 删除Bucket、目录、文件等对像步骤如下: 7. 通过文件path和ObjectType创建ObjectDeleteTask对象 8. 调用UploadManager的sendCommand方法,将ObjectDeleteTask对象传入 9. 在ObjectDeleteTask.Ilistener的回调中获取删除对像结果。 /** * 文件删除任务,File和Video业务使用 * @param fileType 业务类型 * @param bucket bucket * @param path 相对路径 * @param type 对像类型 * @param listener 结果回调 */ public ObjectDeleteTask(FileType fileType, String bucket, String path, int type, IListener listener) n 原型: import com.tencent.upload.task.impl.ObjectDeleteTask; ObjectDeleteTask filetask= null; filetask = new ObjectDeleteTask(FileType.File, BUCKET, path, Dentry.Dir, new ObjectDeleteTask.IListener() { @Override public void onSuccess(ObjectDeleteTask.CmdTaskRsp result) { Log.e("Demo", "删除结果:成功!"); } @Override public void onFailure(final int ret, final String msg) { Log.e("Demo", "删除结果:失败! ret:" + ret + " msg:" + msg); } }); filetask.setAuth(FILE_SINGLE_SIGN); fileUploadMgr.sendCommand(filetask); n 示例:

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档