GetPrinterReplyData.java 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601
  1. package epson.maintain.activity;
  2. import android.app.Dialog;
  3. import android.arch.lifecycle.Observer;
  4. import android.arch.lifecycle.ViewModelProviders;
  5. import android.content.Context;
  6. import android.content.Intent;
  7. import android.content.res.Configuration;
  8. import android.os.Bundle;
  9. import android.os.Handler;
  10. import android.os.Message;
  11. import android.view.View;
  12. import android.view.ViewGroup;
  13. import android.widget.Button;
  14. import androidx.appcompat.app.AppCompatActivity;
  15. import androidx.fragment.app.FragmentActivity;
  16. import com.epson.iprint.shared.SharedParamStatus;
  17. import com.epson.mobilephone.common.escpr.MediaInfo;
  18. import com.epson.mobilephone.common.maintain2.MaintainPrinter2;
  19. import com.epson.mobilephone.common.maintain2.MaintainPrinterInfo2;
  20. import epson.common.Constants;
  21. import epson.common.DialogProgress;
  22. import epson.common.DialogProgressViewModel;
  23. import epson.common.Utils;
  24. import epson.print.R;
  25. import epson.print.CommonDefine;
  26. import epson.print.MyPrinter;
  27. import epson.print.Util.EPLog;
  28. import java.util.ArrayList;
  29. import java.util.Deque;
  30. public class GetPrinterReplyData extends AppCompatActivity implements MediaInfo, DialogProgress.DialogButtonClick {
  31. private static final int CLEANING_ERROR = 10;
  32. private static final int DELAY_TIME_MAINTAIN = 10;
  33. private static final String DIALOG_PROGRESS = "dialog_progress";
  34. private static final int END_REPLYDATA = 99;
  35. private static final int EPS_COMM_BID = 2;
  36. private static final int EPS_LANG_ESCPR = 1;
  37. private static final int EPS_MNT_CLEANING = 2;
  38. private static final int EPS_MNT_NOZZLE = 3;
  39. private static final int EPS_PRNERR_CEMPTY = 103;
  40. private static final int EPS_PRNERR_CFAIL = 104;
  41. private static final int EPS_PRNERR_DISABEL_CLEANING = 108;
  42. private static final int EPS_PRNERR_INKOUT = 6;
  43. private static final int GET_PRINTER_NAME = 8;
  44. private static final int HANDLE_ERROR = 4;
  45. public static final int ITEM_HEIGHT = 40;
  46. private static final int MAINTAIN_OK = 1;
  47. private static final int MAINTAIN_START = 0;
  48. private static final int NO_PRINTER_NAME = 9;
  49. public static final String PREFS_NAME = "PrintSetting";
  50. private static final int PROBE_ERROR = 7;
  51. private static final String PROBE_RESULT = "PROBE_ERROR";
  52. private static final int START_LOADCONFIG = 6;
  53. private static final String TAG = "MAINTAIN";
  54. private static final int UPDATE_INK = 3;
  55. private static final int UPDATE_SELECTED_PRINTER = 5;
  56. private static final int UPDATE_STT = 2;
  57. public static MaintainPrinter2 mPrinter;
  58. private Dialog customPro;
  59. private SharedParamStatus extParam;
  60. boolean isGotError = false;
  61. boolean isResearchScanner = false;
  62. private Thread mBackGround;
  63. private Thread mDoMaintainThread;
  64. boolean mHavePrinter = false;
  65. volatile boolean mIsCancelProbe = false;
  66. boolean mIsStillUpdate = true;
  67. boolean mIsStop = false;
  68. private Thread mLoadConfigThread;
  69. private DialogProgressViewModel mModelDialog;
  70. private String mPrinterId;
  71. private String mPrinterIp;
  72. private int mPrinterLocation;
  73. private String mPrinterName;
  74. private int[] mPrinterStatus;
  75. boolean mStartSearch = false;
  76. Handler mUiHandler = new Handler() {
  77. public void handleMessage(Message message) {
  78. int i = message.what;
  79. if (i != 99) {
  80. switch (i) {
  81. case 0:
  82. GetPrinterReplyData.this.showProDia();
  83. return;
  84. case 1:
  85. EPLog.m313i("Maintain", "********Maintain finish********");
  86. GetPrinterReplyData.this.interrupMaintainThread();
  87. return;
  88. case 2:
  89. GetPrinterReplyData.this.updateStatus(message.getData().getInt("GET_STT_RESULT"));
  90. return;
  91. case 3:
  92. GetPrinterReplyData.this.updateInkInfo(message.getData().getInt("GET_INK_RESULT"));
  93. return;
  94. case 4:
  95. GetPrinterReplyData.this.cancelLoadConPro();
  96. GetPrinterReplyData.this.interrupMaintainThread();
  97. return;
  98. case 5:
  99. GetPrinterReplyData.this.updateSelectedPrinter();
  100. return;
  101. case 6:
  102. GetPrinterReplyData.this.showLoadConPro();
  103. return;
  104. case 7:
  105. GetPrinterReplyData.this.setResult(1);
  106. GetPrinterReplyData.this.finish();
  107. return;
  108. case 9:
  109. GetPrinterReplyData.this.cancelLoadConPro();
  110. GetPrinterReplyData.this.endLoadConThread();
  111. GetPrinterReplyData.this.setResult(1);
  112. GetPrinterReplyData.this.finish();
  113. return;
  114. case 10:
  115. GetPrinterReplyData.this.setupErrorMessage(10);
  116. GetPrinterReplyData.this.interrupMaintainThread();
  117. return;
  118. default:
  119. return;
  120. }
  121. } else {
  122. GetPrinterReplyData.this.endBackGroundThread();
  123. GetPrinterReplyData.this.cancelLoadConPro();
  124. GetPrinterReplyData.this.endLoadConThread();
  125. Intent intent = new Intent();
  126. intent.putExtra("extStatus", GetPrinterReplyData.this.extParam);
  127. GetPrinterReplyData.this.setResult(message.getData().getInt("END_RELPY_RESULT"), intent);
  128. GetPrinterReplyData.this.finish();
  129. }
  130. }
  131. };
  132. private String inkCodeToString(int i) {
  133. switch (i) {
  134. case 0:
  135. return "Black";
  136. case 1:
  137. return "Cyan";
  138. case 2:
  139. return "Magenta";
  140. case 3:
  141. return "Yellow";
  142. case 4:
  143. return "Light Cyan";
  144. case 5:
  145. return "Light Magenta";
  146. case 6:
  147. return "Light Yellow";
  148. case 7:
  149. return "Dark Yellow";
  150. case 8:
  151. return "Light Black";
  152. case 9:
  153. return "Red";
  154. case 10:
  155. return "Blue";
  156. case 12:
  157. return "Light Gray";
  158. case 14:
  159. return "Gloss Optimizer";
  160. case 17:
  161. return "Black";
  162. case 18:
  163. return "Orange";
  164. case 19:
  165. return "Green";
  166. case 20:
  167. return "White";
  168. case 21:
  169. return "Clean";
  170. default:
  171. return "unKnown";
  172. }
  173. }
  174. public void onNegativeClick(String str) {
  175. }
  176. public void onNeutralClick(String str) {
  177. }
  178. public void onPositiveClick(String str) {
  179. }
  180. protected void onCreate(Bundle bundle) {
  181. super.onCreate(bundle);
  182. mModelDialog = (DialogProgressViewModel) ViewModelProviders.m2of((FragmentActivity) this).get(DialogProgressViewModel.class);
  183. mModelDialog.getDialogJob().observe(this, new Observer() {
  184. public final void onChanged(Object obj) {
  185. GetPrinterReplyData.lambda$onCreate$0(GetPrinterReplyData.this, (Deque) obj);
  186. }
  187. });
  188. extParam = (SharedParamStatus) getIntent().getSerializableExtra("extStatus");
  189. if (this.extParam == null) {
  190. extParam = new SharedParamStatus();
  191. }
  192. if (mPrinter == null) {
  193. mPrinter = MaintainPrinter2.getInstance();
  194. }
  195. EPLog.m313i(TAG, "onCreate");
  196. lockRotation();
  197. mPrinter.doInitDriver(this, 2);
  198. startLoadConThread();
  199. }
  200. public static /* synthetic */ void lambda$onCreate$0(GetPrinterReplyData getPrinterReplyData, Deque deque) {
  201. String[] checkQueue = getPrinterReplyData.mModelDialog.checkQueue();
  202. if (checkQueue != null) {
  203. String str = checkQueue[0];
  204. String str2 = checkQueue[1];
  205. if (str2.equals("do_show")) {
  206. getPrinterReplyData.showDialog(str);
  207. }
  208. if (str2.equals("do_dismiss")) {
  209. getPrinterReplyData.dismissDialog(str);
  210. }
  211. }
  212. }
  213. private void lockRotation() {
  214. switch (getResources().getConfiguration().orientation) {
  215. case 1:
  216. setRequestedOrientation(1);
  217. return;
  218. case 2:
  219. setRequestedOrientation(0);
  220. return;
  221. default:
  222. return;
  223. }
  224. }
  225. public void startLoadConThread() {
  226. mIsCancelProbe = false;
  227. mLoadConfigThread = new Thread(new Runnable() {
  228. public void run() {
  229. EPLog.m313i(GetPrinterReplyData.TAG, "new load Config thread");
  230. GetPrinterReplyData.mUiHandler.sendEmptyMessage(6);
  231. try {
  232. Thread.sleep(500);
  233. } catch (InterruptedException e) {
  234. e.printStackTrace();
  235. }
  236. GetPrinterReplyData.this.loadConfig();
  237. if (GetPrinterReplyData.mPrinterId == null || GetPrinterReplyData.mPrinterName == null) {
  238. GetPrinterReplyData getPrinterReplyData = GetPrinterReplyData.this;
  239. getPrinterReplyData.mHavePrinter = false;
  240. getPrinterReplyData.mUiHandler.sendEmptyMessage(9);
  241. EPLog.m313i(GetPrinterReplyData.TAG, "not select printer");
  242. return;
  243. }
  244. GetPrinterReplyData.mUiHandler.sendEmptyMessage(8);
  245. EPLog.m313i("startLoadConThread", "mPrinter.doProbePrinter");
  246. if (!GetPrinterReplyData.mIsCancelProbe) {
  247. int doProbePrinter = GetPrinterReplyData.mPrinter.doProbePrinter(60, GetPrinterReplyData.mPrinterId, GetPrinterReplyData.mPrinterIp, GetPrinterReplyData.mPrinterLocation);
  248. while (!GetPrinterReplyData.mIsCancelProbe && doProbePrinter != 0) {
  249. try {
  250. Message message = new Message();
  251. message.what = 7;
  252. Bundle bundle = new Bundle();
  253. bundle.putInt(GetPrinterReplyData.PROBE_RESULT, doProbePrinter);
  254. message.setData(bundle);
  255. GetPrinterReplyData.mUiHandler.sendMessage(message);
  256. Thread.sleep(4000);
  257. if (!GetPrinterReplyData.mIsCancelProbe) {
  258. doProbePrinter = GetPrinterReplyData.mPrinter.doProbePrinter(60, GetPrinterReplyData.mPrinterId, GetPrinterReplyData.mPrinterIp, GetPrinterReplyData.mPrinterLocation);
  259. }
  260. } catch (InterruptedException e2) {
  261. e2.printStackTrace();
  262. }
  263. }
  264. EPLog.m313i(GetPrinterReplyData.TAG, "Probe Printer result: " + doProbePrinter);
  265. if (doProbePrinter == 0) {
  266. GetPrinterReplyData.mPrinter.setMSearchPos(0);
  267. GetPrinterReplyData getPrinterReplyData2 = GetPrinterReplyData.this;
  268. getPrinterReplyData2.mHavePrinter = true;
  269. getPrinterReplyData2.mUiHandler.sendEmptyMessage(5);
  270. }
  271. }
  272. }
  273. });
  274. mLoadConfigThread.start();
  275. }
  276. private void setupErrorMessage(int i) {
  277. Utils.makeMessageBox(this, getString(R.string.EPS_PRNERR_DISABEL_CLEANING_TITLE), getString(R.string.EPS_PRNERR_DISABEL_CLEANING_MSG), getString(R.string.str_ok)).show();
  278. }
  279. public void showProDia() {
  280. if (this.customPro == null) {
  281. customPro = new CustomProDialog(this, R.style.AppTheme_Translucent, R.layout.maintain_executing_dialog);
  282. }
  283. customPro.show();
  284. }
  285. public void cancelProDia() {
  286. Dialog dialog = customPro;
  287. if (dialog != null && dialog.isShowing()) {
  288. customPro.cancel();
  289. customPro = null;
  290. }
  291. }
  292. public void showLoadConPro() {
  293. mModelDialog.doShow(DIALOG_PROGRESS);
  294. }
  295. private void showDialog(String str) {
  296. DialogProgress dialogProgress;
  297. if (((str.hashCode() == -21731516 && str.equals(DIALOG_PROGRESS)) ? (char) 0 : 65535) != 0) {
  298. dialogProgress = null;
  299. } else {
  300. dialogProgress = DialogProgress.newInstance(str, 0, getString(R.string.str_wait));
  301. }
  302. if (dialogProgress != null) {
  303. dialogProgress.setCancelable(true);
  304. dialogProgress.show(getSupportFragmentManager(), str);
  305. }
  306. }
  307. private void dismissDialog(String str) {
  308. DialogFragment dialogFragment = (DialogFragment) getSupportFragmentManager().findFragmentByTag(str);
  309. if (dialogFragment != null) {
  310. dialogFragment.dismiss();
  311. }
  312. }
  313. public void cancelLoadConPro() {
  314. mModelDialog.doDismiss(DIALOG_PROGRESS);
  315. }
  316. public void endLoadConThread() {
  317. mIsCancelProbe = true;
  318. Thread thread = mLoadConfigThread;
  319. if (thread != null && thread.isAlive()) {
  320. mLoadConfigThread.interrupt();
  321. try {
  322. mLoadConfigThread.join();
  323. } catch (InterruptedException e) {
  324. e.printStackTrace();
  325. }
  326. mLoadConfigThread = null;
  327. }
  328. }
  329. public void startBackgroundThread() {
  330. mIsStillUpdate = true;
  331. mBackGround = new Thread(new Runnable() {
  332. public void run() {
  333. int doGetStatus = GetPrinterReplyData.mPrinter.doGetStatus();
  334. Message message = new Message();
  335. message.what = 2;
  336. Bundle bundle = new Bundle();
  337. bundle.putInt("GET_STT_RESULT", doGetStatus);
  338. message.setData(bundle);
  339. GetPrinterReplyData.mUiHandler.sendMessage(message);
  340. int doGetInkInfo = GetPrinterReplyData.mPrinter.doGetInkInfo();
  341. Message message2 = new Message();
  342. message2.what = 3;
  343. Bundle bundle2 = new Bundle();
  344. bundle2.putInt("GET_INK_RESULT", doGetInkInfo);
  345. message2.setData(bundle2);
  346. GetPrinterReplyData.mUiHandler.sendMessage(message2);
  347. }
  348. });
  349. mBackGround.setPriority(5);
  350. mBackGround.start();
  351. }
  352. public void endBackGroundThread() {
  353. mIsStillUpdate = false;
  354. Thread thread = mBackGround;
  355. if (thread != null && thread.isAlive()) {
  356. mBackGround.interrupt();
  357. try {
  358. mBackGround.join();
  359. } catch (InterruptedException unused) {
  360. }
  361. mBackGround = null;
  362. }
  363. }
  364. public void onConfigurationChanged(Configuration configuration) {
  365. super.onConfigurationChanged(configuration);
  366. int doGetStatus = mPrinter.doGetStatus();
  367. Message message = new Message();
  368. message.what = 2;
  369. Bundle bundle = new Bundle();
  370. bundle.putInt("GET_STT_RESULT", doGetStatus);
  371. message.setData(bundle);
  372. mUiHandler.sendMessage(message);
  373. }
  374. protected void onActivityResult(int i, int i2, Intent intent) {
  375. super.onActivityResult(i, i2, intent);
  376. if (i == 1) {
  377. if (i2 == 1) {
  378. mPrinter.setMSearchPos(intent.getIntExtra(Constants.PRINTER_POS, 0));
  379. mPrinterName = intent.getStringExtra(Constants.PRINTER_NAME);
  380. mPrinterId = intent.getStringExtra(Constants.PRINTER_ID);
  381. mPrinterIp = intent.getStringExtra(Constants.PRINTER_IP);
  382. Utils.savePref(getApplicationContext(), "PrintSetting", CommonDefine.RE_SEARCH, true);
  383. mUiHandler.sendEmptyMessage(8);
  384. }
  385. saveSelectedPrinter();
  386. }
  387. }
  388. public void updateSelectedPrinter() {
  389. cancelLoadConPro();
  390. endLoadConThread();
  391. int doSetPrinter = mPrinter.doSetPrinter();
  392. if (doSetPrinter == 0) {
  393. startBackgroundThread();
  394. mIsStillUpdate = true;
  395. return;
  396. }
  397. mIsStillUpdate = false;
  398. handlerError(doSetPrinter, false);
  399. }
  400. public void updateStatus(int i) {
  401. if (i == 0) {
  402. if (isPrinterReady() == 1) {
  403. int doGetInkInfo = mPrinter.doGetInkInfo();
  404. Message message = new Message();
  405. message.what = 3;
  406. Bundle bundle = new Bundle();
  407. bundle.putInt("GET_INK_RESULT", doGetInkInfo);
  408. message.setData(bundle);
  409. mUiHandler.sendMessage(message);
  410. }
  411. int[] iArr = mPrinterStatus;
  412. if (iArr[0] != 4) {
  413. return;
  414. }
  415. if (iArr[1] == 6 || iArr[1] == 103 || iArr[1] == 104) {
  416. int doGetInkInfo2 = mPrinter.doGetInkInfo();
  417. Message message2 = new Message();
  418. message2.what = 3;
  419. Bundle bundle2 = new Bundle();
  420. bundle2.putInt("GET_INK_RESULT", doGetInkInfo2);
  421. message2.setData(bundle2);
  422. mUiHandler.sendMessage(message2);
  423. return;
  424. }
  425. return;
  426. }
  427. handlerError(i, false);
  428. }
  429. public void updateInkInfo(int i) {
  430. int i2;
  431. MaintainPrinterInfo2 mPrinterInfor = mPrinter.getMPrinterInfor();
  432. if (i == 0) {
  433. int inkNum = mPrinterInfor.getInkNum();
  434. ArrayList arrayList = new ArrayList();
  435. ArrayList arrayList2 = new ArrayList();
  436. ArrayList arrayList3 = new ArrayList();
  437. i2 = -1;
  438. extParam.setPrinter_name(mPrinterName);
  439. extParam.setPrinter_status(mPrinterStatus[0]);
  440. for (int i3 = 0; i3 < inkNum; i3++) {
  441. arrayList.add(inkCodeToString(mPrinterInfor.getInkCode(i3)));
  442. arrayList2.add(Integer.valueOf(mPrinterInfor.getInkRemainingAmount(i3)));
  443. arrayList3.add(Integer.valueOf(mPrinterInfor.getInkStatus(i3)));
  444. }
  445. extParam.setArrayOutInkName(arrayList);
  446. extParam.setArrayOutInkRemain(arrayList2);
  447. extParam.setEscprlibInkStatus(arrayList3);
  448. } else {
  449. i2 = 1;
  450. }
  451. Message message = new Message();
  452. message.what = 99;
  453. Bundle bundle = new Bundle();
  454. bundle.putInt("END_RELPY_RESULT", i2);
  455. message.setData(bundle);
  456. mUiHandler.sendMessage(message);
  457. }
  458. public void handlerError(int i, boolean z) {
  459. cancelLoadConPro();
  460. }
  461. public int isPrinterReady() {
  462. mPrinterStatus = mPrinter.getMPrinterInfor().getMStatus();
  463. int[] iArr = mPrinterStatus;
  464. if (iArr[0] == 2 || iArr[0] == 1 || iArr[0] == 3) {
  465. return 0;
  466. }
  467. if (iArr[0] == 4) {
  468. return -1;
  469. }
  470. return 1;
  471. }
  472. public void interrupMaintainThread() {
  473. Thread thread = mDoMaintainThread;
  474. if (thread != null && thread.isAlive()) {
  475. mDoMaintainThread.interrupt();
  476. mDoMaintainThread = null;
  477. }
  478. }
  479. protected void onDestroy() {
  480. stopAllThread();
  481. super.onDestroy();
  482. EPLog.m313i(TAG, "onDestroy");
  483. }
  484. protected void onPause() {
  485. super.onPause();
  486. }
  487. protected void OLDonPause() {
  488. mIsStop = true;
  489. mIsCancelProbe = true;
  490. cancelLoadConPro();
  491. mPrinter.doCancelFindPrinter();
  492. endLoadConThread();
  493. interrupMaintainThread();
  494. endBackGroundThread();
  495. super.onPause();
  496. }
  497. protected void onStop() {
  498. super.onStop();
  499. }
  500. private void loadConfig() {
  501. MyPrinter curPrinter = MyPrinter.getCurPrinter(this);
  502. mPrinterId = curPrinter.getPrinterId();
  503. mPrinterName = curPrinter.getName();
  504. mPrinterIp = curPrinter.getIp();
  505. mPrinterLocation = curPrinter.getLocation();
  506. }
  507. private void saveSelectedPrinter() {
  508. Utils.savePref(getApplicationContext(), "PrintSetting", Constants.PRINTER_NAME, mPrinterName);
  509. Utils.savePref(getApplicationContext(), "PrintSetting", Constants.PRINTER_IP, mPrinterIp);
  510. Utils.savePref(getApplicationContext(), "PrintSetting", Constants.PRINTER_ID, mPrinterId);
  511. }
  512. public void onCancelDialog(String str) {
  513. if (((str.hashCode() == -21731516 && str.equals(DIALOG_PROGRESS)) ? (char) 0 : 65535) == 0) {
  514. stopAllThread();
  515. finish();
  516. }
  517. }
  518. private class CustomProDialog extends Dialog {
  519. private int mLayoutId;
  520. public CustomProDialog(Context context, int i, int i2) {
  521. super(context, i);
  522. mLayoutId = i2;
  523. setCancelable(false);
  524. }
  525. protected void onCreate(Bundle bundle) {
  526. super.onCreate(bundle);
  527. requestWindowFeature(1);
  528. View inflate = getLayoutInflater().inflate(mLayoutId, (ViewGroup) null);
  529. if (mLayoutId == R.layout.maintain_executing_dialog) {
  530. ((Button) inflate.findViewById(R.id.close_btn)).setOnClickListener(new View.OnClickListener() {
  531. public void onClick(View view) {
  532. CustomProDialog.this.cancel();
  533. GetPrinterReplyData.this.interrupMaintainThread();
  534. }
  535. });
  536. }
  537. setContentView(inflate);
  538. }
  539. }
  540. /* access modifiers changed from: package-private */
  541. public void stopAllThread() {
  542. if (!mIsCancelProbe) {
  543. mIsStop = true;
  544. mIsCancelProbe = true;
  545. MaintainPrinter2 maintainPrinter2 = mPrinter;
  546. if (maintainPrinter2 != null) {
  547. maintainPrinter2.doCancelFindPrinter();
  548. }
  549. cancelLoadConPro();
  550. endLoadConThread();
  551. interrupMaintainThread();
  552. endBackGroundThread();
  553. }
  554. }
  555. }