com.cordova.plugins.sunmi
v1.0.8
Published
cordova plugin for sunmi devices
Downloads
5
Readme
功能
- 获取SN,兼容Android 10 以上商米设备
- 打印,兼容Android 10 以上商米设备
安装
cordova plugin add com.cordova.plugins.sunmi
SN
问题1:V2S获取不到SN
原因:Android 10开始,权限变更,原来获取SN的方法不再支持
解决方案:使用商米官方提供的方法
将商米官方提供的方法封装为cordova插件
安装sunmi插件
cordova plugin add com.cordova.plugins.sunmi //已封装获取SN功能
修改npn.init.js onDeviceReady方法,改后的代码如下
var onDeviceReady = function(){ NPNLib.init(); NPNLib.deviceSN(function(res){ deviceSN = res; deviceVersion = NPNLib.appVersion(); //调用通知事件 NPNLib.notificationRegister(notifi_event_callback); document.addEventListener("backbutton", function(){ return false; }, false); //footer 展示sn 和版本号 $("#footer_sn").html("Version:"+deviceVersion+" SN:"+deviceSN); }); }
修改npn.lib.js deviceSN方法,改后的代码如下:
deviceSN: function(success) { window.sunmi.getSN(function(res){ success(res); }, function(err){ success("unknown") }); },
打印
问题1:V2S不打印
原因:Android 10开始,商米原生打印有修改,不可兼容使用
解决方案:使用商米远程接口,远程判断型号,自动适配。
根目录下的build.gradle文件增加中央仓库
jcenter()下增加下面内容: mavenCentral()
引入google core包
复制 core-3.3.0.jar 到 platforms\android\app\libs
app目录下的build.gradle文件增加依赖
implementation('com.sunmi:printerlibrary:1.0.19')
针对V2s和V2s_plus,在AndroidManifest.xml中添加包引用:
<uses-permission android:name="android.permission.BLUETOOTH" />下,增加下面内容: <queries> <package android:name="woyou.aidlservice.jiuiv5" /> </queries>
更新sunmi插件
// 卸载插件 cordova plugin remove com.cordova.plugins.sunmi //重新安装插件 cordova plugin add com.cordova.plugins.sunmi
移除pos插件
cordova plugin remove com.cordova.plugins.pos
修改npn.lib.js
改为使用新的打印方法 window.pos. 改为 window.sunmi.
重新编译
Terminal 执行: cordova build Android Studio执行: Build > Make Project
问题2:V2 打印QR过大
原因:官方打印sdk,宽度从1-12分段,需转换数值
解决方案:转换计算
修改platforms/android/app/src/main/java/com/npn/utils/SunmiPrinterUtil.java
else if (param.containsKey("qrcode")) { int width = 6; SunmiPrintHelperUtil.getInstance().setAlign(1);//默认居中 0-left;1-center;2-right SunmiPrintHelperUtil.getInstance().printQr(param.get("qrcode"),width,3,callback); SunmiPrintHelperUtil.getInstance().setAlign(0);//打印完成还原为居左 0-left;1-center;2-right }
通知
问题1:横幅通知不显示
原因:Android 8开始,创建通知需先创建channel
解决方案:创建channel
修改notification插件,兼容Android 8以后设备
重装notification插件
// 卸载插件 cordova plugin remove com.cordova.plugins.notification //重新安装插件 cordova plugin add com.cordova.plugins.notification
问题2:服务器通知接收不到
原因:建立socket连接时,未成功。因为SN还是使用老的方式获取
解决方案:重新按商米官方方式获取SN
修改platforms/android/app/src/main/java/com/npn/utils/GlobalUtils.java文件
getSN() 内容改为: public static String getSN() { if (sn == null) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { String serial = null; try { Class<?> c =Class.forName("android.os.SystemProperties"); Method get =c.getMethod("get", String.class); serial = (String)get.invoke(c, "ro.sunmi.serial"); } catch (Exception e) { e.printStackTrace(); } sn = serial; } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { sn = Build.getSerial(); } else { sn = Build.SERIAL; } } return sn; }
问题3:通知显示上下不居中
原因:view设置问题
解决方案:优化界面设置
修改platforms/android/app/src/main/res/layout/view_notify.xml文件
//RelativeLayout gravity设置center_vertical //notify_icon margin top修改为20dip //LinearLayout layout_height设置为90dip gravity设置center_vertical