//package com.telpo.tps508;
//
//import android.app.Activity;
//import android.content.Context;
//import android.graphics.Bitmap;
//import android.graphics.BitmapFactory;
//import android.graphics.Canvas;
//import android.graphics.Color;
//import android.graphics.Matrix;
//import android.os.Handler;
//import android.os.Looper;
//import android.util.Base64;
//import android.util.Log;
//
//import androidx.fragment.app.FragmentActivity;
//
//import com.caverock.androidsvg.SVG;
//import com.caverock.androidsvg.SVGParseException;
//import com.common.print.bean.PrintContentBean;
//import com.common.print.utils.CodeUtils;
//import com.telpo.tps550.api.TelpoException;
//import com.telpo.tps550.api.printer.UsbThermalPrinter;
//
//import java.io.ByteArrayInputStream;
//import java.io.InputStream;
//import java.util.ArrayList;
//import java.util.List;
//
///**
// * 小票打印
// */
//public class PrintUtile {
//    private static UsbThermalPrinter tps508Printer;
//    private static List<PrintContentBean> printContentBean=new ArrayList<>();
//    //用volatile关键字确保 instance 在多线程下的可见性
//    private static volatile PrintUtile instance = null;
//    private static OnPrintBaseListener listener;
//    static Activity mActivity;
//    //将构造方法私有化，禁止外部通过构造方法创建实例
//    private PrintUtile() {
//    }
//    //提供一个公共的访问方法，用于获取该类的唯一实例
//    public static PrintUtile getInstance(Context context) {
//        //如果instance为空，就进行实例化
//        if (instance == null) {
//            //保证多线程下只有一个线程进行实例化
//            synchronized (PrintUtile.class) {
//                //第二次判断，避免多线程下创建多个实例
//                if (instance == null) {
//                    instance = new PrintUtile(context);
//                }
//            }
//        }
//        return instance;
//    }
//    //构造函数私有化
//    public PrintUtile(Context context) {
//        if (context instanceof FragmentActivity) {
//            this.mActivity = (Activity) context;
//        }
//        tps508Printer = new UsbThermalPrinter(context);
//    }
//    //设备上电
//    public static void isPowerOn(){
//        if (tps508Printer==null){
//            return;
//        }
//        new Thread(new Runnable() {
//            @Override
//            public void run() {
//                try {
//                    tps508Printer.start(0);
//                } catch (TelpoException e) {
//                    // TODO Auto-generated catch block
//                    e.printStackTrace();
//                }
//                Log.i("PrintUtile_isPowerOn","小票打印机上电完成");
//
//            }
//        }).start();
//    }
//    //打印
//    public static void startPrint(List<PrintContentBean> printContent) {
//        printContentBean.clear();
//        printContentBean.addAll(printContent);
//        new TPS508PrintThread().start();
//    }
//    private static class TPS508PrintThread extends Thread{
//        @Override
//        public void run() {
//            // TODO Auto-generated method stub
//            super.run();
//            Log.e("HHArome","TPS508PrintThread.run");
//            if (printContentBean.size()<=0){
//                return;
//            }
//            String pversion,gray,sversion = null;
//            try {
//                tps508Printer.reset();
//                tps508Printer.setGray(5);//设置打印灰度值 level:0-7,默认为1
//                gray = "5";
//                pversion = tps508Printer.getVersion();
//                final String tempPversion = pversion;
//                int Algin=0;
//                int textTime=0;
//                int imageTime=0;
//                Log.e("HHArome","TPS508PrintThread");
//                for (int i = 0; i < printContentBean.size(); i++) {
//                    if (printContentBean.get(i).getText()!=null
//                            &&!printContentBean.get(i).getText().equals("")){
//                        textTime+=1000;
//                        if (printContentBean.get(i).getAlgin().equals("right")){
//                            Algin=UsbThermalPrinter.ALGIN_RIGHT;
//                        } else if (printContentBean.get(i).getAlgin().equals("center")) {
//                            Algin=UsbThermalPrinter.ALGIN_MIDDLE;
//                        }else {
//                            Algin=UsbThermalPrinter.ALGIN_LEFT;
//                        }
//                        tps508Printer.setAlgin(Algin);//设置打印对齐方式
//                        tps508Printer.setTextSize(printContentBean.get(i).getTextSize());
//                        tps508Printer.addString(printContentBean.get(i).getText());
//                        tps508Printer.setBold(printContentBean.get(i).isBold());
//                    } else if (printContentBean.get(i).getQrCodeText()!=null
//                            &&!printContentBean.get(i).getQrCodeText().equals("")) {
//                        Bitmap bitmap=CodeUtils.createQRCodeBitmap(printContentBean.get(i).getQrCodeText(), 800, 800, "UTF-8", "M", "1", Color.BLACK, Color.WHITE
//                                , null, 0.2F,null);
//                        if (printContentBean.get(i).getWidth()==0){
//                            printContentBean.get(i).setWidth(376);
//                        }
//                        if (printContentBean.get(i).getHeight()==0){
//                            printContentBean.get(i).setHeight(376);
//                        }
//                        Bitmap bitmap1=zoomImg(bitmap,
//                                printContentBean.get(i).getWidth(),
//                                printContentBean.get(i).getHeight());
//                        tps508Printer.printLogo(bitmap1,true);
//                    } else if (printContentBean.get(i).getImageBase64()!=null
//                            &&!printContentBean.get(i).getImageBase64().equals("")){
//                        imageTime+=2000;
//                        //Bitmap bitmap=svgStringToBitmap(printContentBean.get(i).getImageBase64());
//                        Bitmap bitmap=stringToBitmap(printContentBean.get(i).getImageBase64());
//
//                        if (printContentBean.get(i).getWidth()==0){
//                            printContentBean.get(i).setWidth(376);
//                        }
//                        if (printContentBean.get(i).getHeight()==0){
//                            printContentBean.get(i).setHeight(376);
//                        }
//                        Bitmap bitmap1=zoomImg(bitmap,
//                                printContentBean.get(i).getWidth(),
//                                printContentBean.get(i).getHeight());
//                        tps508Printer.printLogo(bitmap,true);
//                    }
//                }
//                tps508Printer.printString();//启动打印，打印完不走纸
//                tps508Printer.walkPaper(15);
//                Looper.prepare();
//                new Handler().postDelayed(new Runnable() {
//                    @Override
//                    public void run() {
//                        listener.PrintingComplete();
//                    }
//                },textTime+imageTime);
//                Looper.loop();
//                Thread.sleep(30000);
//            }
//            catch (TelpoException e) {
//                // TODO Auto-generated catch block
//                e.printStackTrace();
//                Log.e("HHArome","TelpoException");
//                Log.e("HHArome","TelpoException--e:"+e.toString());
//            }
//            catch (InterruptedException e) {
//                e.printStackTrace();
//                Log.e("HHArome","InterruptedException");
//            }
//            catch (Exception e) {
//                e.printStackTrace();
//                Log.e("HHArome","Exception");
//            }
//        }
//    }
//    //停止打印机服务
//    public static void stopPrint(){
//        tps508Printer.stop();
//    }
//    public static Bitmap zoomImg(Bitmap bm, int newWidth, int newHeight) {
//        Bitmap newbm = null;
//        if (bm != null) {
//            // 获得图片的宽高
//            int width = bm.getWidth();
//            int height = bm.getHeight();
//            // 计算缩放比例
//            float scaleWidth = ((float) newWidth) / width;
//            float scaleHeight = ((float) newHeight) / height;
//            // 取得想要缩放的matrix参数
//            Matrix matrix = new Matrix();
//            matrix.postScale(scaleWidth, scaleHeight);
//            // 得到新的图片
//            newbm = Bitmap.createBitmap(bm, 0, 0, width, height, matrix, true);
//        }
//        return newbm;
//    }
//    public static Bitmap stringToBitmap(String string) {
//        // 将字符串转换成Bitmap类型
//        Bitmap bitmap = null;
//        try {
//            byte[] bitmapArray;
//            bitmapArray = Base64.decode(string, Base64.DEFAULT);
//            bitmap = BitmapFactory.decodeByteArray(bitmapArray, 0,
//                    bitmapArray.length);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        return bitmap;
//    }
//    public static Bitmap svgStringToBitmap(String svgString) throws SVGParseException {
//        // 将Base64解码回字节数组
//        byte[] decodedBytes = Base64.decode(svgString, Base64.DEFAULT);
//
//        // 创建一个输入流用于读取SVG数据
//        InputStream svgStream = new ByteArrayInputStream(decodedBytes);
//
//        // 解析SVG
//        SVG svg = null;
//        svg = SVG.getFromInputStream(svgStream);
//        // 获取SVG的画布尺寸
//        int width = (int) svg.getDocumentWidth();
//        int height = (int) svg.getDocumentHeight();
//
//        // 创建一个Bitmap用于绘制SVG
//        Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
//        Canvas canvas = new Canvas(bitmap);
//
//        // 在Canvas上绘制SVG
//        svg.renderToCanvas(canvas);
//
//        return bitmap;
//    }
//    public static void setListener(OnPrintBaseListener lister) {
//        listener = lister;
//    }
//    public interface OnPrintBaseListener {
//        void PrintingComplete();
//    }
//}
