安卓蓝牙USB连接热敏打印机二


安卓使用USB连接打印机

大家都明白,USB连接硬件的话,基本上都需要安装驱动。

没有驱动的话,你的PC或者安卓是无法识别这个设备的。

本文主要使用 安卓 USB Host来实现打印机的连接。

关于 安卓USB Host不清楚的,可以去百度。

我们仍然使用上一篇提到的 芯华 xp-588iiH来打印。

第一,使用 UsbManager 来找到连接的所有USB设备

        // 取连接到设备上的USB设备集合
        UsbManager usbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
        HashMap<String, UsbDevice> map = usbManager.getDeviceList();

第二,根据 VendorID 和 ProductID 来过滤我们想要连接的设备


        UsbDevice usbDevice = null;
        for(UsbDevice device : map.values()){
            // 芯烨  XP-58IIH 的 VendorID = 1155 , ProductID = 1803
            int VendorID = device.getVendorId();
            int ProductID = device.getProductId();
            if(VendorID == 1155 && ProductID == 1803){ usbDevice = device; break; }
        }

第三,我们需要设置权限,去操作这个设备,稍后接受

       if(!usbManager.hasPermission(usbDevice)){
            Toast.makeText(this, "没有权限操作USB设备!", Toast.LENGTH_SHORT).show();
            return;
        }

第四,需找接口和写入数据点

    UsbInterface usbInterface = usbDevice.getInterface(0);

    UsbEndpoint outEndpoint = usbInterface.getEndpoint(1);

    这一点很重要,设备不同,接口和数据点不同,这个可以去遍历,代码包中有。

第五,打开并连接设备

        UsbDeviceConnection connection = usbManager.openDevice(usbDevice);
        connection.claimInterface(usbInterface, true);

第六,打印数据

        data += "\n\n\n\n\n\n";
        byte[] printData = null;
        try { printData = data.getBytes("gbk"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); }
        int out = connection.bulkTransfer(outEndpoint, printData, printData.length, 5000);

最后不要忘记关闭连接

      connection.close();


最有的问题,就是权限,有两种方式,一种是静态,一种动态。不懂去百度。

此处,我们使用静态方式,需要在AndroidManifest文件中添加如下:

<uses-feature android:name="android.hardware.usb.host" android:required="true"/>

<meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" android:resource="@xml/print_device_filter" />

<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />

添加的位置,请查看代码包,请注意@xml/print_device_filter文件,如下:

<resources>
    <usb-device vendor-id="1155" product-id="1803" />
    <usb-device vendor-id="1155" product-id="22339" />    
</resources>

没错,记忆好的人,就会发现,就是记载了 芯烨  XP-58IIH 的 VendorID 和ProductID

当USB连接到平板上面的时候,就会出现授权提示:



勾选默认,点击确定即可。

基本讲解完毕,代码包下载:http://download.csdn.net/detail/konkon2012/9383696

测试结果如下:



评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咆哮的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值