此文档旨在指导Android应用开发者,如何在应用中植入media_upload_sdk (以下简称SDK),为开发者提供简单、方便的接口, 帮助开发者实现Android平台视频上传功能。
SDK提供了多层面的调用方式,开发者可根据自己的需求定制化开发上传界面,也可使用默认界面实现快速开发。
SDK基于jar包及so动态库集成方案,使用者需引入media_upload_demo工程中的libs/media_upload_sdk.jar。该jar包是已经混淆过的,在加入第三方应用后请不要再混淆。
media_upload_demo是一个Android示例工程,可以帮助开发者了解如何使用SDK相关功能和接口使用。
本文档面向所有使用该SDK的开发人员、测试人员、合作伙伴以及对此感兴趣的其他人员。
SDK以开发者为中心,以快捷创建媒体播放为目标,具有以下特性:
1. 支持mp4、3pg等视频格式资源
2. 支持本地视频上传、录像上传
4.1 环境准备
1. 导入工程
从 Eclipse 导入Android示例工程,里面只有一个示例窗体:主窗体MainActivity。
2.权限设置
在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" " />
3.日志路径
初始化成功后,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为监听实例。
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);
目前暂停上传和停止上传功能是一样,都是设置任务状态为停止,并停止内部上传线程。
停止上传的视频进度会保存在服务器上,下次重新添加会向服务器请求该视频的上传进度,从断点处继续上传。
以下是主要的接口定义及说明,完整的定义以实际代码为准,如有疑问可随时反馈。
1.上传控制接口定义(见PPTVSdkMgr.java):
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:已上传过