項目中用到了視頻上傳到OSS服務器,做個記錄:
1.首先添加依賴
//添加OSS對象存儲的sdk
compile'com.aliyun.dpa:oss-android-sdk:2.4.5'
compile'com.squareup.okhttp3:okhttp:3.4.1'
compile'com.squareup.okio:okio:1.9.0'
2.權限設置
3.初始化oss
public class OssAuthConfig {
private ContextmContext;
private ActivitymActivity;
private String endpoint ="http://oss-cn-qingdao.aliyuncs.com";//oss服務器所在地.根據oss判斷
private String accessKeyId ="";//注冊oss后獲取到的key
private String secretKeyId ="";//后臺設置加密獲取的stskeyid
private String securityToken ="";//后臺設置加密獲取的ststoken
private String securityExpiration ="";
private String bucketName ="*****";//由后臺在申請oss的時候配置
private StringcurrentTime;
public OssAuthConfig(Context mContext) {
this.mContext = mContext;
}
public OSS initOss(OssAuthBean.DataBean data){
accessKeyId = data.getAccessKeyId();
secretKeyId = data.getAccessKeySecret();
securityToken = data.getSecurityToken();
securityExpiration = data.getExpiration();
//這里的accessKeyId,secretKeyId,securityToken 是
OSSCredentialProvider credentialProvider =
new OSSStsTokenCredentialProvider(accessKeyId,secretKeyId,securityToken);
ClientConfiguration conf =new ClientConfiguration();
conf.setConnectionTimeout(15 *1000);// 連接超時,默認15秒
? ? ? ? conf.setSocketTimeout(15 *1000);// socket超時,默認15秒
? ? ? ? conf.setMaxConcurrentRequest(5);// 最大并發請求數,默認5個
? ? ? ? conf.setMaxErrorRetry(2);// 失敗后最大重試次數,默認2次
? ? ? ? OSS oss =new OSSClient(mContext,endpoint, credentialProvider);
//返回oss對象供調用
return oss;
}
/**
*異步上傳視頻到oss
/
public void upLoadVideo(String path , String name , OSS oss){
// 構造上傳請求
? ? ? ? Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();
String timeData = getTime(date);
String time = timeData +"-00-00-00";
currentTime = DateUtil.dataOne(time);
final String upLoadName ="OriginalVideo/android/" +currentTime +".mp4";
//upLoadName是上傳的文件存在oss的名字,我這里使用了時間戳
//path是文件在本地的路徑
PutObjectRequest put =new PutObjectRequest(bucketName, upLoadName, path);
? ? ? ? OSSAsyncTask task = oss.asyncPutObject(put,new OSSCompletedCallback() {
@Override
? ? ? ? ? ? public void onSuccess(PutObjectRequest request, PutObjectResult result) {
Log.d("PutObject","UploadSuccess");
if (mOnUploadSuccessListener !=null) {
mOnUploadSuccessListener.onSuccessListener(upLoadName);
}
}
@Override
? ? ? ? ? ? public void onFailure(PutObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
// 請求異常
? ? ? ? ? ? ? ? if (clientExcepion !=null) {
// 本地異常如網絡異常等
? ? ? ? ? ? ? ? ? ? clientExcepion.printStackTrace();
}
if (serviceException !=null) {
// 服務異常
? ? ? ? ? ? ? ? ? ? Log.e("ErrorCode", serviceException.getErrorCode());
Log.e("RequestId", serviceException.getRequestId());
Log.e("HostId", serviceException.getHostId());
Log.e("RawMessage", serviceException.getRawMessage());
}
}
});
}
private String getTime(Date date) {//可根據需要自行截取數據顯示
? ? ? ? SimpleDateFormat format =new SimpleDateFormat("yyyy-MM-dd");
return format.format(date);
}
/**
*設置回調接口方便監聽視頻上傳成功
/
OnUploadSuccessListenermOnUploadSuccessListener;//聲明接口
? ? public void setUploadListener(OnUploadSuccessListener OnUploadSuccessListener) {
mOnUploadSuccessListener = OnUploadSuccessListener;
}
public interface OnUploadSuccessListener {
void onSuccessListener(String name);
}
}