Ok, więc mam tablet z Androidem 3.1 (Acer Iconia Tab, który jest świetny przy okazji), którego mogę używać z Androidem Interfejs USB API do połączenia z urządzeniem pamięci masowej USB (zwykła pamięć USB).We/wy na plikach na podłączonym urządzeniu pamięci USB w trybie hosta USB (Android 3.1 i nowsze)
Używam trybu hosta USB, znajdź urządzenie, uzyskaj uprawnienia do łączenia się z nim (używając BroadcastReceiver). Wszystko działa świetnie. Problem polega na tym, że nie wiem dokładnie, co zrobić, aby skopiować plik z katalogu zewnętrznego na nośnik USB.
To, co mam tak daleko:
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);
}
}
}
};
Czytałem dokumentację na Android Dev Usb Host ale to nie jest bardzo wyraźny i znalazłem całkiem dobry samouczek Android Usb Host Tutorial - AdbTest ale wykorzystuje asynchroniczną komunikację.
Po prostu chcę wiedzieć, jak skonfigurować połączenie i użyć punktu końcowego (nie dostałem części punktu końcowego, dlaczego są potrzebne), aby móc po prostu utworzyć nowy plik na urządzeniu pamięci masowej USB i skopiuj zawartość innego pliku, prawdopodobnie używając metody bulkTransfer().
Wszelkie wskazówki lub wskazówki do bardziej wyraźnej dokumentacji byłyby mile widziane.
Dziękuję
Wow, dzięki za odpowiedź. Straciłem nadzieję na odpowiedź. Sprawdzę to dzisiaj i zaakceptuję twoją odpowiedź, jeśli zadziała :). – Bandreid
@Bandreid Nie rozumiem, jak określasz, co chcesz przenieść. Gdzie mówisz: "wyślij mi plik" abc.txt "z"/docs/alphabet/"? –
@Mike Ortiz - Nie dodałem tej części kodu w moim pytaniu – Bandreid