1

この質問を読んだ後: Android USB Permissions Dialog never appearといくつかのテストを実行すると、次の問題が発生します。

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 は常に -1 を返します

4

2 に答える 2

1

mConnection は別のスレッドであり、その新しいスレッドはこの UsbDeviceConnection にアクセスできないため、null です。アプリケーションを再構築し、USB ホストをより慎重に追跡するか、少なくとも mConnection をシングルトンに配置してみてください。

また、アプリケーションのようなプロキシに接続することもできます: Net2usb

于 2015-02-03T12:10:16.047 に答える