Ok, j'ai donc une tablette Android 3.1 (Acer Iconia Tab, qui est géniale) que je peux utiliser avec Android API USB pour se connecter à un périphérique de stockage de masse USB (une simple clé USB).Fichier E/S sur un périphérique de stockage USB monté en mode hôte USB (Android 3.1 et versions ultérieures)
J'utilise le mode hôte USB, trouve le périphérique, obtiens l'autorisation de s'y connecter (en utilisant BroadcastReceiver). Tout fonctionne très bien. Le problème est que je ne sais pas exactement quoi faire pour copier un fichier du répertoire de stockage externe sur la clé USB.
C'est ce que j'ai jusqu'à présent:
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);
}
}
}
};
J'ai lu la documentation sur l'Android Dev Usb Host mais ce n'est pas très explicite et j'ai trouvé un très bon tutoriel Android Usb Host Tutorial - AdbTest mais il utilise la communication asynchrone. Je veux juste savoir comment dois-je configurer la connexion et utiliser le point de terminaison (je n'ai pas obtenu la partie de point de terminaison, pourquoi ils sont nécessaires) pour pouvoir créer un nouveau fichier sur le périphérique de stockage USB et Copiez le contenu d'un fichier différent, probablement en utilisant la méthode bulkTransfer(). Des conseils ou des indications sur une documentation plus explicite seraient grandement appréciés.
Merci
Wow, merci de répondre. J'ai perdu l'espoir d'obtenir une réponse. Je vais le vérifier aujourd'hui et accepter votre réponse si cela fonctionne :). – Bandreid
@Bandreid Je ne comprends pas comment vous spécifiez ce que vous voulez transférer. Où dites-vous, "envoyez-moi le fichier 'abc.txt' situé dans '/ docs/alphabet /'? –
@Mike Ortiz - Je n'ai pas ajouté cette partie du code dans ma question – Bandreid