2017-02-26 78 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

相關問題