admin管理员组文章数量:1599426
安卓使用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/detail/konkon2012/9383696
测试结果如下:
版权声明:本文标题:安卓蓝牙USB连接热敏打印机二 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1728317017a1153557.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论