FileConvertTask.java 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package com.epson.memcardacc;
  2. import android.os.AsyncTask;
  3. import android.support.annotation.NonNull;
  4. import android.support.annotation.Nullable;
  5. import epson.common.ExternalFileUtils;
  6. import epson.common.ImageUtil;
  7. import epson.print.IprintApplication;
  8. import java.io.File;
  9. import java.util.ArrayList;
  10. import java.util.Iterator;
  11. class FileConvertTask extends AsyncTask<Void, Void, ArrayList<String>> {
  12. private static final int FILE_SIZE_LIMIT = 10485760;
  13. private final ConvertEndListener mConvertEndListener;
  14. private ErrorType mErrorType = ErrorType.NO_ERROR;
  15. private final ArrayList<String> mOrgFileList;
  16. interface ConvertEndListener {
  17. void onConvertEnd(@NonNull ErrorType errorType, @Nullable ArrayList<String> arrayList);
  18. }
  19. enum ErrorType {
  20. NO_ERROR,
  21. FILE_SIZE_ERROR,
  22. CONVERT_ERROR
  23. }
  24. FileConvertTask(@NonNull ArrayList<String> arrayList, @NonNull ConvertEndListener convertEndListener) {
  25. this.mOrgFileList = arrayList;
  26. this.mConvertEndListener = convertEndListener;
  27. }
  28. static boolean checkSize(ArrayList<String> arrayList) {
  29. long j;
  30. try {
  31. j = MemcardUtil.getFileLength(arrayList.get(0));
  32. } catch (Exception unused) {
  33. j = 0;
  34. }
  35. if (j > 10485760) {
  36. return false;
  37. }
  38. return true;
  39. }
  40. @NonNull
  41. static File initTempDirectory() {
  42. return ExternalFileUtils.getInstance(IprintApplication.getInstance()).initTempCacheDirectory(ExternalFileUtils.TempCacheDirectory.MEMORY_CARD_ACCESS);
  43. }
  44. protected void onPostExecute(ArrayList<String> arrayList) {
  45. ConvertEndListener convertEndListener = this.mConvertEndListener;
  46. if (convertEndListener != null) {
  47. convertEndListener.onConvertEnd(this.mErrorType, arrayList);
  48. }
  49. }
  50. protected ArrayList<String> doInBackground(Void... voidArr) {
  51. ArrayList<String> convertImageFile = convertImageFile(this.mOrgFileList);
  52. if (convertImageFile == null) {
  53. return null;
  54. }
  55. if (checkSize(convertImageFile)) {
  56. return convertImageFile;
  57. }
  58. this.mErrorType = ErrorType.FILE_SIZE_ERROR;
  59. return null;
  60. }
  61. @Nullable
  62. private ArrayList<String> convertImageFile(@NonNull ArrayList<String> arrayList) {
  63. ArrayList<String> arrayList2 = new ArrayList<>();
  64. File initTempDirectory = initTempDirectory();
  65. Iterator<String> it = arrayList.iterator();
  66. while (it.hasNext()) {
  67. String next = it.next();
  68. String notDuplicateFilename = ExternalFileUtils.getNotDuplicateFilename(next, initTempDirectory.getPath(), 1);
  69. if (notDuplicateFilename == null) {
  70. this.mErrorType = ErrorType.CONVERT_ERROR;
  71. return null;
  72. } else if (!ImageUtil.convertHEIFtoJPEG(next, notDuplicateFilename)) {
  73. this.mErrorType = ErrorType.CONVERT_ERROR;
  74. return null;
  75. } else {
  76. arrayList2.add(notDuplicateFilename);
  77. }
  78. }
  79. return arrayList2;
  80. }
  81. }