これで、Android 3.1タブレット(Acer Iconiaタブ、これは素晴らしい方法です)をAndroidで使用できますUSB大容量記憶装置(シンプルなUSBメモリスティック)に接続するためのUSB API。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 DevのUsb Host上のドキュメントを読んで、それは非常に明示的ではないと私はかなり良いチュートリアルAndroid Usb Host Tutorial - AdbTestが見つかりましたが、それは非同期通信を使用しています。
USBストレージデバイスに新しいファイルを作成できるようにするには、接続を設定してエンドポイントを使用する必要があります(私はエンドポイントの部分を取得できませんでした)おそらくbulkTransfer()メソッドを使用して、そこにある別のファイルの内容をコピーします。
より明示的なドキュメントへのヒントや指針は、非常に高く評価されます。
が
うわー、お返事ありがとうございます。私は答えを得ることを失った。私は今日それをチェックし、それがうまくいくならあなたの答えを受け入れるでしょう:)。 – Bandreid
@Bandreidどのように転送するかを指定する方法がわかりません。 "/ docs/alphabet /"にあるファイル 'abc.txt'を送ってください。 –
@Mike Ortiz - このコード部分は私の質問に追加しませんでした。 – Bandreid