好的,所以我有Android 3.1平板電腦(宏碁Iconia Tab,這很棒),我可以使用Android USB API連接到USB大容量存儲設備(一個簡單的USB記憶棒)。在USB主機模式下安裝的USB存儲設備上的文件I/O(Android 3.1及更高版本)
我使用USB主機模式,找到設備,獲取連接到它的權限(使用BroadcastReceiver)。所有作品都很棒。問題是,我不知道如何將外部存儲目錄中的文件複製到USB記憶棒中。
這是我到目前爲止有:
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);
}
}
}
};
我閱讀文檔在Android開發Usb Host但它不是很明確,我發現了一個很不錯的教程Android Usb Host Tutorial - AdbTest但它使用異步通信。
我只想知道如何設置連接並使用端點(我沒有獲得端點部分,爲什麼需要它們)才能在USB存儲設備上創建一個新文件,並且在那裏複製另一個文件的內容,可能使用bulkTransfer()方法。
任何提示或指向更明確的文檔將不勝感激。
謝謝
哇,謝謝你的回答。我失去了得到答案的希望。我會今天檢查它,並接受你的答案,如果它的工作:)。 – Bandreid
@Bandreid我不明白你是如何指定你想要傳輸的。你在哪裏說「send me file'abc.txt'位於'/ docs/alphabet /'? –
@Mike Ortiz - 我沒有在我的問題中添加這部分代碼 – Bandreid