热敏打印PrinterInstance

public class MainActivity extends AppCompatActivity {
    private static final String ACTION_USB_PERMISSION = "com.android.usb.USB_PERMISSION";
    private PrinterInstance lll;
    private UsbManager manager;
    private int printingStatus;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        UsbDevice usbDevice = showUsbList();
        Log.e("213123","123333333333333");
        if (usbDevice!=null){
            //广播
                    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0);
                    IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION);
                    filter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);
                    filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);
                    manager.requestPermission(usbDevice, pendingIntent);
            //PrinterInstance初始化
            lll = PrinterInstance.getPrinterInstance(this, usbDevice, new Handler() {
                @Override
                public void handleMessage(Message msg) {
                    super.handleMessage(msg);
                    int what = msg.what;
                    Log.d("lll", what + "");
                }

                @Override
                public void dispatchMessage(Message msg) {
                    super.dispatchMessage(msg);
                    int what = msg.what;
//                    Object obj = msg.obj;
//                    String s = obj.toString();
//                    Log.e("shiiii",s);
                    switch (what){
                        case PrinterConstants.Connect.SUCCESS:
                            Toast.makeText(MainActivity.this,"链接成功",Toast.LENGTH_LONG).show();
                            initPrint();
                            break;
                        case PrinterConstants.Connect.FAILED:
                            Toast.makeText(MainActivity.this,"链接失败",Toast.LENGTH_LONG).show();

                            break;
                        case PrinterConstants.Connect.CLOSED:
                            Toast.makeText(MainActivity.this,"链接关闭",Toast.LENGTH_LONG).show();

                            break;
                        case PrinterConstants.Connect.NODEVICE:

                            break;

                    }
                }
            });

            boolean b = lll.openConnection();
            if (b){
                Log.e("打印机","链接成功");


            }else {
                Log.e("打印机","连接失败");
            }
        }
    }

    /**
     * 打印的api
     */
    private void initPrint() {
        if (lll==null){
            return;
        }
        lll.initPrinter();
        lll.setFont(0,3,3,0,0);
        lll.setPrinter(PrinterConstants.Command.ALIGN, PrinterConstants.Command.ALIGN_CENTER);
        //获得打印机的状态
        int currentStatus = lll.getCurrentStatus();
        switch (currentStatus){
            case 0:  //正常"
                Log.e("再打印","再打印");
                lll.printText("12312312312312312312312312321321\r\n");
//                PrinterConstants.PRotate pRotate = PrinterConstants.PRotate.valueOf("10");
//                lll.print(pRotate,0);
                //切纸
                lll.cutPaper(65, 1);
                //获得打印是否完成
                printingStatus =lll.getPrintingStatus(30 * 1000);
                break;
            case -1:  //接收数据异常
                break;
            case -2:  //缺纸
                break;
            case -3:  //纸将打尽
                break;
            case -4:  //打印机开盖
                break;
            case -5:  //发送数据异常
                break;
        }

        switch (printingStatus){
            case 0:  //打印完成
                Toast.makeText(MainActivity.this,"打印完成",Toast.LENGTH_LONG).show();

                break;
            case -1:  //未知异常
                Toast.makeText(MainActivity.this,"未知异常",Toast.LENGTH_LONG).show();

                break;
            case -2:  //当前打印机正在打印
                Toast.makeText(MainActivity.this,"当前打印机正在打印",Toast.LENGTH_LONG).show();

                break;
            case -3:  //打印未完成,缺纸
                Toast.makeText(MainActivity.this,"打印未完成,缺纸 ",Toast.LENGTH_LONG).show();

                break;
            case -4:  //打印未完成,纸舱盖开盖
                Toast.makeText(MainActivity.this," 打印未完成,纸舱盖开盖 ",Toast.LENGTH_LONG).show();

                break;
            case -5:  //打印未完成,与打印机通信失败
                Toast.makeText(MainActivity.this," 打印未完成,与打印机通信失败 ",Toast.LENGTH_LONG).show();

                break;
            case -6:  //数据发送失败,通信异常
                Toast.makeText(MainActivity.this,"  数据发送失败,通信异常 ",Toast.LENGTH_LONG).show();

                break;
            case -7:  //接收数据格式不正确
                Toast.makeText(MainActivity.this,"接收数据格式不正确 ",Toast.LENGTH_LONG).show();

                break;
        }
    }

    /***
     * 获得USB的api
     * @return
     */
    public UsbDevice showUsbList() {
        manager = (UsbManager) getSystemService(Context.USB_SERVICE);
        HashMap<String, UsbDevice> deviceList = manager.getDeviceList();
        Log.e("集合",deviceList.size()+"");

        UsbDevice vv=null;
        Iterator<UsbDevice> deviceIterator = deviceList.values().iterator();

        StringBuilder sb = new StringBuilder();
        while (deviceIterator.hasNext()) {
            UsbDevice usbDevice = deviceIterator.next();
            sb.append("DeviceName=" + usbDevice.getDeviceName() + "\n");
            sb.append("DeviceId=" + usbDevice.getDeviceId() + "\n");
            sb.append("VendorId=" + usbDevice.getVendorId() + "\n");
            sb.append("ProductId=" + usbDevice.getProductId() + "\n");
            sb.append("DeviceClass=" + usbDevice.getDeviceClass() + "\n");
            int deviceClass = usbDevice.getDeviceClass();
            if (deviceClass == 0) {
                UsbInterface anInterface = usbDevice.getInterface(0);
                int interfaceClass = anInterface.getInterfaceClass();

//                sb.append("device Class 为0-------------\n");
//             sb.append("Interface.describeContents()=" + anInterface.describeContents() + "\n");
//                sb.append   ("Interface.getEndpointCount()=" + anInterface.getEndpointCount() + "\n");
//                sb.append("Interface.getId()=" + anInterface.getId() + "\n");
                //http://blog.csdn.net/u013686019/article/details/50409421
                //http://www.usb.org/developers/defined_class/#BaseClassFFh
                //通过下面的InterfaceClass 来判断到底是哪一种的,例如7就是打印机,8就是usb的U盘
                sb.append("Interface.getInterfaceClass()=" + anInterface.getInterfaceClass() + "\n");
                Log.e("anInterface","="+anInterface.getInterfaceClass());
                if (anInterface.getInterfaceClass() == 7) {
                    sb.append("此设备是打印机\n");
                    Log.e("此设备是打印机","此设备是打印机");
                    vv=usbDevice;

                    //广播
//                    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0);
//                    IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION);
//                    filter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);
//                    filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);
//                    manager.requestPermission(usbDevice, pendingIntent);
                    return usbDevice;
                } else if (anInterface.getInterfaceClass() == 8) {
                    sb.append("此设备是U盘\n");
                    Log.e("此设备是U盘","此设备是U盘");
                    vv=null;
                }
//                sb.append("anInterface.getInterfaceProtocol()=" + anInterface.getInterfaceProtocol() + "\n");
//                sb.append("anInterface.getInterfaceSubclass()=" + anInterface.getInterfaceSubclass() + "\n");
//                sb.append("device Class 为0------end-------\n");
            }
//
//            sb.append("DeviceProtocol=" + usbDevice.getDeviceProtocol() + "\n");
//            sb.append("DeviceSubclass=" + usbDevice.getDeviceSubclass() + "\n");
//            sb.append("+++++++++++++++++++++++++++\n");
//            sb.append("                           \n");
        }


        //Log.d("liexingshi",sb.toString());
      //  textView.setText(sb);
        return vv;
    }


}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值