如何在Android Things应用程序上安装USB驱动器?

我正尝试从Raspberry Pi上的Android Things应用的USB驱动器读取文件。 我能够扫描挂载设备的列表,如下所示:

public static List<File> ScanForFiles(Context context){ ArrayList<File> files = new ArrayList<>(); try{ BufferedReader reader = new BufferedReader(new FileReader("/proc/self/mountinfo")); String line; while ((line = reader.readLine()) != null) { String[] columns = line.split(" "); Log.i(TAG, "Mounted: " + columns[4]); //files.addAll(getListFiles(new File(columns[4]))); } } catch (Exception ex){ ex.printStackTrace(); } printFileInformation("/proc/partitions"); return files; } private static void printFileInformation(String fileName){ Log.i("TitanTV", "Reading contents of " + fileName); try{ BufferedReader reader = new BufferedReader(new FileReader(fileName)); String line; while ((line = reader.readLine()) != null){ Log.i("TitanTV", line); } } catch (Exception ex){ ex.printStackTrace(); } } 

其中显示以下输出:

我:挂载:/
我:挂载:/ dev
我:挂载:/ dev
我:挂载:/ dev / pts
我:挂载:/ dev / memcg
我:挂载:/ dev / cpuctl
我:挂载:/ proc
我:挂载:/ sys
我:挂载:/ sys / fs / selinux
我:挂载:/ sys / fs / pstore
我:挂载:/ acct
我:挂载:/ mnt
我:挂载:/ mnt / runtime / default / emulated
 I:挂载:/ mnt / runtime / read / emulated
 I:挂载:/ mnt / runtime / write / emulated
我:挂载:/configuration
我:挂载:/数据
我:挂载:/ oem
我:挂载:/ gapps
我:挂载:/存储
我:挂载:/存储/模拟
我:挂载:/存储/自我
 I:读取/ proc /分区的内容
我:主要次要#块名称
我:1 0 8192 ram0
我:1 8192 ram1
我:1 2 8192 ram2
我:1 3 8192 ram3
我:1 4 8192 ram4
我:1 5 8192 ram5
我:1 6 8192 ram6
我:1 7 8192 ram7
我:1 8 8192 ram8
我:1 9 8192 ram9
我:1 10 8192 ram10
我:1 11 8192 ram11
我:1 12 8192 ram12
我:1 13 8192 ram13
 I:11418192 ram14
我:1 15 8192 ram15
 I:179 0 7761920 mmcblk0
 I:179 1 65536 mmcblk0p1
 I:179 2 1024 mmcblk0p2
 I:179 3 1024 mmcblk0p3
 I:179 4 32768 mmcblk0p4
 I:179 5 32768 mmcblk0p5
 I:179 6 524288 mmcblk0p6
 I:179 7 524288 mmcblk0p7
 I:179 8 64 mmcblk0p8
 I:179 9 64 mmcblk0p9
 I:179 10 1024 mmcblk0p10
 I:179 11 32768 mmcblk0p11
 I:179 12 32768 mmcblk0p12
 I:179 13 262144 mmcblk0p13
 I:179 14 262144 mmcblk0p14
 I:179 15 2683736 mmcblk0p15
 I:8 0 7847935 sda
我:8 1 7845888 sda1

但是,我的拇指驱动器不在列表中。 所以我猜我需要以某种方式安装它。 如何安装拇指驱动器并访问其上的文件?

Solutions Collecting From Web of "如何在Android Things应用程序上安装USB驱动器?"

看起来像现在USB驱动器没有自动安装。 为了使你的代码工作,我不得不手动安装它。

正如您在/proc分区中所看到的(从/proc/partitions ),USB驱动器被检测为sda

ADB安装

  • 建立一个目录来挂载

     mkdir /mnt/usb 
  • 安装设备

     mount -t vfat -o rw /dev/block/sda1 /mnt/usb 

现在,您应该能够通过ADB和应用程序( /mnt/usb也将被记录)列出(和管理)USB驱动器上的文件。

我没有测试过,但是你可以尝试使用Runtime.getRuntime().exec(...)编程的方式执行相同的步骤。 最有可能的su需要先获得。