AndroidデバイスからGoogleドライブに画像をアップロードすることになっている次のコードがあります。
private void saveFileToDrive() {
progressDialog = ProgressDialog.show(this, "", "Loading...");
Thread t = new Thread(new Runnable() {
@Override
public void run() {
try {
// File's binary content
java.io.File fileContent = new java.io.File(fileUri.getPath());
FileContent mediaContent = new FileContent("image/jpeg", fileContent);
// File's metadata.
File body = new File();
body.setTitle(fileContent.getName());
body.setMimeType("image/jpeg");
File file = service.files().insert(body, mediaContent).execute();
if (file != null) {
showToast("Photo uploaded: " + file.getTitle());
progressDialog.dismiss();
//startCameraIntent();
}
} catch (UserRecoverableAuthIOException e) {
startActivityForResult(e.getIntent(), REQUEST_AUTHORIZATION);
} catch (IOException e) {
e.printStackTrace();
}
}
});
t.start();
}
問題は、アップロードに時間がかかりすぎることです。画像が大きすぎないので奇妙です
オリジナルの Drive アプリ経由でアップロードした方が、処理が速くなると思います。
1) 画質をあまり損なわずに、アップロードを高速化する方法はありますか?
2) コールバックを使用することを考えましたが、新しいスレッドとコールバックのベスト プラクティスは何ですか?
3) アップロードの現在の数値アップロードの進行状況 (これまでに X% 完了) を表示するにはどうすればよいですか?
すぐに使用できる署名\パターンはありますか?