我嘗試連接自定義USB設備。我已經做了一切與Android的文檔一步一步,但我仍然在連接對象獲得空指針。這裏是我的活動:USB設備連接時出現NullPointerException
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
PendingIntent mPermissionIntent = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0);
IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION);
registerReceiver(usbReceiver, filter);
usbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
HashMap<String, UsbDevice> deviceList = usbManager.getDeviceList();
Iterator<UsbDevice> deviceIterator = deviceList.values().iterator();
while (deviceIterator.hasNext()) {
UsbDevice device = deviceIterator.next();
if (device.getVendorId() == 1659 && device.getProductId() == 8963) {
this.device = device;
usbManager.requestPermission(device, mPermissionIntent);
Toast.makeText(MainActivity.this, "vendor: " + device.getVendorId() + "ID " + device.getProductId() , Toast.LENGTH_SHORT).show();
break;
}
}
這是我嘗試使用USB設備連接:
mTestButton = (Button) findViewById(R.id.button);
mTestButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
usbInterface = device.getInterface(0);
if (connection != null) {
connection = usbManager.openDevice(device);
connection.claimInterface(usbInterface, false);
for (int i = 0; i < usbInterface.getEndpointCount(); i++) {
UsbEndpoint end = usbInterface.getEndpoint(i);
if (end.getDirection() == UsbConstants.USB_DIR_IN) {
usbEndpointIn = end;
} else {
usbEndpointOut = end;
}
}
//SEND START COMMAND TO THE USB DEVICE;
int result = connection.bulkTransfer(usbEndpointOut, "START".getBytes(), "START".getBytes().length, 1000);
Log.e("SEND RESULT", result + "");
//START READING in run method
readThread = new Thread((Runnable) MainActivity.this);
readThread.start();
} else {
Toast.makeText(MainActivity.this, "Connection is null", Toast.LENGTH_SHORT).show();
}
但連接仍然是空:/幫助,請。
你的USB許可添加到您的AndroidManifest.xml? –
獲取usbReceiver中的連接對象。在接收器中:boolean granted = arg1.getExtras()。getBoolean(UsbManager.EXTRA_PERMISSION_GRANTED); if(granted){ connection = usbManager.openDevice(device); } – Amit