ConvertTask.java 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. package epson.print.gdconv;
  2. import android.content.Context;
  3. import android.os.AsyncTask;
  4. import androidx.annotation.NonNull;
  5. import androidx.annotation.Nullable;
  6. import com.epson.iprint.storage.Network;
  7. import com.epson.iprint.storage.gdrivev3.DriveWriter;
  8. import java.io.File;
  9. import java.lang.ref.WeakReference;
  10. import epson.common.ExternalFileUtils;
  11. import epson.common.Utils;
  12. import epson.print.CommonDefine;
  13. public class ConvertTask extends AsyncTask<String, ConvertStatus, Integer> {
  14. private static final String FOLDER_FOR_CONVERT = "Epson iPrint";
  15. private final WeakReference<Context> mContextReference;
  16. private File mOutFile;
  17. private final WeakReference<TaskCallback> mTaskCallbackWeakReference;
  18. public interface TaskCallback {
  19. void messageChange(ConvertStatus convertStatus);
  20. void notifyTaskEnd(int i);
  21. }
  22. @Nullable
  23. public synchronized File getOutFile() {
  24. return mOutFile;
  25. }
  26. public ConvertTask(@NonNull Context context, TaskCallback taskCallback) {
  27. mContextReference = new WeakReference<>(context.getApplicationContext());
  28. mTaskCallbackWeakReference = new WeakReference<>(taskCallback);
  29. }
  30. protected Integer doInBackground(String[] strArr) {
  31. if (strArr == null || strArr[0] == null) {
  32. return 101;
  33. }
  34. String str = strArr[0];
  35. Context context = (Context) mContextReference.get();
  36. if (context == null) {
  37. return 103;
  38. }
  39. new Network();
  40. if (!Utils.isConnecting(context)) {
  41. return 102;
  42. }
  43. try {
  44. DriveWriter createDriveWriter = DriveWriter.createDriveWriter(context);
  45. String mimeType = Utils.getMimeType(str);
  46. if (mimeType == null) {
  47. return 101;
  48. }
  49. publishProgress(new ConvertStatus[]{ConvertStatus.UPLOAD});
  50. File createOutFilename = createOutFilename(context, str);
  51. synchronized (this) {
  52. mOutFile = createOutFilename;
  53. }
  54. createDriveWriter.convertFileToPdf(str, mimeType, createDriveWriter.findOrCreateFolder("Epson iPrint"), createOutFilename, new DriveWriter.ConvertStatusNotifier() {
  55. public void changeStatus(ConvertStatus convertStatus) {
  56. publishProgress(new ConvertStatus[]{convertStatus});
  57. }
  58. });
  59. return 100;
  60. } catch (Exception unused) {
  61. return 101;
  62. }
  63. }
  64. @NonNull
  65. private File createOutFilename(@NonNull Context context, @NonNull String str) {
  66. String name = new File(str).getName();
  67. File tempCacheDir = ExternalFileUtils.getInstance(context).getTempCacheDir(ExternalFileUtils.TempCacheDirectory.GOOGLE_DRIVE_CONVERT);
  68. return new File(tempCacheDir, name + CommonDefine.FileType_PDF);
  69. }
  70. protected void onProgressUpdate(ConvertStatus... convertStatusArr) {
  71. TaskCallback taskCallback = (TaskCallback) mTaskCallbackWeakReference.get();
  72. if (taskCallback != null && convertStatusArr != null && convertStatusArr[0] != null) {
  73. taskCallback.messageChange(convertStatusArr[0]);
  74. }
  75. }
  76. private void doNotifyTaskEnd(int i) {
  77. TaskCallback taskCallback = (TaskCallback) mTaskCallbackWeakReference.get();
  78. if (taskCallback != null) {
  79. taskCallback.notifyTaskEnd(i);
  80. }
  81. }
  82. protected void onPostExecute(Integer num) {
  83. doNotifyTaskEnd(num != null ? num.intValue() : 101);
  84. }
  85. protected void onCancelled() {
  86. doNotifyTaskEnd(103);
  87. }
  88. }