2017-02-26 76 views
2

我试图从USB驱动器上读取文件Android Things应用程序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(); 
    } 
} 

该款显示器的输出如下:

 
I: Mounted:/
I: Mounted: /dev 
I: Mounted: /dev 
I: Mounted: /dev/pts 
I: Mounted: /dev/memcg 
I: Mounted: /dev/cpuctl 
I: Mounted: /proc 
I: Mounted: /sys 
I: Mounted: /sys/fs/selinux 
I: Mounted: /sys/fs/pstore 
I: Mounted: /acct 
I: Mounted: /mnt 
I: Mounted: /mnt/runtime/default/emulated 
I: Mounted: /mnt/runtime/read/emulated 
I: Mounted: /mnt/runtime/write/emulated 
I: Mounted: /config 
I: Mounted: /data 
I: Mounted: /oem 
I: Mounted: /gapps 
I: Mounted: /storage 
I: Mounted: /storage/emulated 
I: Mounted: /storage/self 
 
I: Reading contents of /proc/partitions 
I: major minor #blocks name 
I: 1  0  8192 ram0 
I: 1  1  8192 ram1 
I: 1  2  8192 ram2 
I: 1  3  8192 ram3 
I: 1  4  8192 ram4 
I: 1  5  8192 ram5 
I: 1  6  8192 ram6 
I: 1  7  8192 ram7 
I: 1  8  8192 ram8 
I: 1  9  8192 ram9 
I: 1  10  8192 ram10 
I: 1  11  8192 ram11 
I: 1  12  8192 ram12 
I: 1  13  8192 ram13 
I: 1  14  8192 ram14 
I: 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 
I: 8  1 7845888 sda1 

然而,我的拇指驱动器是没有拆开的名单。所以我猜我需要以某种方式安装它。我如何安装拇指驱动器并访问它上面的文件?

回答

2

看起来像截至目前USB驱动器没有自动安装。为了使你的代码工作,我必须手动安装它。

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

ADB安装

  • 建立一个目录来安装到

    mkdir /mnt/usb 
    
  • 安装设备

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

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

我没有测试过,但你可以尝试以编程方式使用Runtime.getRuntime().exec(...)做相同的步骤顺序。请注意,有可能你会需要“抢” su首先这不是一个简单的任务,去出了问题的范围(看下文su我的意见)。

+0

权,直到你可以从一个应用程序,这是双方的期望和方法深深误做到这一点的建议 - “素”不能“虎子”,因为即使当它的工作原理只适用于(不太可能在这里!)它运行的子进程,而不是请求进程。 –

+0

@Chris Stratton,_“即使它起作用,su也不会被获得(这里不太可能!)”_为什么?你有没有为'Android Things'的任何版本列出'system/xbin'? 'su'已经发布了第一个开发人员预览版... – Onik

+0

@Chris Stratton,_“它只适用于它运行的子进程,而不是请求进程”_我从未告诉过它是另一种方式。您当然知道如何以编程方式读取/写入子进程。这个任务不是微不足道的,并且超出了问题的范围......下调答案似乎对我来说是不合理的...... – Onik

相关问题