我有一个连接到Android设备的外部大容量存储设备。在根目录中,有几个.BIN文件需要读取到我的应用程序中。我能够连接到设备并使用UsbDeviceConnection接收USB许可。
private final BroadcastReceiver mUsbReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String output = outputTV.getText().toString();
String action = intent.getAction();
outputTV.setText(outputTV.getText() + "\n" + " ACTION: " + action);
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) {
if (device.getInterfaceCount() > 0) {
usbIntf = device.getInterface(0);
usbEndIn = usbIntf.getEndpoint(0);
usbEndOut = usbIntf.getEndpoint(1);
usbConnection = mUsbManager.openDevice(device);
usbConnection.claimInterface(usbIntf, true);
byte[] buffer = new byte[usbEndIn.getMaxPacketSize()];
StringBuilder str = new StringBuilder();
int retVal = usbConnection.bulkTransfer(usbEndIn, buffer, usbEndIn.getMaxPacketSize(), 2000);
for (int i = 2; i < buffer.length; i++) {
if (buffer[i] != 0) {
str.append((char) buffer[i]);
}}}}}}}}};
连接后,我可以看到我有一个带有2个批量传输端点的大容量存储接口(一进一出)。
当使用usbConnection.bulkTransfer时,我收到-1返回和一个空缓冲区。因此,我在接收数据时遇到了麻烦。一旦越过障碍,数据将是什么样?如何继续从设备中提取所有文件?有没有一种方法可以将文件逐个文件传输到我的应用程序?有没有更好的方法来解决这个问题?
好吧,我最终走了一条完全不同的路线。我现在正在使用标准的java.io.File并通过目录结构进行工作。我的代码尚未完善,但这是要点…
private void setupFileIO() {
File storageDir = new File("/storage");
File files[] = storageDir.listFiles();
File directory = null;
if (files != null && files.length > 0) {
for (File f : files) {
if (f.isDirectory() && f.getPath().toLowerCase().contains("usb") && f.canRead()) {
directory = f;
break;
}
}
}
if (directory != null && directory.canRead()) {
File file[] = directory.listFiles();
if (file != null && file.length > 0) {
for (int i = 0; i < file.length; i++) {
String filePath = file[i].getPath();
String extension = Files.getFileExtension(filePath);
if (file[i].isFile() && file[i].canRead() && extension.equalsIgnoreCase("bin")) {
try {
byte[] r = Files.toByteArray(file[i]);
String result = BaseEncoding.base16().encode(r);
// do something with result
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
}
问题内容: 因此,我将这根小电缆插入您的手机,该手机的另一侧具有USB端口,例如,您可以在其中插入闪存驱动器 当我插入闪存驱动器时,我收到一条通知,内容为: 已连接USB大容量存储 然后,当我启动文件浏览器应用程序时,我可以看到驱动器 位于: / storage / UsbDriveA / 太好了,但是我想知道如何在 代码中访问闪存驱动器。轻松访问SD卡: 但是,对于闪存驱动器,您将如何做呢?提前
所以我有一个小电缆,你可以插入你的手机,在另一边有一个USB端口,你可以在那里插入闪存驱动器,比如,你可以在这里看到: 当我插入闪存驱动器时,我得到一个通知,上面写着: 已连接USB大容量存储器
我有一个应用程序,应该给一些USB大容量存储设备的许可。因此,阻止USB大容量存储设备的方法不应该是非常静态的!
我需要帮助使用Firebase函数将大型JSON文件从Firebase存储流到Firestore。 我想将几个大的换行JSON文件(11x700MB)传输到FireStore。我正在尝试从Firebase存储加载它们,对文件进行流式处理,并将内容写入Firestore集合。 我现在不知道该怎么做,但我很感激你的帮助。
我正在尝试获取文件名(以及文件路径),从作为usb大容量存储的Garmin设备。将设备连接到计算机,文件路径为g:\garmin。使用OTG和Explorer将其连接到android平板(我检查了应用程序设置-包名为:com.android.rk),文件路径为USB/Garmin。使用ES文件资源管理器,我已经看到文件路径是mnt/usb_storage/garmin。因此,在代码中,当我试图从文
我正在使用Flutter开发一个Android应用程序。在我的应用程序中,有一个功能,用户可以从他们的设备上传图片。为了存储图像,我使用firebase云存储&下面是我用于将文件上传到firebase云存储的部分代码。 这里有3个相关的flutter插件,我正在使用,上面的帮助代码上传文件。 一切正常。不过,文件上传要花很多时间。几乎需要40-50秒才能完成步骤3()。有时也是1-半分钟。关于我的