Android --- Alibabaクラウドネットワークビデオと進行状況のダウンロード

1.build.gradleにAlibabaCloudSDKを追加します

api  'com.aliyun.dpa:oss-android-sdk:+'

2.インターフェース

//系统相册目录
String galleryPath = Environment.getExternalStorageDirectory()
		+ File.separator + Environment.DIRECTORY_DCIM
		+ File.separator + "Camera";
File gallery = new File(galleryPath);
if (!FileUtils.isFileExists(gallery)) {
	gallery.mkdir();
}
File file = new File(galleryPath, "视频名称.MP4");

/**
 * @API GetObjectRequest
 * 创建新请求以获取指定对象
 * @参数 bucketName Bucket name
 * @参数 objectKey  Object key
 */
GetObjectRequest request = new GetObjectRequest("阿里云API的bucket名称", "阿里云视频地址");
GetObjectResult object = null;
try {

	/**
	 * API:GetObject
     * 同步下载文件
     * 获取对象。(调用者需要该对象的读取权限)
     * @参数 request
     */
	object = oss.getObject(request);
} catch (Exception e) {
	Log.e(TAG, e.toString());
}
if (object != null) {
	InputStream input = null;
	FileOutputStream uriOutputStream = null;
	byte[] data;
	long totalLength = object.getMetadata().getContentLength();
	int nowLength = 0;
	try {
		/**
		* API: getObjectContent
		* 获取对象内容
		* @返回 InputStream形式的对象内容
		*/
		input = object.getObjectContent();
		data = new byte[input.available()];
		int len;
		uriOutputStream = new FileOutputStream(file.toString());
		while (true) {
			len = input.read(data);
			//这里设置ProgressBar的当前值(nowLength)和最大值(totalLength)
			if (len < 0) break;
			if (//如果需要取消下载,这里设置取消条件) {
				return;
			}
			nowLength += data.length;

			uriOutputStream.write(data, 0, data.length);
			data = new byte[input.available()];
		   
		}
		Tools.scanFile2(context, file.toString());//刷新手机系统相册
	} catch (IOException e) {
		e.printStackTrace();
	} finally {
		if (uriOutputStream != null) {
			try {
				uriOutputStream.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		if (input != null) {
			try {
				input.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

おすすめ

転載: blog.csdn.net/mozushixin_1/article/details/106546247