我想按使用Google Drive API上传文件的百分比显示进度。
我的想法之前已经成功上传了文件,但是看不到上传进度。
我已经看到并添加了此FileUploadProgressListener,但mediaHttpUploader.getProgress()
仅显示0.0(进度开始)和1.0(进度完成时)。我无法及时获得进度的百分比。
如何使其运作?
这是我的上传代码:
public void UploadFile(final DFile uploadFile) {
if (!isLoggedIn()) {
OnUploadGoogleChecked(FALSE, "Not logged in");
return;
}
AsyncTask<Void, Long, String> task = new AsyncTask<Void, Long, String>() {
java.io.File fileContent;
FileContent mediaContent;
com.google.api.services.drive.model.File body;
com.google.api.services.drive.model.File file;
private ProgressDialog mDialog;
long mFileLen;
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
mDialog = new ProgressDialog(act);
mDialog.setMax(100);
mDialog.setMessage("Uploading ");
mDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
mDialog.setProgress(0);
mDialog.setButton("Cancel", new OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
}
});
mDialog.show();
}
class FileUploadProgressListener implements MediaHttpUploaderProgressListener {
@Override
public void progressChanged(MediaHttpUploader uploader) throws IOException {
Log.d("Dolphin got percent", String.valueOf(uploader.getProgress()));
switch (uploader.getUploadState()) {
case INITIATION_STARTED:
System.out.println("Initiation Started");
break;
case INITIATION_COMPLETE:
System.out.println("Initiation Completed");
break;
case MEDIA_IN_PROGRESS:
System.out.println("Upload in progress");
System.out.println("Upload percentage: " + uploader.getProgress());
break;
case MEDIA_COMPLETE:
System.out.println("Upload Completed!");
break;
case NOT_STARTED:
System.out.println("Upload Not Started!");
break;
}
}
}
@Override
protected String doInBackground(Void... arg0) {
try {
java.io.File UPLOAD_FILE = new java.io.File(uploadFile.getNameAndDir());
// File's metadata.
fileContent = new java.io.File(uploadFile.getNameAndDir());
mFileLen = fileContent.length();
InputStreamContent mediaContent2 = new InputStreamContent("image/jpeg", new BufferedInputStream(new FileInputStream(UPLOAD_FILE)));
mediaContent2.setLength(UPLOAD_FILE.length());
body = new com.google.api.services.drive.model.File();
body.setTitle(fileContent.getName());
body.setMimeType("image/jpeg");
String parentId = null;
body.setParents(Arrays.asList(new ParentReference().setId(uploadFile.getFileHostFolderId())));
Drive.Files.Insert mInsert = service.files().insert(body, mediaContent2);
MediaHttpUploader uploader = mInsert.getMediaHttpUploader();
uploader.setDirectUploadEnabled(true);
uploader.setProgressListener(new FileUploadProgressListener());
file = mInsert.execute();
if (file != null) {
}
} catch (UserRecoverableAuthIOException e) {
Log.d("Dolphin got error", "not login " + e);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
protected void onPostExecute(String result) {
mDialog.dismiss();
OnUploadGoogleChecked(TRUE, "Upload complete");
};
};
task.execute();
}
要获得进度,您必须使用uploader.setDirectUploadEnabled(false);
(而不是true
)和uploader.setChunkSize(MediaHttpUploader.MINIMUM_CHUNK_SIZE);
或必须是的倍数的任何值MediaHttpUploader.MINIMUM_CHUNK_SIZE
,否则将导致错误。
问题内容: 我做了一个自定义的Hibernate Event监听器,扩展了org.hibernate.event.PreInsertEventListener。自定义侦听器会覆盖onPreInsert方法并设置“联系人”实体的字段,然后再使用DAO将其保存在数据库中。 问题是,在侦听器为其提供值之前该字段为null,并且默认的hibernate事件侦听器在我的自定义侦听器之前自动触发。当他们检查d
我不熟悉google drive api..我正在从我的服务器上传文件到google drive。 在我的 gmail 帐户中,我有 > 创建服务帐户,下载密钥并上传到服务器。 提供对驱动Api和SDK Api的访问 添加了一个与google通信的控制器: e/Client/contrib/Google_DriveService.php'); 现在输出如下: …………… 现在的主要问题是,通过这个
我尝试的是下面的,但不是工作 从谷歌REST链接,它显示的例子如下,如何运行这个?
我正在尝试Google Drive API V3。 拥有一些共享驱动器文件夹的访问权限,并且是所有这些资源的管理员,我想获取一个通过查询筛选的特定文件夹。 出于任何原因,当我尝试按照留档建议插入查询时,它会响应一个错误,这个错误不是很描述性,也不利于调试: 此外,如果我不带条件地执行查询,则响应会成功,并显示整个共享驱动器: 有什么帮助吗? 谢谢
问题内容: 我有一个带有许多不同复选框和文本字段的JPanel,我有一个已禁用的按钮,并且在设置特定配置时需要将其启用。我需要的是整个JPanel上的侦听器,以在发生任何更改时查找事件。我相信我需要一个动作监听器,但找不到任何东西可以将动作监听器与JPanel桥接 我认为我可以将代码复制和粘贴很多次到面板中的每个侦听器中,但这对我来说似乎是不好的编码习惯。 问题答案: 首先在他的@Sage提意见一