import android.os.Bundle;
import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;
import com.volcengine.tos.TOSV2;
import com.volcengine.tos.TOSV2ClientBuilder;
import com.volcengine.tos.TosException;
import com.volcengine.tos.comm.event.UploadEventType;
import com.volcengine.tos.model.object.CreateMultipartUploadInput;
import com.volcengine.tos.model.object.UploadEvent;
import com.volcengine.tos.model.object.UploadEventListener;
import com.volcengine.tos.model.object.UploadFileV2Input;
import com.volcengine.tos.model.object.UploadFileV2Output;
public class UploadFileWithEventListenerExample extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
String endpoint = "your endpoint";
String region = "your region";
String accessKey = "your access key";
String secretKey = "your secret key";
String securityToken = "your security token";
String bucketName = "your bucket name";
String objectKey = "your object key";
String uploadFilePath = "the path of file to upload";
long partSize = 10 * 1024 * 1024;
boolean enableCheckpoint = true;
String checkpointFilePath = "the checkpoint file path";
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_message);
TOSV2 tos = new TOSV2ClientBuilder().build(region, endpoint, accessKey, secretKey, securityToken);
Thread tosThread = new Thread(new Runnable() {
CreateMultipartUploadInput create = new CreateMultipartUploadInput().setBucket(bucketName).setKey(objectKey);
UploadEventListener listener = new UploadEventListener() {
public void eventChange(UploadEvent uploadEvent) {
if (uploadEvent.getUploadEventType() == UploadEventType.UploadEventCreateMultipartUploadSucceed) {
Log.i("uploadFile", "event change, createMultipartUpload succeed");
if (uploadEvent.getUploadEventType() == UploadEventType.UploadEventCreateMultipartUploadFailed) {
Log.i("uploadFile", "event change, createMultipartUpload failed");
if (uploadEvent.getUploadEventType() == UploadEventType.UploadEventUploadPartSucceed) {
Log.i("uploadFile", "event change, uploadPart succeed");
if (uploadEvent.getUploadEventType() == UploadEventType.UploadEventUploadPartFailed) {
Log.i("uploadFile", "event change, uploadPart failed");
if (uploadEvent.getUploadEventType() == UploadEventType.UploadEventUploadPartAborted) {
Log.i("uploadFile", "event change, uploadPart aborted");
if (uploadEvent.getUploadEventType() == UploadEventType.UploadEventCompleteMultipartUploadSucceed) {
Log.i("uploadFile", "event change, completeMultipartUpload succeed");
if (uploadEvent.getUploadEventType() == UploadEventType.UploadEventCompleteMultipartUploadFailed) {
Log.i("uploadFile", "event change, completeMultipartUpload failed");
UploadFileV2Input input = new UploadFileV2Input().setCreateMultipartUploadInput(create)
.setFilePath(uploadFilePath).setEnableCheckpoint(enableCheckpoint)
.setCheckpointFile(checkpointFilePath).setPartSize(partSize).setTaskNum(taskNum)
.setUploadEventListener(listener);
UploadFileV2Output output = tos.uploadFile(input);
Log.i("uploadFile", "uploadFile succeed, object's etag is " + output.getEtag());
Log.i("uploadFile", "uploadFile succeed, object's crc64 is " + output.getHashCrc64ecma());
} catch (TosException e) {
Log.e("TosException","uploadFile failed");