FileConvertTask.java 3.0 KB

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