package com.ectrip.cyt.center; import android.content.Context; import android.content.Intent; import android.content.res.Resources; import android.widget.Toast; import com.ectrip.cyt.bean.ConfigBean; import com.ectrip.cyt.db.DbManager; import com.ectrip.cyt.ui.BaseActivity; import com.ectrip.cyt.utils.SharedPreferences2Obj; import com.ectrip.trips.check.R; import java.util.ArrayList; import android_serialport_api.print_tool.BasewinRebPosPortTool; import android_serialport_api.print_tool.MobilePrintTool; import android_serialport_api.print_tool.SerialIDPortTool; import android_serialport_api.print_tool.SerialNewHandlePortTool; import android_serialport_api.print_tool.SerialNewPortTool; import android_serialport_api.print_tool.SerialPortTool; import android_serialport_api.print_tool.SerialSmallPortTool; /** * @author jigo 打印处理 */ public class PrintHandle { // private String TAG = PrintHandle.class.getSimpleName(); private Context context; private String printInfo; private final int ID_POS = 5;// 身份证pos private final int GENERAL_POS = 6;// 一般pos private final int SMALL_POS = 7;// 小的pos private final int HANDSET = 8; // 手持机 private final int MOBILE = 9;// 手机 private final int New_POS = 10; // 新版的pos机 private final int New_IDPOS = 11; // 新版的身份证 private final int New_HANDSET_POS = 12; // 新版的手持机pos机 private final int BASEWIN_REB_POS = 13; // 盛本的红色pos机 private int isPrint = -1;// 是否打印 private String isStatistic = "0"; private static PrintHandle printHandle = null; private Integer type = null;// 设备类型 private Resources resources; public static PrintHandle getInstance() { if (printHandle == null) { synchronized (PrintHandle.class) { printHandle = new PrintHandle(); } } return printHandle; } private boolean isClick = true; public void print(String printInfo, Context context) { this.context = context; resources = context.getResources(); if (printInfo == null) { return; } // int index = printInfo.indexOf("证件号码"); // if (printInfo.length()>27){ // String noString = printInfo.substring(26, 27); // if (noString.equals("\n")) { // String buf = printInfo.substring(index + 13, index + 21); // printInfo = printInfo.replace(buf, "****"); // } // // } type = SharedPreferences2Obj.getInstance(context) .setName("MachineType").getObject("type", Integer.class); if (isClick == false) { return; } if (isClick == true) { this.printInfo = printInfo; try { ArrayList beans = DbManager.GetConfigs(); if (beans != null && beans.get(0) != null) { // 判断是否为打印 isPrint = beans.get(0).getEc_isPrint(); } } catch (Exception e) { e.printStackTrace(); } isStatistic = SharedPreferences2Obj.getInstance(context) .setName("SelectAction") .getObject("isStatistic", String.class); // 非统计 if (isStatistic != null) { if (isStatistic.equals("0")) { // 非统计 String titleName = SharedPreferences2Obj .getInstance(context).setName("SelectAction") .getObject("titleName", String.class); if (titleName != null) { if (titleName.equals(resources .getString(R.string.check))) { if (isPrint == 1) { // 1的时候打印小票 printInfo(type); } } else if (titleName.equals(resources .getString(R.string.reprint))) { printInfo(type); } } else { printInfo(type); } } else if (isStatistic.equals("1")) { printInfo(type); } } } } private void printInfo(Integer type) { if (type != null) { switch (type) { case ID_POS: try { idPosPrint(); } catch (Exception e) { e.printStackTrace(); } break; case GENERAL_POS: try { generalPrint(); } catch (Exception e) { e.printStackTrace(); } break; case SMALL_POS: try { smallPosprint(); } catch (Exception e) { e.printStackTrace(); } break; case HANDSET: ((BaseActivity) context).MToast(context, context.getString(R.string.not_support_print), Toast.LENGTH_SHORT); // try { // handlePrint(); // } catch (Exception e) { // e.printStackTrace(); // } break; case MOBILE: try { mobilePrint(); } catch (Exception e) { e.printStackTrace(); } break; case New_POS: try { newPosPrint(); } catch (Exception e) { e.printStackTrace(); } break; case New_IDPOS: try { handlePosPrint(); } catch (Exception e) { e.printStackTrace(); } break; case New_HANDSET_POS: try { handlePosPrint(); } catch (Exception e) { e.printStackTrace(); } break; case BASEWIN_REB_POS: try { basewinPosPrint(); } catch (Exception e) { e.printStackTrace(); } break; default: break; } } } /************************ 关闭打印 *******************************************/ public void printClose() { if (type != null) { switch (type) { case ID_POS: break; case GENERAL_POS: break; case SMALL_POS: break; case HANDSET: break; case MOBILE: break; case New_POS: try { if(serialNewPortTool!=null){ serialNewPortTool.close(); } } catch (Exception e1) { e1.printStackTrace(); } break; case New_IDPOS: break; case New_HANDSET_POS: try { if(serialNewHandlePortTool!=null){ serialNewHandlePortTool.close(); } } catch (Exception e) { e.printStackTrace(); } break; case BASEWIN_REB_POS: try { if(basewinRebPosPortTool!=null){ basewinRebPosPortTool.close(); } } catch (Exception e) { e.printStackTrace(); } break; default: break; } } } /***************************** 普通pos机 ***********************************/ SerialPortTool portTool; private void generalPrint() { portTool = new SerialPortTool(); portTool.init(context, printInfo); } /******************************** 带身份证打印 ****************************************************/ SerialIDPortTool idPortTool; private void idPosPrint() { idPortTool = new SerialIDPortTool(); idPortTool.init(context, printInfo); } /******************************* 小pos机(手持pos机) ****************************************/ SerialSmallPortTool smallPortTool; private void smallPosprint() { smallPortTool = new SerialSmallPortTool(); smallPortTool.init(context, printInfo); } /********************************* 手机 ***************************************************/ private void mobilePrint() { Intent intent = new Intent(context, MobilePrintTool.class); intent.putExtra("info", printInfo); context.startActivity(intent); } /********************************* 手持机 ******************************************************/ private void handlePrint() { Intent intent = new Intent(context, MobilePrintTool.class); intent.putExtra("info", printInfo); context.startActivity(intent); } /******************************** 新版pos机 ***************************************************/ SerialNewPortTool serialNewPortTool; private void newPosPrint() { serialNewPortTool = new SerialNewPortTool(); serialNewPortTool.init(context, printInfo); } /********************************* 新版手持pos机 ***********************************************/ SerialNewHandlePortTool serialNewHandlePortTool; private void handlePosPrint() { serialNewHandlePortTool = new SerialNewHandlePortTool(); serialNewHandlePortTool.init(context, printInfo); } /********************************* 盛本红色pos机 ***********************************************/ BasewinRebPosPortTool basewinRebPosPortTool; private void basewinPosPrint(){ basewinRebPosPortTool = new BasewinRebPosPortTool(); basewinRebPosPortTool.init(context, printInfo); } }