Upload recuperável usando a Drive API para Android
Quero fazer upload de arquivos grandes (> 10Mb) para o Google Drive usando a API da unidade. Está funcionando bem com arquivos menores (quando há boa wifi), usando o upload direto:
Drive.Files.Insert insert = driveService.files().insert(fileMetadata, mediaContent);
MediaHttpUploader uploader = insert.getMediaHttpUploader();
uploader.setChunkSize(UPLOAD_CHUNK_SIZE);
uploader.setDirectUploadEnabled(true);
insert.execute();
Agora, suponha que estamos enviando um arquivo maior. Queremos acompanhar a conexão, por isso, usamos o upload recuperável, fornecido pelo método MediaHttpUploader ...
uploader.setDirectUploadEnabled(false);
uploader.setProgressListener(new MediaHttpUploaderProgressListener() {
@Override
public void progressChanged(MediaHttpUploader mediaHttpUploader) throws IOException {
switch (mediaHttpUploader.getUploadState()) {
case INITIATION_STARTED: break;
case INITIATION_COMPLETE: break;
case MEDIA_IN_PROGRESS: break;
case MEDIA_COMPLETE: break;
}
}
});
Está bem. Mas não há estado paraMEDIA_FAILED, estou correcto? E o que posso fazer quando o upload não alcançaMEDIA_COMPLETE?
Além disso, não encontrei nenhum método para retomar o upload. Então, mesmo que um upload de 100Mb esteja em 90% e falhe, tudo que eu posso fazer é começar tudo de novo ??
PS: este problema foi relatado antes sem sucessoVerificar o progresso de upload e download (Google Drive API para Android ou Java) O upload do Google Resumable do Android Drive falha com muita frequência