Commit 13d6bbf2 authored by pengguangpu's avatar pengguangpu

添加商米的打印驱动,测试发现无法正常打印条码和二维码,待调试

parent eb5a9693
...@@ -6,7 +6,7 @@ import android.graphics.Bitmap; ...@@ -6,7 +6,7 @@ import android.graphics.Bitmap;
/** /**
* 打印基类 * 打印基类
*/ */
public class BasePrinter implements IPrinter { public abstract class BasePrinter implements IPrinter {
/** /**
* 80mm打印纸允许打印的最大图片的宽度,此为经验值 * 80mm打印纸允许打印的最大图片的宽度,此为经验值
......
...@@ -43,13 +43,14 @@ public class ChuangjiePrinter extends BasePrinter { ...@@ -43,13 +43,14 @@ public class ChuangjiePrinter extends BasePrinter {
@Override @Override
public boolean init(Context context) { public boolean init(Context context) {
D.i(TAG, "开始初始化创捷打印机");
this.context = context; this.context = context;
if (mUsbDriver == null) { if (mUsbDriver == null) {
getUsbDriverService(context); getUsbDriverService(context);
} }
// USB线已经连接 // USB线已经连接
getUsbDriverService(); getUsbDriverService();
return connet() == 0; return connet() == PrinterStatusEnum.CODE_SUCCESS.status;
} }
@Override @Override
......
...@@ -17,7 +17,7 @@ public class PrinterManager { ...@@ -17,7 +17,7 @@ public class PrinterManager {
enum Type { enum Type {
//这里添加扩展的驱动 //这里添加扩展的驱动
// TYPE_HISENSE("hisense", ChuangjiePrinter.class.getName()), // TYPE_HISENSE("hisense", ChuangjiePrinter.class.getName()),
TYPE_SUNMI("shangmik1", ShangmiK1Printer.class.getName()), TYPE_SUNMI("sunmiK1", SunmiK1Printer.class.getName()),
TYPE_YINGTAI("yingtai", YingtaiPrinter.class.getName()), TYPE_YINGTAI("yingtai", YingtaiPrinter.class.getName()),
TYPE_CHUANGJIE("chuangjie", ChuangjiePrinter.class.getName()), TYPE_CHUANGJIE("chuangjie", ChuangjiePrinter.class.getName()),
TYPE_SANGDA("sangda", SangdaPrinter.class.getName()); TYPE_SANGDA("sangda", SangdaPrinter.class.getName());
...@@ -73,10 +73,10 @@ public class PrinterManager { ...@@ -73,10 +73,10 @@ public class PrinterManager {
*/ */
public boolean init(Context context) { public boolean init(Context context) {
for (Type type : Type.values()) { for (Type type : Type.values()) {
if (printer != null) {
printer.release();
}
try { try {
if (printer != null) {
printer.release();
}
Class printerCls = Class.forName(type.clsName); Class printerCls = Class.forName(type.clsName);
printer = (IPrinter) printerCls.newInstance(); printer = (IPrinter) printerCls.newInstance();
boolean result = printer.init(context); boolean result = printer.init(context);
...@@ -91,7 +91,11 @@ public class PrinterManager { ...@@ -91,7 +91,11 @@ public class PrinterManager {
} }
//没有找到对应的打印机 //没有找到对应的打印机
if (printer != null) { if (printer != null) {
printer.release(); try {
printer.release();
} catch (Exception ex) {
ex.printStackTrace();
}
} }
D.i(TAG, "没找到对应的打印机器,请检查"); D.i(TAG, "没找到对应的打印机器,请检查");
return false; return false;
...@@ -104,16 +108,58 @@ public class PrinterManager { ...@@ -104,16 +108,58 @@ public class PrinterManager {
*/ */
public boolean release() { public boolean release() {
if (isConnected()) { if (isConnected()) {
boolean result = printer.release(); try {
if (result == false) { boolean result = printer.release();
return false; if (result == false) {
return false;
}
printer = null;
return true;
} catch (Exception ex) {
ex.printStackTrace();
} }
printer = null;
return true;
} }
return true; return true;
} }
/**
* 保险起见提供指定硬件的初始化
* ps:谨慎调用
*
* @param context
* @param type 指定硬件类型
* @return
*/
public boolean init(Context context, Type type) {
if (type == null) {
return false;
}
//是否支持指定硬件
boolean isSupported = false;
for (Type tmpType : Type.values()) {
if (type.typeName.equals(tmpType.typeName)) {
isSupported = true;
}
}
if (isSupported == false) {
return false;
}
//反射新建实例
try {
Class printerCls = Class.forName(type.clsName);
printer = (IPrinter) printerCls.newInstance();
boolean result = printer.init(context);
if (result == true) {
printer.setPrinterName(type.typeName);
D.i(TAG, "初始化打印机成功,打印机器为:" + type.typeName);
}
return result;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
/** /**
* 获取当前打印接口 * 获取当前打印接口
* *
......
...@@ -30,6 +30,7 @@ public class SangdaPrinter extends BasePrinter { ...@@ -30,6 +30,7 @@ public class SangdaPrinter extends BasePrinter {
@Override @Override
public boolean init(Context context) { public boolean init(Context context) {
D.i(TAG, "开始初始化桑达打印机");
super.init(context); super.init(context);
mPrinter = PrinterAPI.getInstance(); mPrinter = PrinterAPI.getInstance();
if (isConnect()) { if (isConnect()) {
...@@ -45,8 +46,9 @@ public class SangdaPrinter extends BasePrinter { ...@@ -45,8 +46,9 @@ public class SangdaPrinter extends BasePrinter {
return false; return false;
} }
} catch (Exception e) { } catch (Exception e) {
D.e(TAG, "桑达打印机连接失败"); e.printStackTrace();
} }
D.e(TAG, "桑达打印机连接失败");
return false; return false;
} }
......
...@@ -26,6 +26,7 @@ public class YingtaiPrinter extends BasePrinter { ...@@ -26,6 +26,7 @@ public class YingtaiPrinter extends BasePrinter {
@Override @Override
public boolean init(Context context) { public boolean init(Context context) {
D.i(TAG,"开始初始化英泰打印机");
this.context = context; this.context = context;
mPrinter = PrinterAPI.getInstance(); mPrinter = PrinterAPI.getInstance();
io = new USBAPI(context); io = new USBAPI(context);
......
...@@ -31,6 +31,11 @@ public class SunmiWeighing extends BaseWeighing { ...@@ -31,6 +31,11 @@ public class SunmiWeighing extends BaseWeighing {
*/ */
ScaleService scaleService; ScaleService scaleService;
/**
* 服务连接器
*/
ServiceConnection serviceConnection;
/** /**
* 称重回调监听 * 称重回调监听
*/ */
...@@ -61,6 +66,33 @@ public class SunmiWeighing extends BaseWeighing { ...@@ -61,6 +66,33 @@ public class SunmiWeighing extends BaseWeighing {
@Override @Override
public boolean init(Context context) { public boolean init(Context context) {
this.context = context; this.context = context;
serviceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
scaleService = ScaleService.Stub.asInterface(service);
if (scaleService != null) {
//设置重量回调
try {
scaleService.getData(stub);
} catch (Exception e) {
e.printStackTrace();
D.i(TAG, "称重服务初始化失败!");
}
} else {
D.i(TAG, "防损称连接失败!");
}
}
@Override
public void onBindingDied(ComponentName name) {
D.i(TAG, "解绑成功 ComponentName==>" + name);
}
@Override
public void onServiceDisconnected(ComponentName name) {
scaleService = null;
}
};
Intent intent = new Intent(); Intent intent = new Intent();
intent.setPackage(SERVICE_PACKAGE); intent.setPackage(SERVICE_PACKAGE);
intent.setAction(SERVICE_ACTION); intent.setAction(SERVICE_ACTION);
...@@ -83,37 +115,6 @@ public class SunmiWeighing extends BaseWeighing { ...@@ -83,37 +115,6 @@ public class SunmiWeighing extends BaseWeighing {
return false; return false;
} }
/**
* 服务连接器
*/
ServiceConnection serviceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
scaleService = ScaleService.Stub.asInterface(service);
if (scaleService != null) {
//设置重量回调
try {
scaleService.getData(stub);
} catch (Exception e) {
e.printStackTrace();
D.i(TAG, "称重服务初始化失败!");
}
} else {
D.i(TAG, "防损称连接失败!");
}
}
@Override
public void onBindingDied(ComponentName name) {
D.i(TAG, "解绑成功 ComponentName==>" + name);
}
@Override
public void onServiceDisconnected(ComponentName name) {
scaleService = null;
}
};
@Override @Override
public boolean release() { public boolean release() {
if (context != null && serviceConnection != null) { if (context != null && serviceConnection != null) {
......
...@@ -4,6 +4,8 @@ import android.content.Context; ...@@ -4,6 +4,8 @@ import android.content.Context;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.util.Log; import android.util.Log;
import com.miya.weighing.utils.D;
public class WeighingManager { public class WeighingManager {
final static String TAG = WeighingManager.class.getSimpleName(); final static String TAG = WeighingManager.class.getSimpleName();
...@@ -80,10 +82,10 @@ public class WeighingManager { ...@@ -80,10 +82,10 @@ public class WeighingManager {
//轮询所有的称重服务,注意是同步方法 //轮询所有的称重服务,注意是同步方法
for (Type type : Type.values()) { for (Type type : Type.values()) {
//确保之前的称重实例已被销毁 //确保之前的称重实例已被销毁
if (weighing != null) {
weighing.release();
}
try { try {
if (weighing != null) {
weighing.release();
}
//反射新建实例 //反射新建实例
Class weighingClass = Class.forName(type.clsName); Class weighingClass = Class.forName(type.clsName);
weighing = (Weighing) weighingClass.newInstance(); weighing = (Weighing) weighingClass.newInstance();
...@@ -155,6 +157,10 @@ public class WeighingManager { ...@@ -155,6 +157,10 @@ public class WeighingManager {
Class weighingClass = Class.forName(type.clsName); Class weighingClass = Class.forName(type.clsName);
weighing = (Weighing) weighingClass.newInstance(); weighing = (Weighing) weighingClass.newInstance();
boolean result = weighing.init(context); boolean result = weighing.init(context);
if (result == true) {
weighing.setWeighingName(type.clsName);
D.i(TAG, "称重硬件初始化成功==>" + weighing.getWeighingName());
}
return result; return result;
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment