试图使用新的UsbConnection()通过USB从Android应用程序连接到型号为ZDesigner GK420t的Zebra打印机,其中分配给USBConnection()构造函数的参数如下:
UsbManager manager = (UsbManager) mContext.getSystemService(Context.USB_SERVICE);
HashMap<String, UsbDevice> deviceList = manager.getDeviceList();
String DeviceName = "";
for (String s : deviceList.keySet()) {
DeviceName = s;
break;
}
UsbDevice device = deviceList.get(DeviceName);
connection = new UsbConnection(manager, device);
connection.open();
但是,connection.Open()导致以下异常:异常消息:无法连接到设备:NullPointerException异常类:com.zebra.sdk.comm.ConnectionException原因:java.lang.NullPointerException
到目前为止,我尝试确保分配给UsbManager和UsbDevice的参数不会被处理到UsbConnection()上,因为Nulls在connection.Open()之前追加Toasts,如下所示,其中Toasts分别打印为“ manager” ,“设备”:
Toast.makeText(mContext, manager == null ? "null manager" : "manager", Toast.LENGTH_LONG).show();
Toast.makeText(mContext, device == null ? "null device" : "device", Toast.LENGTH_LONG).show();
还通过在Toast打印的连接处附加如下Toast,然后在connection.Open()之前确保实例化的连接不为空:
[Toast.makeText(mContext,connection == null?“ null connection ==”:“ connection”,Toast.LENGTH_LONG).show();
无法确定是什么原因导致NullPointerException
请告知,预先感谢,
for (String s : deviceList.keySet()) {
DeviceName = s; //first device name could be "hp_keyboard"
break; //your device could be at second position
}
我建议您首先验证设备名称,例如...
for (String s : deviceList.keySet()) { if (s.equals("/dev/bus/usb/001/002")) { DeviceName = s; break; } } if (!TextUtils.isEmpty(DeviceName)) { UsbDevice device = deviceList.get(DeviceName); connection = new UsbConnection(manager, device); connection.open(); }
注意:使用后请不要忘记
close()
。