Ok, quindi ho un tablet Android 3.1 (Acer Iconia Tab, che comunque è ottimo) che posso utilizzare con Android USB API per connettersi con un dispositivo di archiviazione di massa USB (una semplice memory stick USB).I/O file su un dispositivo di archiviazione USB montato in modalità Host USB (Android 3.1 e versioni successive)
Io uso la modalità Host USB, trova il dispositivo, ho il permesso di collegarci ad esso (usando BroadcastReceiver). Tutto funziona alla grande. Il problema è che non so esattamente cosa fare per copiare un file dalla directory di archiviazione esterna alla memory stick USB.
Questo è quello che ho finora:
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);
}
}
}
};
ho letto la documentazione su Android Dev Usb Host ma non è molto esplicito e ho trovato un buon tutorial di Android Usb Host Tutorial - AdbTest ma utilizza la comunicazione asincrona.
Voglio solo sapere come configurare la connessione e utilizzare l'endpoint (non ho ottenuto la parte dell'endpoint, perché sono necessari) per poter creare un nuovo file sul dispositivo di archiviazione USB e copiare i contenuti di un file diverso lì, probabilmente usando il metodo bulkTransfer().
Qualsiasi suggerimento o puntatore a documentazione più esplicita sarebbe molto apprezzato.
Grazie
Wow, grazie per aver risposto. Ho perso la speranza di ottenere una risposta. Lo controllerò oggi e accetterò la tua risposta se funziona :). – Bandreid
@Bandreid Non capisco come si specifica ciò che si desidera trasferire. Dove dici "inviami il file 'abc.txt' che si trova in"/docs/alphabet/'? –
@ Mike Ortiz - Non ho aggiunto questa parte di codice nella mia domanda – Bandreid