好的,所以我有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