Ok, tengo una tableta Android 3.1 (Acer Iconia Tab, que es genial por cierto) que puedo usar con Android USB API para conectar con un dispositivo de almacenamiento masivo USB (un simple dispositivo de memoria USB).Archivo de E/S en un dispositivo de almacenamiento USB montado en el modo de host USB (Android 3.1 y superior)
Uso el modo de host USB, encuentro el dispositivo, obtengo permiso para conectarme (usando BroadcastReceiver). Todo funciona genial El problema es que no sé exactamente qué hacer para copiar un archivo del Directorio de almacenamiento externo a la memoria USB.
Esto es lo que tengo hasta ahora:
final BroadcastReceiver mUsbReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (ACTION_USB_PERMISSION.equals(action)) {
synchronized (this) {
UsbDevice device = (UsbDevice) intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)) {
if (device != null) {
// Got to a point where I should set up connection
// I'm setting up a very simple connection, just want some file transfer
UsbInterface intf = device.getInterface(0);
UsbEndpoint endpoint = intf.getEndpoint(0);
UsbDeviceConnection connection = UsbManager.openDevice(device);
if (connection.claimInterface(intf, true)) {
UtilsAndDialogs.print(getApplicationContext(), "Connected to device");
// Copy file to USB...
} else
UtilsAndDialogs.print(getApplicationContext(), "Could not connect!");
}
} else {
UtilsAndDialogs.print(getApplicationContext(), "Permission denied");
Log.d(UtilsAndDialogs.LOG_TAG, "Permission denied for device " + device);
}
}
}
};
leí la documentación sobre el Dev Android Usb Host pero no es muy explícito y me encontré con un muy buen tutorial Android Usb Host Tutorial - AdbTest pero utiliza comunicación asíncrona.
Solo quiero saber cómo debo configurar la conexión y usar el punto final (no obtuve la parte del punto final, por qué son necesarios) para poder crear un nuevo archivo en el dispositivo de almacenamiento USB y copie el contenido de un archivo diferente allí, probablemente utilizando el método bulkTransfer().
Cualquier sugerencia o puntero a documentación más explícita sería muy apreciada.
Gracias
Guau, gracias por responder. Perdí la esperanza de obtener una respuesta. Lo verificaré hoy y aceptaré tu respuesta si funciona :). – Bandreid
@Bandreid No entiendo cómo especifica lo que desea transferir. ¿Dónde dices, "enviarme archivo 'abc.txt' ubicado en '/ docs/alphabet /'? –
@Mike Ortiz - No agregué esta parte del código en mi pregunta. – Bandreid