优化NFC模块架构,将一些方法抽调到父类中。修复一些bug
 
	
	
	
	
	
	
		
		1个文件已删除
	
		
		1 文件已重命名
	
		
		10个文件已修改
	
		
		6个文件已添加
	
	
 
	
	
	
	
	
	
	
	
 |  |  | 
 |  |  |     runtimeOnly("androidx.room:room-common:2.3.0") | 
 |  |  |     annotationProcessor "androidx.room:room-compiler:2.3.0" | 
 |  |  |  | 
 |  |  |     implementation 'com.google.zxing:core:3.4.1' | 
 |  |  | //    implementation 'com.google.zxing:core:3.4.1' | 
 |  |  |     implementation group: 'net.sourceforge.jexcelapi', name: 'jxl', version: '2.6.12' | 
 |  |  |     implementation 'com.wang.avi:library:2.1.3' | 
 |  |  |  | 
 
 |  |  | 
 |  |  |         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); | 
 |  |  |         context.startActivity(intent); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  | } | 
 
 |  |  | 
 |  |  | dependencies { | 
 |  |  |  | 
 |  |  |     implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs') | 
 |  |  |     compileOnly fileTree(include: ['*.jar'], dir: 'exlibs') | 
 |  |  |     implementation 'com.android.support:appcompat-v7:28.0.0' | 
 |  |  |     implementation 'com.android.support.constraint:constraint-layout:1.1.3' | 
 |  |  |     implementation 'androidx.core:core-ktx:1.8.0' | 
 
 |  |  | 
 |  |  | package com.dayu.baselibrary; | 
 |  |  |  | 
 |  |  | import android.Manifest; | 
 |  |  | import android.app.Application; | 
 |  |  | import android.os.Build; | 
 |  |  | import android.util.Log; | 
 |  |  |  | 
 |  |  | import com.dayu.baselibrary.utils.AidlUtil; | 
 |  |  | import com.android.newpos.printer.PrinterManager; | 
 |  |  | import com.dayu.baselibrary.tools.print.PrintAdater; | 
 |  |  | import com.dayu.baselibrary.tools.print.ShangMiAidlUtil; | 
 |  |  | import com.dayu.baselibrary.utils.ModelUtils; | 
 |  |  | import com.pos.device.SDKManager; | 
 |  |  | import com.pos.device.sys.SystemManager; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * author: zuo | 
 |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     //初始化打印相关服务 | 
 |  |  |  | 
 |  |  |     public void onCreat(Application context) { | 
 |  |  |         application = context; | 
 |  |  |         AidlUtil.getInstance().connectPrinterService(context); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |         //初始化打印相关服务 | 
 |  |  |         PrintAdater.getInstance().connectPrinterService(context); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 
 |  |  | 
 |  |  | import android.nfc.NfcAdapter; | 
 |  |  | import android.os.Bundle; | 
 |  |  |  | 
 |  |  | import com.dayu.baselibrary.tools.nfc.NfcCommonData; | 
 |  |  | import com.dayu.baselibrary.tools.nfc.HuaZhiNfcReadHepler; | 
 |  |  | import com.dayu.baselibrary.utils.ModelUtils; | 
 |  |  | import com.dayu.baselibrary.utils.TipUtil; | 
 |  |  | import com.pos.device.picc.PiccReader; | 
 |  |  | import com.pos.device.picc.PiccReaderCallback; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * author: zuo | 
 |  |  | 
 |  |  | public abstract class BaseNfcActivity extends BaseActivity { | 
 |  |  |     protected NfcAdapter mNfcAdapter; | 
 |  |  |     private PendingIntent mPendingIntent; | 
 |  |  |     public static int adapterType = NfcCommonData.defaultType; | 
 |  |  |     public static int adapterType = ModelUtils.defaultType; | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     protected void onNewIntent(Intent intent) { | 
 |  |  |         super.onNewIntent(intent); | 
 |  |  |         switch (adapterType) { | 
 |  |  |             case NfcCommonData.defaultType: | 
 |  |  |             case ModelUtils.defaultType: | 
 |  |  |                 onNfcBack(intent); | 
 |  |  |                 break; | 
 |  |  |         } | 
 |  |  | 
 |  |  |     @Override | 
 |  |  |     protected void onCreate(Bundle savedInstanceState) { | 
 |  |  |         super.onCreate(savedInstanceState); | 
 |  |  |         //判断是哪个机型 | 
 |  |  |         try { | 
 |  |  |             Class.forName("com.pos.device.config.DevConfig"); | 
 |  |  |             adapterType = NfcCommonData.HuaZhiRongHai; | 
 |  |  |         } catch (ClassNotFoundException e) { | 
 |  |  |             adapterType = NfcCommonData.defaultType; | 
 |  |  |         switch (ModelUtils.getModelType()) { | 
 |  |  |             case ModelUtils.defaultType: | 
 |  |  |             case ModelUtils.ShangMiType: | 
 |  |  |                 adapterType = ModelUtils.defaultType; | 
 |  |  |                 break; | 
 |  |  |             case ModelUtils.HuaZhiRongHaiType: | 
 |  |  |                 adapterType = ModelUtils.HuaZhiRongHaiType; | 
 |  |  |                 PiccReader.getInstance().startSearchCard(HuaZhiNfcReadHepler.TIMEOUT, new PiccReaderCallback() { | 
 |  |  |                     @Override | 
 |  |  |                     public void onSearchResult(int result, int cardType) { | 
 |  |  |                         if (result == PiccReaderCallback.SUCCESS) { | 
 |  |  |                             switch (cardType) { | 
 |  |  |                                 //以下为M1卡 | 
 |  |  |                                 case PiccReader.MIFARE_ONE_S50: | 
 |  |  |                                 case PiccReader.MIFARE_ONE_S70: | 
 |  |  |                                     onNfcBack(null); | 
 |  |  |                                     break; | 
 |  |  |                             } | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 }); | 
 |  |  |                 break; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     protected void onDestroy() { | 
 |  |  |         super.onDestroy(); | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 检测工作,判断设备的NFC支持情况 | 
 |  |  |      * | 
 
| New file | 
 |  |  | 
 |  |  | package com.dayu.baselibrary.tools.nfc; | 
 |  |  |  | 
 |  |  | import android.app.Activity; | 
 |  |  | import android.content.Intent; | 
 |  |  |  | 
 |  |  | import com.dayu.baselibrary.bean.BaseUserCardCard; | 
 |  |  |  | 
 |  |  | import java.util.Collections; | 
 |  |  | import java.util.List; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * author: zuo | 
 |  |  |  * Date: 2024-09-27 | 
 |  |  |  * Time: 14:23 | 
 |  |  |  * 备注: | 
 |  |  |  */ | 
 |  |  | public class HuaZhiNfcReadHepler extends BaseNfcReadHelper { | 
 |  |  |  | 
 |  |  |     static String TAG = "HuaZhiNfcReadHepler"; | 
 |  |  |     static HuaZhiNfcReadHepler huaZhiNfcReadHepler; | 
 |  |  |     public static final int TIMEOUT = -1; | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     public static HuaZhiNfcReadHepler getInstance(Intent intent, Activity activity) { | 
 |  |  |         if (huaZhiNfcReadHepler != null) { | 
 |  |  |             huaZhiNfcReadHepler = new HuaZhiNfcReadHepler(); | 
 |  |  |         } | 
 |  |  |         return huaZhiNfcReadHepler; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public String getCradType() { | 
 |  |  |         return ""; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public void getAllData(NFCCallMapback callback) { | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public void getOneSectorData(NFCCallListback callback) { | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public String getCardNumber() { | 
 |  |  |         return ""; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public String getCradTypeAndCardNumber() { | 
 |  |  |         return ""; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public void getData(int a, int b, NFCCallByteback callback) { | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public List<byte[]> getOnesectorData() { | 
 |  |  |         return Collections.emptyList(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public BaseUserCardCard getUserCardData(BaseUserCardCard userCardCard) { | 
 |  |  |         return null; | 
 |  |  |     } | 
 |  |  | } | 
 
 |  |  | 
 |  |  |  | 
 |  |  | import com.dayu.baselibrary.activity.BaseNfcActivity; | 
 |  |  | import com.dayu.baselibrary.bean.BaseUserCardCard; | 
 |  |  | import com.dayu.baselibrary.utils.ModelUtils; | 
 |  |  |  | 
 |  |  | import java.util.Collections; | 
 |  |  | import java.util.List; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  | 
 |  |  |  | 
 |  |  |     public NfcReadAdapter(Intent intent, Activity activity) { | 
 |  |  |         switch (BaseNfcActivity.adapterType) { | 
 |  |  |             case NfcCommonData.defaultType: | 
 |  |  |             case ModelUtils.defaultType: | 
 |  |  |                 nativeNfcReadHelper = new NativeNfcReadHelper(intent, activity); | 
 |  |  |                 break; | 
 |  |  |         } | 
 |  |  | 
 |  |  |     @Override | 
 |  |  |     public String getCradType() { | 
 |  |  |         switch (BaseNfcActivity.adapterType) { | 
 |  |  |             case NfcCommonData.defaultType: | 
 |  |  |             case ModelUtils.defaultType: | 
 |  |  |                 return nativeNfcReadHelper.getCradType(); | 
 |  |  |  | 
 |  |  |         } | 
 |  |  | 
 |  |  |     @Override | 
 |  |  |     public void getAllData(NFCCallMapback callback) { | 
 |  |  |         switch (BaseNfcActivity.adapterType) { | 
 |  |  |             case NfcCommonData.defaultType: | 
 |  |  |             case ModelUtils.defaultType: | 
 |  |  |                 nativeNfcReadHelper.getAllData(callback); | 
 |  |  |                 break; | 
 |  |  |  | 
 |  |  | 
 |  |  |     @Override | 
 |  |  |     public void getOneSectorData(NFCCallListback callback) { | 
 |  |  |         switch (BaseNfcActivity.adapterType) { | 
 |  |  |             case NfcCommonData.defaultType: | 
 |  |  |             case ModelUtils.defaultType: | 
 |  |  |                 nativeNfcReadHelper.getOneSectorData(callback); | 
 |  |  |                 break; | 
 |  |  |  | 
 |  |  | 
 |  |  |     @Override | 
 |  |  |     public String getCardNumber() { | 
 |  |  |         switch (BaseNfcActivity.adapterType) { | 
 |  |  |             case NfcCommonData.defaultType: | 
 |  |  |             case ModelUtils.defaultType: | 
 |  |  |                 return nativeNfcReadHelper.getCardNumber(); | 
 |  |  |  | 
 |  |  |  | 
 |  |  | 
 |  |  |     @Override | 
 |  |  |     public String getCradTypeAndCardNumber() { | 
 |  |  |         switch (BaseNfcActivity.adapterType) { | 
 |  |  |             case NfcCommonData.defaultType: | 
 |  |  |             case ModelUtils.defaultType: | 
 |  |  |                 return nativeNfcReadHelper.getCradTypeAndCardNumber(); | 
 |  |  |  | 
 |  |  |  | 
 |  |  | 
 |  |  |     @Override | 
 |  |  |     public void getData(int a, int b, NFCCallByteback callback) { | 
 |  |  |         switch (BaseNfcActivity.adapterType) { | 
 |  |  |             case NfcCommonData.defaultType: | 
 |  |  |             case ModelUtils.defaultType: | 
 |  |  |                 nativeNfcReadHelper.getData(a, b, callback); | 
 |  |  |                 break; | 
 |  |  |         } | 
 |  |  | 
 |  |  |     @Override | 
 |  |  |     public List<byte[]> getOnesectorData() { | 
 |  |  |         switch (BaseNfcActivity.adapterType) { | 
 |  |  |             case NfcCommonData.defaultType: | 
 |  |  |             case ModelUtils.defaultType: | 
 |  |  |                 return nativeNfcReadHelper.getOnesectorData(); | 
 |  |  |  | 
 |  |  |  | 
 |  |  | 
 |  |  |     @Override | 
 |  |  |     public BaseUserCardCard getUserCardData(BaseUserCardCard userCardCard) { | 
 |  |  |         switch (BaseNfcActivity.adapterType) { | 
 |  |  |             case NfcCommonData.defaultType: | 
 |  |  |             case ModelUtils.defaultType: | 
 |  |  |                 return nativeNfcReadHelper.getUserCardData(userCardCard); | 
 |  |  |         } | 
 |  |  |         return null; | 
 
 |  |  | 
 |  |  |  | 
 |  |  | import com.dayu.baselibrary.activity.BaseNfcActivity; | 
 |  |  | import com.dayu.baselibrary.bean.BaseUserCardCard; | 
 |  |  | import com.dayu.baselibrary.utils.ModelUtils; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * author: zuo | 
 |  |  | 
 |  |  |     NativeNfcWriteHelper nativeNfcWriteHelper; | 
 |  |  |     public NfcWriteAdapter(Intent intent, Activity activity) { | 
 |  |  |         switch (BaseNfcActivity.adapterType){ | 
 |  |  |             case NfcCommonData.defaultType: | 
 |  |  |             case ModelUtils.defaultType: | 
 |  |  |                 nativeNfcWriteHelper=new NativeNfcWriteHelper(intent,activity); | 
 |  |  |                 break; | 
 |  |  |         } | 
 |  |  | 
 |  |  |     @Override | 
 |  |  |     public boolean writeUserData(BaseUserCardCard userCard) { | 
 |  |  |         switch (BaseNfcActivity.adapterType){ | 
 |  |  |             case NfcCommonData.defaultType: | 
 |  |  |             case ModelUtils.defaultType: | 
 |  |  |                 return  nativeNfcWriteHelper.writeUserData(userCard); | 
 |  |  |  | 
 |  |  |         } | 
 |  |  | 
 |  |  |     @Override | 
 |  |  |     public boolean writeData(byte[] str, int a, int b) { | 
 |  |  |         switch (BaseNfcActivity.adapterType){ | 
 |  |  |             case NfcCommonData.defaultType: | 
 |  |  |             case ModelUtils.defaultType: | 
 |  |  |                 return  nativeNfcWriteHelper.writeData(str,a,b); | 
 |  |  |  | 
 |  |  |         } | 
 |  |  | 
 |  |  |     @Override | 
 |  |  |     public boolean changePasword(int a, MifareClassic mfc) { | 
 |  |  |         switch (BaseNfcActivity.adapterType){ | 
 |  |  |             case NfcCommonData.defaultType: | 
 |  |  |             case ModelUtils.defaultType: | 
 |  |  |                 return  nativeNfcWriteHelper.changePasword(a,mfc); | 
 |  |  |  | 
 |  |  |         } | 
 
| New file | 
 |  |  | 
 |  |  | package com.dayu.baselibrary.tools.print; | 
 |  |  |  | 
 |  |  | import android.app.Application; | 
 |  |  | import android.util.Log; | 
 |  |  |  | 
 |  |  | import com.android.newpos.printer.PrinterListener; | 
 |  |  | import com.android.newpos.printer.PrinterManager; | 
 |  |  | import com.android.newpos.printer.bean.PrintAlignMent; | 
 |  |  | import com.android.newpos.printer.bean.PrintFontSize; | 
 |  |  | import com.android.newpos.printer.bean.PrintTextProperty; | 
 |  |  | import com.pos.device.SDKManager; | 
 |  |  |  | 
 |  |  | import java.util.List; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * author: zuo | 
 |  |  |  * Date: 2024-09-27 | 
 |  |  |  * Time: 11:10 | 
 |  |  |  * 备注:华智融海公司打印相关 | 
 |  |  |  */ | 
 |  |  | public class HuaZhiRongHaiPrint { | 
 |  |  |  | 
 |  |  |     static HuaZhiRongHaiPrint huaZhiRongHaiPrint; | 
 |  |  |  | 
 |  |  |     public static HuaZhiRongHaiPrint getInstance() { | 
 |  |  |         if (huaZhiRongHaiPrint == null) { | 
 |  |  |             huaZhiRongHaiPrint = new HuaZhiRongHaiPrint(); | 
 |  |  |         } | 
 |  |  |         return huaZhiRongHaiPrint; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public void connectPrinterService(Application context) { | 
 |  |  |         SDKManager.init(context, () -> { | 
 |  |  |             Log.d("application", "初始化成功"); | 
 |  |  |             PrinterManager.getInstance().init(context.getApplicationContext()); | 
 |  |  |         }); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 打印指定字体的文本,字体设置只对本次有效 | 
 |  |  |      * | 
 |  |  |      * @param content: 要打印文字 | 
 |  |  |      * @param isBold:  是否加粗 | 
 |  |  |      * @param size:    字体大小 | 
 |  |  |      */ | 
 |  |  |     public void printText(List<String> content, float size, boolean isBold, boolean isUnderLine) { | 
 |  |  |  | 
 |  |  |         try { | 
 |  |  |             for (int i = 0; i < content.size(); i++) { | 
 |  |  |                 PrinterManager.getInstance().addText(new PrintTextProperty(PrintFontSize.LARGE, PrintAlignMent.LEFT, true), content.get(i)); | 
 |  |  |             } | 
 |  |  |             PrinterManager.getInstance().feedLine(3); | 
 |  |  |             PrinterManager.getInstance().startPrint(new PrinterListener() { | 
 |  |  |                 @Override | 
 |  |  |                 public void onFinish() { | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 @Override | 
 |  |  |                 public void onError(int i) { | 
 |  |  |  | 
 |  |  |                 } | 
 |  |  |             }); | 
 |  |  |         } catch (Exception e) { | 
 |  |  |             e.printStackTrace(); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  | } | 
 
| New file | 
 |  |  | 
 |  |  | package com.dayu.baselibrary.tools.print; | 
 |  |  |  | 
 |  |  | import android.app.Application; | 
 |  |  | import android.content.Context; | 
 |  |  | import android.util.Log; | 
 |  |  |  | 
 |  |  | import com.android.newpos.printer.PrinterManager; | 
 |  |  | import com.dayu.baselibrary.utils.ModelUtils; | 
 |  |  | import com.pos.device.SDKManager; | 
 |  |  |  | 
 |  |  | import java.util.List; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * author: zuo | 
 |  |  |  * Date: 2024-09-27 | 
 |  |  |  * Time: 10:29 | 
 |  |  |  * 备注:打印相关的路由 | 
 |  |  |  */ | 
 |  |  | public class PrintAdater { | 
 |  |  |  | 
 |  |  |     static PrintAdater printAdater; | 
 |  |  |  | 
 |  |  |     public static PrintAdater getInstance() { | 
 |  |  |         if (printAdater == null) { | 
 |  |  |             printAdater = new PrintAdater(); | 
 |  |  |         } | 
 |  |  |         return printAdater; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 连接服务 | 
 |  |  |      */ | 
 |  |  |     public void connectPrinterService(Application context) { | 
 |  |  |         switch (ModelUtils.getModelType()) { | 
 |  |  |             case ModelUtils.ShangMiType: | 
 |  |  |                 ShangMiAidlUtil.getInstance().connectPrinterService(context); | 
 |  |  |                 break; | 
 |  |  |             case ModelUtils.HuaZhiRongHaiType: | 
 |  |  |                 HuaZhiRongHaiPrint.getInstance().connectPrinterService(context); | 
 |  |  |                 break; | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 断开服务 | 
 |  |  |      * | 
 |  |  |      * @param context context | 
 |  |  |      */ | 
 |  |  |     public static void disconnectPrinterService(Context context) { | 
 |  |  |         switch (ModelUtils.getModelType()) { | 
 |  |  |             case ModelUtils.ShangMiType: | 
 |  |  |                 ShangMiAidlUtil.getInstance().connectPrinterService(context); | 
 |  |  |                 break; | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 打印指定字体的文本,字体设置只对本次有效 | 
 |  |  |      * | 
 |  |  |      * @param content: 要打印文字 | 
 |  |  |      * @param isBold:  是否加粗 | 
 |  |  |      * @param size:    字体大小 | 
 |  |  |      */ | 
 |  |  |     public static void printText(List<String> content, float size, boolean isBold, boolean isUnderLine) { | 
 |  |  |         switch (ModelUtils.getModelType()) { | 
 |  |  |             case ModelUtils.ShangMiType: | 
 |  |  |                 ShangMiAidlUtil.getInstance().printText(content, size, isBold, isUnderLine); | 
 |  |  |                 break; | 
 |  |  |             case ModelUtils.HuaZhiRongHaiType: | 
 |  |  |                 HuaZhiRongHaiPrint.getInstance().printText(content, size, isBold, isUnderLine); | 
 |  |  |                 break; | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | } | 
 
| File was renamed from baselibrary/src/main/java/com/dayu/baselibrary/utils/AidlUtil.java | 
 |  |  | 
 |  |  | package com.dayu.baselibrary.utils; | 
 |  |  | package com.dayu.baselibrary.tools.print; | 
 |  |  |  | 
 |  |  | import android.content.ComponentName; | 
 |  |  | import android.content.Context; | 
 |  |  | 
 |  |  |  | 
 |  |  | import com.dayu.baselibrary.R; | 
 |  |  | import com.dayu.baselibrary.bean.TableItem; | 
 |  |  | import com.dayu.baselibrary.utils.ESCUtil; | 
 |  |  | import com.dayu.baselibrary.utils.PrinterCallback; | 
 |  |  |  | 
 |  |  |  | 
 |  |  | import java.util.ArrayList; | 
 |  |  | 
 |  |  | import woyou.aidlservice.jiuiv5.ICallback; | 
 |  |  | import woyou.aidlservice.jiuiv5.IWoyouService; | 
 |  |  |  | 
 |  |  |  | 
 |  |  | public class AidlUtil { | 
 |  |  | /** | 
 |  |  |  * 商米打印模块相关代码 | 
 |  |  |  */ | 
 |  |  | public class ShangMiAidlUtil { | 
 |  |  |     private static final String SERVICE_PACKAGE = "woyou.aidlservice.jiuiv5"; | 
 |  |  |     private static final String SERVICE_ACTION = "woyou.aidlservice.jiuiv5.IWoyouService"; | 
 |  |  |  | 
 |  |  |     private IWoyouService woyouService; | 
 |  |  |     private static AidlUtil mAidlUtil = new AidlUtil(); | 
 |  |  |     private static ShangMiAidlUtil mAidlUtil = new ShangMiAidlUtil(); | 
 |  |  |     private Context context; | 
 |  |  |  | 
 |  |  |     private AidlUtil() { | 
 |  |  |     private ShangMiAidlUtil() { | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public static AidlUtil getInstance() { | 
 |  |  |     public static ShangMiAidlUtil getInstance() { | 
 |  |  |         return mAidlUtil; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |     /** | 
 |  |  |      * 打印文字 | 
 |  |  |      */ | 
 |  |  |     public void printText(String content, float size, boolean isBold, boolean isUnderLine) { | 
 |  |  |     public void printText(List<String> content, float size, boolean isBold, boolean isUnderLine) { | 
 |  |  |         if (woyouService == null) { | 
 |  |  |             Toast.makeText(context, R.string.toast_2, Toast.LENGTH_LONG).show(); | 
 |  |  |             return; | 
 |  |  | 
 |  |  |             } else { | 
 |  |  |                 woyouService.sendRAWData(ESCUtil.underlineOff(), null); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             woyouService.printTextWithFont(content, null, size, null); | 
 |  |  |             woyouService.setFontSize(size, null); | 
 |  |  |             for (int i = 0; i < content.size(); i++) { | 
 |  |  |                 woyouService.printText(content.get(i) + "\n", null); | 
 |  |  |             } | 
 |  |  |             woyouService.lineWrap(3, null); | 
 |  |  |         } catch (RemoteException e) { | 
 |  |  |             e.printStackTrace(); | 
 |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /* | 
 |  |  |     *打印图片 | 
 |  |  |      *打印图片 | 
 |  |  |      */ | 
 |  |  |     public void printBitmap(Bitmap bitmap) { | 
 |  |  |         if (woyouService == null) { | 
 |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /* | 
 |  |  |     * 空打三行! | 
 |  |  |      * 空打三行! | 
 |  |  |      */ | 
 |  |  |     public void print3Line() { | 
 |  |  |         if (woyouService == null) { | 
 
| New file | 
 |  |  | 
 |  |  | package com.dayu.baselibrary.utils; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * author: zuo | 
 |  |  |  * Date: 2024-09-27 | 
 |  |  |  * Time: 10:18 | 
 |  |  |  * 备注:机型相关公共方法 | 
 |  |  |  */ | 
 |  |  | public class ModelUtils { | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 默认的调用方式(安卓原生) | 
 |  |  |      */ | 
 |  |  |     public final static int defaultType = 0; | 
 |  |  |     /** | 
 |  |  |      * 华智融海的SDK | 
 |  |  |      */ | 
 |  |  |     public final static int HuaZhiRongHaiType = 1; | 
 |  |  |  | 
 |  |  |     public final static int ShangMiType = 2; | 
 |  |  |  | 
 |  |  |     //判断是哪个机型 | 
 |  |  |     public static int getModelType() { | 
 |  |  |         int type; | 
 |  |  |         try { | 
 |  |  |             Class.forName("com.pos.device.config.DevConfig"); | 
 |  |  |             type = ModelUtils.HuaZhiRongHaiType; | 
 |  |  |             return type; | 
 |  |  |         } catch (ClassNotFoundException e) { | 
 |  |  |             type = ModelUtils.ShangMiType; | 
 |  |  |             return type; | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  | } | 
 
 |  |  | 
 |  |  | import android.view.View; | 
 |  |  | import android.widget.Toast; | 
 |  |  |  | 
 |  |  | import com.dayu.baselibrary.activity.BaseNfcActivity; | 
 |  |  | import com.dayu.baselibrary.tools.BcdUtil; | 
 |  |  | import com.dayu.baselibrary.utils.AidlUtil; | 
 |  |  | import com.dayu.baselibrary.tools.print.PrintAdater; | 
 |  |  | import com.dayu.baselibrary.tools.print.ShangMiAidlUtil; | 
 |  |  | import com.dayu.baselibrary.utils.BaseCommon; | 
 |  |  | import com.dayu.baselibrary.utils.CRC8; | 
 |  |  | import com.dayu.baselibrary.utils.DateUtil; | 
 |  |  | 
 |  |  | import com.dayu.henanlibrary.view.ProgressDialog; | 
 |  |  | import com.tencent.bugly.crashreport.CrashReport; | 
 |  |  |  | 
 |  |  | import java.util.ArrayList; | 
 |  |  | import java.util.Arrays; | 
 |  |  | import java.util.Calendar; | 
 |  |  | import java.util.List; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * Copyright (C), 2023, | 
 |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 打印机相关信息 | 
 |  |  |      * | 
 |  |  | 
 |  |  |      */ | 
 |  |  |     private void setPrinterData(RechargeBean rechargeBean) { | 
 |  |  |         try { | 
 |  |  |             StringBuffer data = new StringBuffer(); | 
 |  |  |             List<String> data = new ArrayList<>(); | 
 |  |  |             if (rechargeBean != null) { | 
 |  |  |                 data.append("*****************************" + "\n"); | 
 |  |  |  | 
 |  |  |                 data.append("设备序列号:").append(rechargeBean.getSerial()).append("\n"); | 
 |  |  |                 data.append("用户名:").append(rechargeBean.getUserName()).append("\n"); | 
 |  |  |                 //            data.append("户  号:" + rechargeBean.getUserNum() + "\n"); | 
 |  |  |                 data.append("充值金额:").append(rechargeBean.getMorny()).append("元").append("\n"); | 
 |  |  |                 data.append("卡内余额:").append(rechargeBean.getBalance()).append("元").append("\n"); | 
 |  |  |                 data.append("日  期:").append(DateUtil.dateToStamp(rechargeBean.getDate(), DateUtil.type2)).append("\n\n"); | 
 |  |  |                 data.append("*****************************"); | 
 |  |  |                 data.add("*****************************"); | 
 |  |  |                 data.add("设备序列号:" + rechargeBean.getSerial()); | 
 |  |  |                 data.add("用户名:" + rechargeBean.getUserName()); | 
 |  |  |                 data.add("充值金额:" + rechargeBean.getMorny() + "元"); | 
 |  |  |                 data.add("卡内余额:" + rechargeBean.getBalance() + "元"); | 
 |  |  |                 data.add("日  期:" + DateUtil.dateToStamp(rechargeBean.getDate(), DateUtil.type2)); | 
 |  |  |                 data.add("*****************************"); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             float size = 26; | 
 |  |  |  | 
 |  |  |             try { | 
 |  |  |                 AidlUtil.getInstance().printText(data.toString(), size, true, false); | 
 |  |  |                 AidlUtil.getInstance().print3Line(); | 
 |  |  |                 PrintAdater.getInstance().printText(data, size, true, false); | 
 |  |  |                 ShangMiAidlUtil.getInstance().print3Line(); | 
 |  |  |             } catch (Exception e) { | 
 |  |  |                 e.printStackTrace(); | 
 |  |  |             } | 
 
 |  |  | 
 |  |  | import android.view.View; | 
 |  |  |  | 
 |  |  | import com.dayu.baselibrary.tools.HexUtil; | 
 |  |  | import com.dayu.baselibrary.utils.AidlUtil; | 
 |  |  | import com.dayu.baselibrary.tools.print.PrintAdater; | 
 |  |  | import com.dayu.baselibrary.utils.BaseCommon; | 
 |  |  | import com.dayu.baselibrary.utils.DateUtil; | 
 |  |  | import com.dayu.baselibrary.utils.MornyUtil; | 
 |  |  | 
 |  |  | import com.dayu.qihealonelibrary.utils.CardCommon; | 
 |  |  | import com.tencent.bugly.crashreport.CrashReport; | 
 |  |  |  | 
 |  |  | import java.util.ArrayList; | 
 |  |  | import java.util.Calendar; | 
 |  |  | import java.util.List; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * Copyright (C), 2023, | 
 |  |  | 
 |  |  |  * Date: 2023-11-08 21:19 | 
 |  |  |  * Description: nfc写卡界面 | 
 |  |  |  */ | 
 |  |  | public class NFCWreatActivityQHAlone  extends QHAloneBaseNfcActivity { | 
 |  |  | public class NFCWreatActivityQHAlone extends QHAloneBaseNfcActivity { | 
 |  |  |  | 
 |  |  |     RegisteredCard registeredCard; | 
 |  |  |     CleanUserCard cleanUserCard; | 
 |  |  | 
 |  |  |      */ | 
 |  |  |     private void setPrinterData(RechargeBean rechargeBean) { | 
 |  |  |         try { | 
 |  |  |             StringBuffer data = new StringBuffer(); | 
 |  |  |             List<String> data = new ArrayList<>(); | 
 |  |  |             if (rechargeBean != null) { | 
 |  |  |                 data.append("*****************************" + "\n"); | 
 |  |  |                 data.append("设备序列号:" + rechargeBean.getSerial() + "\n"); | 
 |  |  |                 data.append("用户名:" + rechargeBean.getUserName() + "\n"); | 
 |  |  |                 data.append("卡  号:" + rechargeBean.getCardNumber() + "\n"); | 
 |  |  |                 data.append("充值金额:" + rechargeBean.getMorny() + " 元" + "\n"); | 
 |  |  |                 data.append("卡内余额:" + rechargeBean.getBalance() + " 元" + "\n"); | 
 |  |  |                 data.append("日  期:" + DateUtil.dateToStamp(rechargeBean.getDate(), DateUtil.type2) + "\n\n"); | 
 |  |  |                 data.append("*****************************"); | 
 |  |  |                 data.add("*****************************"); | 
 |  |  |                 data.add("设备序列号:" + rechargeBean.getSerial()); | 
 |  |  |                 data.add("用户名:" + rechargeBean.getUserName()); | 
 |  |  |                 data.add("卡  号:" + rechargeBean.getCardNumber()); | 
 |  |  |                 data.add("充值金额:" + rechargeBean.getMorny() + " 元"); | 
 |  |  |                 data.add("卡内余额:" + rechargeBean.getBalance() + " 元"); | 
 |  |  |                 data.add("日  期:" + DateUtil.dateToStamp(rechargeBean.getDate(), DateUtil.type2)); | 
 |  |  |                 data.add("*****************************"); | 
 |  |  |             } | 
 |  |  |             float size = 26; | 
 |  |  |  | 
 |  |  |             try { | 
 |  |  |                 AidlUtil.getInstance().printText(data.toString(), size, true, false); | 
 |  |  |                 AidlUtil.getInstance().print3Line(); | 
 |  |  |                 PrintAdater.getInstance().printText(data, size, true, false); | 
 |  |  |             } catch (Exception e) { | 
 |  |  |                 e.printStackTrace(); | 
 |  |  |             } | 
 
 |  |  | 
 |  |  | package com.dayu.qiheonlinelibrary.utils; | 
 |  |  |  | 
 |  |  | import android.text.TextUtils; | 
 |  |  |  | 
 |  |  | import com.dayu.baselibrary.utils.AidlUtil; | 
 |  |  | import com.dayu.baselibrary.tools.print.PrintAdater; | 
 |  |  | import com.dayu.baselibrary.tools.print.ShangMiAidlUtil; | 
 |  |  | import com.dayu.baselibrary.utils.DateUtil; | 
 |  |  | import com.dayu.baselibrary.utils.MornyUtil; | 
 |  |  | import com.dayu.qiheonlinelibrary.dbBean.RechargeBean; | 
 |  |  | import com.tencent.bugly.crashreport.CrashReport; | 
 |  |  |  | 
 |  |  | import java.util.ArrayList; | 
 |  |  | import java.util.List; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * Created by Android Studio. | 
 |  |  | 
 |  |  |      */ | 
 |  |  |     public static void printerData(RechargeBean rechargeBean) { | 
 |  |  |         try { | 
 |  |  |             StringBuffer data = new StringBuffer(); | 
 |  |  |             List<String> data = new ArrayList<>(); | 
 |  |  |             if (rechargeBean != null) { | 
 |  |  |                 data.append("*****************************" + "\n"); | 
 |  |  |                 data.append("设备序列号:" + rechargeBean.getSerial() + "\n"); | 
 |  |  |                 data.append("姓   名:" + rechargeBean.getUserName() + "\n"); | 
 |  |  |                 data.append("卡   号:" + rechargeBean.getCardNumber() + "\n"); | 
 |  |  |                 data.append("用户编号:" + rechargeBean.getUserCode() + "\n"); | 
 |  |  |                 data.append("充值金额:" + rechargeBean.getMorny() + " 元" + "\n"); | 
 |  |  |                 data.add("*****************************"); | 
 |  |  |                 data.add("设备序列号:" + rechargeBean.getSerial()); | 
 |  |  |                 data.add("姓   名:" + rechargeBean.getUserName()); | 
 |  |  |                 data.add("卡   号:" + rechargeBean.getCardNumber()); | 
 |  |  |                 data.add("用户编号:" + rechargeBean.getUserCode()); | 
 |  |  |                 data.add("充值金额:" + rechargeBean.getMorny() + " 元"); | 
 |  |  |                 if (MornyUtil.changeY2F(rechargeBean.getDeductionMorny()) > 0) { | 
 |  |  |                     data.append("补扣金额:" + rechargeBean.getDeductionMorny() + " 元" + "\n"); | 
 |  |  |                     data.add("补扣金额:" + rechargeBean.getDeductionMorny() + " 元"); | 
 |  |  |                 } | 
 |  |  |                 data.append("充值后卡内余额:" + rechargeBean.getBalance() + " 元" + "\n"); | 
 |  |  |                 data.append("充值电量:" + rechargeBean.getRechargeElectric() + " 度" + "\n"); | 
 |  |  |                 data.append("充值后卡内电量:" + rechargeBean.getSurplusElectic() + " 度" + "\n"); | 
 |  |  |                 data.append("日   期:" + DateUtil.dateToStamp(rechargeBean.getRechargeDate(), DateUtil.type2) + "\n\n"); | 
 |  |  |                 data.append("*****************************"); | 
 |  |  |                 data.add("充值后卡内余额:" + rechargeBean.getBalance() + " 元"); | 
 |  |  |                 data.add("充值电量:" + rechargeBean.getRechargeElectric() + " 度"); | 
 |  |  |                 data.add("充值后卡内电量:" + rechargeBean.getSurplusElectic() + " 度"); | 
 |  |  |                 data.add("日   期:" + DateUtil.dateToStamp(rechargeBean.getRechargeDate(), DateUtil.type2)); | 
 |  |  |                 data.add("*****************************"); | 
 |  |  |             } | 
 |  |  |             float size = 26; | 
 |  |  |             try { | 
 |  |  |                 AidlUtil.getInstance().printText(data.toString(), size, true, false); | 
 |  |  | //                AidlUtil.getInstance().print3Line(); | 
 |  |  |                 PrintAdater.getInstance().printText(data, size, true, false); | 
 |  |  |             } catch (Exception e) { | 
 |  |  |                 e.printStackTrace(); | 
 |  |  |             } |