Datei-E / A auf einem aktivierten USB-Speichergerät im USB-Host-Modus (Android 3.1 und höher)

9

Ok, ich habe also ein Android 3.1 Tablet (Acer Iconia Tab, das übrigens super ist), das ich mit Android USB API verwenden kann, um es mit einem USB-Massenspeichergerät (einem einfachen USB-Speicherstick) zu verbinden.

Ich benutze den USB-Host-Modus, finde das Gerät, erhalte die Erlaubnis, sich mit ihm zu verbinden (mit BroadcastReceiver). Alles funktioniert super. Das Problem ist, dass ich nicht genau weiß, was zu tun ist, um eine Datei aus dem External Storage Directory auf den USB-Speicherstick zu kopieren.

Das habe ich bisher:

%Vor%

Ich lese die Dokumentation auf dem Android Dev Usb-Host , aber es ist nicht sehr explizit und ich fand ein ziemlich gutes Tutorial Android Usb Host Tutorial - AdbTest , aber es verwendet asynchrone Kommunikation.

Ich möchte nur wissen, wie ich die Verbindung einrichten und den Endpunkt verwenden sollte (ich habe den Endpunkt nicht bekommen, warum sie benötigt werden), um einfach eine neue Datei auf dem USB-Speichergerät erstellen und kopieren zu können Inhalt einer anderen Datei dort, wahrscheinlich mit der Methode bulkTransfer ().

Alle Hinweise oder Hinweise auf explizitere Dokumentation würden sehr geschätzt werden.

Danke

    
Bandreid 10.09.2011, 12:37
quelle

2 Antworten

1

Ihre Verbindung ist eingerichtet, die Endpunkte sind grundsätzlich Flags auf dem Gerät mit Informationen zur Datenübertragung.

Für deinen Stick musst du etwas wie VV machen, um herauszufinden, wie viele Endpunkte du hast,

%Vor%

Damit können Sie herausfinden, ob der Endpunkt, an dem Sie interessiert sind, ein Bulk ist (usb constants docs hat andere Typen) und ob Sie Daten an oder von dem Gerät an diesem Endpunkt senden können (usb_dir_in zum Testen für). Welchen Endpunkt Sie haben möchten, ist gerätespezifisch, mein Beispiel beginnt bei 0, Ihr wird anders sein

Um die Datei erneut zu speichern, müssen Sie etwas wie

tun %Vor%

Ich habe den Puffer jedes Mal gespeichert, wenn er mit einem Datei-Ausgabestream gefüllt wird, dies ist wahrscheinlich ineffizient (da ich annahm, dass der Massentransfer bereits irgendwo speichert), aber die Dokumentation ist knapp.

    
greg 12.12.2011, 22:29
quelle
4

Die Android-USB-Host-APIs bieten nur reinen USB-Zugriff. Um auf Dateien auf einem Speichergerät zugreifen zu können, muss Ihre App selbst den USB-Massenspeichermodus über der USB-API und dann den Code eines Dateisystems implementieren.

In einigen vom Hersteller angepassten Versionen von Android wird ein USB-Massenspeichergerät mit einem anerkannten Dateisystem auf Betriebssystemebene installiert, das ist jedoch nicht Teil des Standard-Android. Es ist auch möglich, dass Sie, wenn Sie ein gerootetes Gerät haben, dies verwenden können, um den Kernel davon zu überzeugen, ein solches Dateisystem zu mounten.

    
Chris Stratton 09.10.2014 18:06
quelle

Tags und Links