一、概述
此文档旨在指导Android应用开发者,如何在应用中植入媒体上传SDK(后面简称SDK),为开发者提供简单、方便的接口, 帮助开发者实现Android平台媒体上传功能。注意:目前仅支持视频文件上传。
SDK提供了两种简单的调用方式,开发者可根据自己的需求定制开发。
SDK基于jar包集成方案,使用者需引入media_upload_demo工程中的libs/media_upload_sdk.jar。
media_upload_demo是一个Android示例工程,可以帮助开发者了解如何使用SDK相关功能和接口使用。
二、阅读对象
本文档面向所有使用该SDK的开发人员、测试人员、合作伙伴以及对此感兴趣的其他人员。
三、SDK 功能说明
SDK以开发者为中心,以快捷创建媒体上传为目标,具有以下特性:
- 支持mp4、3gp、flv等多种视频格式资源
- 支持本地视频和录像视频的上传
四、使用说明
4.1 环境准备
- 导入工程
从 Eclipse 导入Android示例工程,里面只有一个示例窗体:主窗体MainActivity。
- 权限设置
在AndroidManifest.xml中做如下设置:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
- 日志路径
初始化成功后,sdk会启动写日志文件,用了记录各种事件、帮助开发人员分析问题。日志文件保存在扩展缓存目录下context.getExternalCacheDir(),例如我手机上的日志就保存在/storage/sdcard1/Android/data/com.pplive.upload.test/cache/下面。
4.2 初始化
UploadManager.getInstance().init
(Context context, UpLoadManagerListener listener, String url, String cookie);
参数listener为监听实例。
参数url是指定了上传账号的token网址,例如目前测试网址是http://115.231.44.26:8081/uploadtest/uptoken。 参数cookie为视频属性参数,如果为video-paramas,则会添加视频的高宽、比特率。帧率、时长等属性。如果为空则视为普通视频,不添加视频属性参数。
4.3 添加视频
UploadManager.getInstance().addVideo(vinfo);
其中vinfo是UploadManager.VideoInfo对象,表示待上传的视频文件信息。如果cookie为video-paramas,则需要设置vinfo的高宽、比特率。帧率、时长等属性。
函数执行后会进行内部校验并回调到UpLoadManagerListener.onAddUploadTask(UploadInfo info, int state)
回调参数中info表示上传信息。
回调参数中state表示上传状态: 0表示成功, 1表示失败, 2表示已上传过。
添加成功(state==0)后会立即上传,并且进行状态回调UpLoadManagerListener.onStateChange(final UploadInfo info)
其中info.getProgress()是当前上传任务的进度。
4.4 停止/暂停上传
info.setState(UploadInfo.STATE_STOP);
info.setStop(true);
UploadManager.getInstance().updateUploadThread(info);
UploadManager.getInstance().updateUpload(info);
目前暂停上传和停止上传功能是一样,都是设置任务状态为停止,并停止内部上传线程。
停止上传的视频进度会保存在服务器上,下次重新添加会向服务器请求该视频的上传进度,从断点处继续上传。
五、监听接口定义
以下是主要的接口定义及说明,完整的定义以实际代码为准,如有疑问可随时反馈。
public interface UpLoadManagerListener {
public void onStateChange(UploadInfo info);//更新进度
public void onUploadError(UploadInfo info);
public void onUploadSuccess(UploadInfo info);
public void onAddUploadTask(UploadInfo info, int state);
//0:成功, 1:失败, 2:已上传过
}