package com.lumous.libprint;
import android.annotation.SuppressLint;
import android.app.Application;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Build;
import android.os.IBinder;
import android.text.TextUtils;
import android.util.Log;
import androidx.annotation.NonNull;
import com.lumous.libprint.bean.ComBean;
import com.lumous.libprint.bean.ComInfo;
import com.lumous.libprint.bean.PrintInfo;
import com.lumous.libprint.bean.PrinterBean;
import com.lumous.libprint.bean.PrinterBitmap;
import com.lumous.libprint.bean.QRCode;
import com.lumous.libprint.bean.SunMiBean;
import com.lumous.libprint.bean.SunMiInfo;
import com.lumous.libprint.nov.SerialHelper;
import com.lumous.libprint.utils.Config;
import com.lumous.libprint.utils.OnPrintListener;
import com.lumous.libprint.utils.Utils;
import com.printsdk.cmd.PrintCmd;
import com.sunmi.extprinterservice.ExtPrinterService;
import net.posprinter.IConnectListener;
import net.posprinter.IDeviceConnection;
import net.posprinter.POSConnect;
import net.posprinter.POSConst;
import net.posprinter.POSPrinter;
import java.io.IOException;
import java.security.InvalidParameterException;
import java.util.List;
import java.util.concurrent.TimeUnit;
import okhttp3.Call;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import com.zhy.http.okhttp.OkHttpUtils;
import com.zhy.http.okhttp.callback.StringCallback;
import com.zhy.http.okhttp.log.LoggerInterceptor;
import org.json.JSONObject;
public class PrintManager {
@SuppressLint("StaticFieldLeak")
private volatile static PrintManager instance;
public static PrintManager get(){
if(instance==null){
synchronized (PrintManager.class){
if(instance == null){
instance = new PrintManager();
}
}
}
return instance;
}
private Application mContext;
private OnPrintListener listener;
private boolean isInit =false;//是否初始化
private boolean isAuth = false;
private int printType = 0;//打印机类型,1=英诺尔,2商米K2,3芯烨
/**——————————————————————英诺尔——————————————————————————*/
private SerialControl ComA;//串口
static int m_iRecValue = 0;//接收值
/**—————————————SunMi—————————————————————*/
private ExtPrinterService eps;
private ServiceConnection serCon;
/**————————————————芯烨——————————————————————*/
private IDeviceConnection curConnect;
private POSPrinter xPrinter;
/**
* @param type 1=英诺尔,2商米K2,3芯烨
* @param snNo 设备号
* @param appId appId
* @param appSecret appSecret
*/
public void init(Application context, int type, String snNo, String appId, String appSecret){
mContext = context;
if(TextUtils.isEmpty(snNo)){
onError(Config.code_1006,"设备号不能未空");
return;
}else if(TextUtils.isEmpty(appId)){
onError(Config.code_1006,"appId不能未空");
return;
}else if(TextUtils.isEmpty(appSecret)){
onError(Config.code_1006,"appSecret不能未空");
return;
}
printType = type;
auth(snNo,appId,appSecret);
}
public void auth(String snNo, String appId, String appSecret){
initOkHttp();
JSONObject ij = new JSONObject();
try{
ij.put("sdkVersion", Utils.INSTANCE.getCodeName());
ij.put("deviceSn",snNo);
}catch (Exception e){
e.printStackTrace();
}
String ts = String.valueOf(System.currentTimeMillis() / 1000);
OkHttpUtils.postString().url(Utils.INSTANCE.getHostUrl()+"auth/printer")
.mediaType(MediaType.parse("application/json; charset=utf-8"))
.addHeader("lmts",ts)
.addHeader("lmAppId",appId)
.addHeader("lmsignature", Utils.INSTANCE.md5(ts + appSecret + ij))
.content(ij.toString())
.build().execute(new StringCallback() {
@Override
public void onError(Call call, Exception e, int id) {
PrintManager.this.onError(Config.code_1001,e.toString()+"鉴权失败");
}
@Override
public void onResponse(String response, int id) {
logMsg("ase===data="+response);
if(!TextUtils.isEmpty(response)){
checkData(response);
}else{
PrintManager.this.onError(Config.code_1005,"鉴权接口异常");
}
}
});
}
private void initOkHttp(){
OkHttpClient ok = new OkHttpClient.Builder()
.addInterceptor(new LoggerInterceptor("ase==="))
.connectTimeout(60, TimeUnit.SECONDS)
.readTimeout(60, TimeUnit.SECONDS)
.build();
OkHttpUtils.initClient(ok);
}
private void checkData(String response){
try {
JSONObject data = new JSONObject(response);
int code = data.getInt("errCode");
if(code == 0){
isAuth = true;
String result = data.getString("result");
if(!TextUtils.isEmpty(result)){
int status = new JSONObject(result).getInt("status");
if(status==1){
onConnect(0);
if(printType==1){
initNov();
}else if(printType==2){
initSunMi();
}else if(printType==3){
initXPrinter();
}else {
onError(Config.code_1002,"此设备型号不支持");
}
}else{
onError(Config.code_1004,"鉴权未通过");
}
}else{
onError(Config.code_1005,"鉴权接口异常");
}
}else{
String str = data.getString("errMsg");
if(TextUtils.isEmpty(str)){
str = "鉴权失败";
}
onError(Config.code_1001,str);
}
}catch (Exception e){
e.printStackTrace();
}
}
/** 初始化英诺尔 */
private void initNov(){
isInit = true;
String devPort;
if(Build.MODEL.equals("3280")){
devPort = Config.Port3280;
}else if(Build.MODEL.equals("3568A")){
devPort = Config.Port3568A;
}else {
isInit = false;
onError(Config.code_1002,"此设备型号不支持");
return;
}
if (ComA == null) {
ComA = new SerialControl();
ComA.setbLoopData(PrintCmd.GetStatus4());
ComA.setPort(devPort);
String devRate = "115200";
ComA.setBaudRate(devRate);
OpenComPort(ComA);
}
}
private void initSunMi(){
isInit = true;
if(Build.MODEL.equals("K2")){
serCon = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
没有合适的资源?快使用搜索试试~ 我知道了~
封装SDK,打包AAR 可能会出现的问题
共716个文件
xml:29个
bin:21个
lock:14个
需积分: 1 0 下载量 62 浏览量
2024-03-20
17:54:06
上传
评论
收藏 3.55MB 7Z 举报
温馨提示
1、封装SDK,打包AAR 可能会出现的问题,包括但不限于 aar 多次封装,os库参与打包时会丢失问题。 2、本项目使用的是 com.kezong:fat-aar:1.2.8 框架,网上也有'com.cpdroid:fat-aar:1.1.0'[https://github.com/cpdroid/fat-aar/blob/master/README_CN.md],使用的方式和方法都一样,有情趣的可以替换下试试。com.kezong:fat-aar:1.2.8对Gradle版本有要求,对应不上会出错。
资源推荐
资源详情
资源评论
收起资源包目录
封装SDK,打包AAR 可能会出现的问题 (716个子文件)
008fbbfe3a09313f30ba3adef4e0505623a9c8 150B
0187c5ca67357e20a10ce0dab8752dad7fbe3a 46B
01d2843d18ee09c30c4a519fd0928267199ce5 145B
02447b552c0ae5d845f6791c0cdec6ce04c937 291B
0283850254985390399b73bfe6b36d8106aaa1 2KB
038229421b11cde2c15122c592e7818c649f7e 2KB
03c2f45ef7f90fdc35b653d719e48fda12b2b2 346B
04179b99ad11905b930171c02763ff34f73792 48B
04f1d5cca76507e1e3a52b0d3e1dd054cb3d7a 91B
051a6f973e69a86e6f07f1a1c87f17a31c7235 184B
054fa1e1be266d07d53ae3a12b439c67155e72 126B
057df369ab62f002fef52f5f758050aef0a740 124B
05e76fde425290dd0fcbc8a8d5d48a8554e390 133B
05ec37438a3c2b51dd563563545a1d28fa202f 336B
05f5413c2ab9103d1be7a9b15feaddb50ef0e9 162B
0718d15469a1a23b2e488aac22ac7d3d2b98fd 124B
073f78c7be5b8d65a06b2fe8607e061967bc7d 48B
0761f4ccd0d672b15e131fc3eeac51c982c240 400B
077fbd069ee200af3f5b43415573cb11824334 146B
0933c38c7c89cd5fb414529f9a341c1eec6d6f 49B
0975b00a0422eab1aeace5370bc0c284e10f60 91B
0a6c15005ca0246297e2094066a1ef77c4e2e0 124B
0b4dfc03d7bf9a085dc20b4b8adcc150b8f788 151B
0bcaf989558c873a01ab6a1143c399b6218e81 185B
0bfd071c322a8ec5e883265d1826204aea1ad1 320B
0c3383890637b4721df1f49d0b229e55c0f361 159B
0ce0934eaafc153d968c8f0330f01d08e049b2 163B
0dad2ff15edd4d436bb3e8da8affbdb23cebea 1014B
0ec52dfd0bc2ef644244e3712aef352c4f1bf1 262B
0ef5f5ae356ffccbd221c7c629742f42ca79d0 162B
0fa1f911111e4c81f4071f89c9d90c9f203abb 311B
106e34b36822043695fceca20a0366fdc5c539 91B
10d8577fc925a5c5d43db4316ff8f03ac0a70c 91B
10dedfe9d59a1870c2e5defcf3489629c5e665 159B
126fe49e75f26ca0fefc807803ad67f48b3472 444B
12948521520214a2fce9b7076b988d9885864f 47B
130e49c93c4237c30875b2ee173b6b168a9123 51B
13f5caab5210bc9a9cac51f7948460aa2f1b84 441B
142db0e0ae2e90a9439972c3d2524243aa5c4d 46B
14bf1d60f887602590437aa9d6e2776d007f9e 48B
151891126b156680d3f11ec4135e5e5478676a 90B
152c295fd653004ea49e918417367b8e081af2 82KB
15333c987b8c58b500554c9ea3403213db828d 50B
1585c562e688117a50dc03e96509e51e8bb1ee 49B
15f12495fea6f4468a8a55a673658bcf81179c 46B
1704993621394301f53b9dbb2d46a6fce280d1 144B
176bd5565fabde7254deed15795f8cc6712ac0 336B
180dc130bd45bd647e85253f5ef77bba171910 45B
186cf0d78f23e8e8c467c73244f862b2504586 46B
1879a15b10e97fc3cd708828e5ea1e01f3922a 46B
18b8785fd1eb8e7ddf444e6e9d2375eda42bc8 46B
196ee29df99e15e35e02f2eaa9fc057457fe36 332B
19a8317c927f0c1879ab0798da78d68612e124 1KB
1a352c876efae182ab32397c62d23bf3020237 5KB
1a5c638713c78bdec55b17be7a330b5c2a8223 91B
1b16cfc0f98f934bedd07da4a7d4287de3e271 47B
1b431bcd15a3d07c0634d7290e64775cb8395e 150B
1b98e87d6df7a487b48f9a4269a2bff4be5d5b 162B
1c2c96402b4c593140d72657d8b836da336a70 122B
1c4b361dfbf9fee75dcccda34e60811c6c6b44 6KB
1c69dea990670f022255975ca70406c67d3fdc 91B
1ce8b05365399d1e92aaa7a01cdb5c707d72ed 150B
1d5f36030060c51facd471a0cd06d2ebe55a4f 263B
1f07b7a4b6d1c39e31c28939bca43ad8f26b22 4KB
1f4d48a317d51b81174ae57d69de9c15b640ec 167B
1f721e1ed1cea70fe2049db58a6a2e8c60853d 46B
1f722c6c337ecabad8647792232d923c3eb045 49B
1f9b4351ab4f62d066b46b3887aa66bcdfbc73 890B
1fa11ee1dd41ccf66238cd36e9aaa3685fbfd3 537B
1fad3c296816d22951b1ad9035dddb5922a26a 337B
1fdfd08a544736b22bd2d51591dd27c7e09e06 501B
20324bfa626b05cddacd22781577aab413f3ec 149B
204477da3ba43a951222d77fda00cea0f183a7 254B
2142cc42176ea4a832723cf84d1d2d1917ef82 150B
217e7d47f51b93d4f528719a5a5eefbb976d7f 50B
21e45af7a0ea6be67762ef7ac0f0d4b9047559 62B
222384b79a8149dd90595cfb524560a654a954 337B
223acf8b6ce5ff11cc46795b166d477aac850f 262B
2277ac4e7ffb6101cd52c94c362aeaaae2fcab 122B
22d9bd1878f0428b1ee16b4eb5d01fad498f83 45B
23821d45e6b2d5bcd4f9115f32ea94ffd2cd3c 24B
23a44ff78118c8ab597e237ec1ad5a471ae6fe 345B
24266f7f1bb8ebaa806db9c6bd3ca7bd51b491 284B
24cb17c544f3ca0c3c99041d9fcbfef1a55418 337B
2514da4cf8fabf7b99ad598212eb6208345952 179B
258b66d0a1b59c56c2482e26a2448eb99e251d 216B
25d5e275e5c14428c8e3212cce7884894f379f 92B
26ed3d646be6411a0d84315c64e738c70d538e 322B
2711c0b7435b613ee41f72ee300ff40dbe92c9 67B
271eecdcf5a6f06201307d0bfffc04a2989e0b 92B
27d917d2c9519cad399faef6f8ab9828cc295f 162B
27db46e6d27554b28eb01825ca155f62d28a15 124B
28296f456b6581cb5f002bc561d517bf09a899 145B
284e0f5d1c8e8bda5e2595975c7d362f1dba63 292B
28646f0d72bad5b94b33e600b125e53f987747 6KB
28eb5ebe73e8ca6d52676ca160051468d66d9c 162B
28fcf4fc07c09c61ed21e2b60534408078ba6b 46B
29421d9441d69674e624afab54032b20a63d46 123B
29895278895a76fc938f598a776a14d6e509d6 178B
2a9524725e9c00d6aadb119f2e1448a00f923c 92B
共 716 条
- 1
- 2
- 3
- 4
- 5
- 6
- 8
资源评论
Lingli1390520
- 粉丝: 2
- 资源: 49
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功