将纯文本发送到Android中的USB打印机

时间:2013-05-14 10:02:36

标签: android printing usb

在阅读了这个问题:Android USB Permissions Dialog never appears并做了一些测试之后,我遇到了以下问题:

我也需要打印到USB打印机(只有纯文本),我建立连接,对话框出现,但我现在不做该做什么。任何人都可以帮我完成openPort(aDevice)中必须做的事情吗?

这是我尝试的:

................

if (mUsbManager.hasPermission(mDevice)){
final UsbDeviceConnection mConnection = mUsbManager.openDevice(mDevice);
intf = mDevice.getInterface(0);
for (int i = 0; i < intf.getEndpointCount(); i++) {
   UsbEndpoint ep = intf.getEndpoint(i);
   if (ep.getType() == UsbConstants.USB_ENDPOINT_XFER_BULK) {
           if (ep.getDirection() == UsbConstants.USB_DIR_OUT) {
           mEndpointBulkOut = ep;
               UsbDeviceConnection connection = mUsbManager.openDevice(mDevice);
           if(connection!=null)
           {
             Log.e(TAG," Conectado");
           }
           connection.claimInterface(intf, forceClaim);
           //Integer res = connection.bulkTransfer(mEndpointBulkOut, bytes, bytes.length, TIMEOUT);
           new Thread(new Runnable() 
           { 
           @Override 
           public void run() 
           { 
               // TODO Auto-generated method stub 
               Log.i(TAG, "in run thread"); 
               int b = mConnection.bulkTransfer(mEndpointBulkOut, bytes, bytes.length, 100000); 
               Log.i(TAG, "b-->" + b); 
               } 
               }).start(); 

               connection.releaseInterface(intf);
           break;
       }
 }
}
}
else
 mUsbManager.requestPermission(mDevice, mPermissionIntent);
break;`

.......

mConnection.bulkTransfer alwais return -1

2 个答案:

答案 0 :(得分:1)

您的mConnection为null,因为它是另一个线程,并且新线程无法访问此UsbDeviceConnection。 重建您的应用程序,更仔细地遵循USB host或者至少尝试将mConnection置于Singleton中。

您也可以尝试连接代理,例如应用程序:Net2usb

答案 1 :(得分:0)

试试这个网站http://www.starmicronics.com/support/SDKDocumentation.aspx。下载sdk并试一试。