I have followed the Drive API guide (https://developer.android.com/google/play-services/drive.html) and my app now uploads photos smoothly, but I am now trying to upload vid
So this my complete code how I achieved uploading a video. Steps:
public class UploadVideo extends AppCompatActivity {
DriveClient mDriveClient;
DriveResourceClient mDriveResourceClient;
GoogleSignInAccount googleSignInAccount;
String TAG = "Drive";
private final int REQUEST_CODE_CREATOR = 2013;
Task createContentsTask;
String uri;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_upload_video);
//Fetching uri or path from previous activity.
uri = getIntent().getStringExtra("uriVideo");
//Get previously signed in account.
googleSignInAccount = GoogleSignIn.getLastSignedInAccount(this);
if (googleSignInAccount != null) {
mDriveClient = Drive.getDriveClient(getApplicationContext(), googleSignInAccount);
mDriveResourceClient =
Drive.getDriveResourceClient(getApplicationContext(), googleSignInAccount);
}
else Toast.makeText(this, "Login again and retry", Toast.LENGTH_SHORT).show();
createContentsTask = mDriveResourceClient.createContents();
findViewById(R.id.uploadVideo).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
createFile();
}
});
}
private void createFile() {
// [START create_file]
final Task rootFolderTask = mDriveResourceClient.getRootFolder();
final Task createContentsTask = mDriveResourceClient.createContents();
Tasks.whenAll(rootFolderTask, createContentsTask)
.continueWithTask(new Continuation>() {
@Override
public Task then(@NonNull Task task) throws Exception {
DriveFolder parent = rootFolderTask.getResult();
DriveContents contents = createContentsTask.getResult();
File file = new File(uri);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
FileInputStream fis = new FileInputStream(file);
for (int readNum; (readNum = fis.read(buf)) != -1;) {
baos.write(buf, 0, readNum);
}
OutputStream outputStream = contents.getOutputStream();
outputStream.write(baos.toByteArray());
MetadataChangeSet changeSet = new MetadataChangeSet.Builder()
.setTitle("MyVideo.mp4") // Provide you video name here
.setMimeType("video/mp4") // Provide you video type here
.build();
return mDriveResourceClient.createFile(parent, changeSet, contents);
}
})
.addOnSuccessListener(this,
new OnSuccessListener() {
@Override
public void onSuccess(DriveFile driveFile) {
Toast.makeText(Upload.this, "Upload Started", Toast.LENGTH_SHORT).show();
finish();
}
})
.addOnFailureListener(this, new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.e(TAG, "Unable to create file", e);
finish();
}
});
// [END create_file]
}
}