Estoy tratando de hacer una aplicación para leer el sistema de archivos de almacenamiento externo conectado mediante un cable OTG a XOOM con ICS. estoy utilizando este código para determinar IN y OUT extremo de una comunicación con el dispositivo flashandroid USBHost flash drive
final UsbDeviceConnection connection = manager.openDevice(device);
UsbInterface inf = device.getInterface(0);
if (!connection.claimInterface(inf, true)) {
Log.v("USB", "failed to claim interface");
}
UsbEndpoint epOut = null;
UsbEndpoint epIn = null;
// look for our bulk endpoints
for (int i = 0; i < inf.getEndpointCount(); i++) {
UsbEndpoint ep = inf.getEndpoint(i);
if (ep.getType() == UsbConstants.USB_ENDPOINT_XFER_BULK) {
if (ep.getDirection() == UsbConstants.USB_DIR_OUT) {
epOut = ep;
} else {
epIn = ep;
}
}
}
if (epOut == null || epIn == null) {
throw new IllegalArgumentException("not all endpoints found");
}
final UsbEndpoint inEndPoint = epIn;
funciona normal. entonces estoy tratando de leer primeros 512 bytes para obtener sector de arranque FAT32
ByteBuffer arg1 = ByteBuffer.allocate(512);
UsbRequest request = new UsbRequest();
request.initialize(connection, inEndPoint);
request.queue(arg1, inEndPoint.getMaxPacketSize());
UsbRequest result = connection.requestWait(); // halt here
connection.releaseInterface(inf);
connection.close();
pero no lee los datos desde el dispositivo conectado. todo este código se ejecutan en hilo separado después Granding permiso en el dispositivo
PendingIntent mPermissionIntent = PendingIntent.getBroadcast(USBHostSampleActivity.this, 0, new Intent(ACTION_USB_PERMISSION), 0);
IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION);
registerReceiver(mUsbReceiver, filter);
manager.requestPermission(lDevices.get(position),mPermissionIntent);
en Receptor de radio acabo de empezar con el nuevo hilo de código anterior; también traté de hacer llamada a USBDeviceConnection.controlTransfer
byte[] b = new byte[0x10];
int cTransfer = connection.controlTransfer(128, 6, 16, 0,b, 12, 0);
como en la muestra de libusb para obtener datos y/o hwstats f0 pero siempre devuelven -1 También probé reemplazar petición asincrónico utilizando USBRequst sincronizar bulkTransfers pero resultado es lo mismo. ¿Alguien ha trabajado con esta parte de Android SDK? Gracias!
Estoy tratando de hacer algo similar: conectar un dispositivo USB HID a Xoom que ejecute ICS. Después de investigar un poco, sé que Xooms enviados por EE. UU. La mayor parte del tiempo no tienen problemas con USB Host API, pero cualquier otro dispositivo (por ejemplo, enviado por la UE o Australia) ha implementado la API de manera que no permite Control de transferencia. Estoy tratando de flashear mi dispositivo con diferentes imágenes, le avisaré cuando lo suceda. ¿Has encontrado algo útil desde ayer? – syntagma
Sí, casi termino de implementar el análisis fat32 usando usbhost api. y puedo decirte que no necesitas usar controltransfer en absoluto. todo lo que necesita es bulk_transfer y la documentación oficial de HID – Alexandr