2013-04-05 87 views
5

我目前正在嘗試開發一個訪問USB設備上的xml文件的應用程序。 我已閱讀有關Android USB Host的Google文檔。 現在我可以檢測到我的USB設備,發現它的規格(如PID/VID),但我無法訪問USB設備的文件:(Android主機:連接大容量存儲USB設備

這是我尋找設備的活動代碼:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_visu); 


    affichage = (TextView) findViewById(R.id.afficher); 
    context = VisuActivity.this.getApplicationContext(); 
    UsbManager manager = (UsbManager) context.getSystemService(Context.USB_SERVICE); 
    HashMap<String, UsbDevice> deviceList = manager.getDeviceList(); 

    Iterator<UsbDevice> deviceIterator = deviceList.values().iterator(); 

    if(deviceList.size()==1){ 
     while(deviceIterator.hasNext()){ 
      device = deviceIterator.next(); 

     } 

     UsbInterface mUsbInterface = device.getInterface(0); 
     UsbEndpoint endpoint = mUsbInterface.getEndpoint(0); 

     UsbDeviceConnection connection = manager.openDevice(device); 

    } 
} 
    /* What To Do Now ???? */ 

我試圖在互聯網上找到一些例子,但我現在輸了!:(

任何人知道如何讀做(並最終寫入)文件的USB設備上? 我聽說有一個海量存儲協議可以遵循,但我沒有找到或理解它!

+0

我可能在這裏完全錯了,這只是一個猜測。但是我會假設內核會在'/ mnt /'裏的某個地方掛載你的系統上的任何大容量存儲設備,這樣你就可以用普通的'文件'類 – Budius 2013-04-05 15:09:12

+0

訪問那裏的東西是的,我已經看過那種方式,但'/ mnt /'文件中沒有任何內容,或者甚至在UsbDevice對象描述的路徑中:'\ dev \ bus \ usb \ 002'!或只是一個'* .o'文件 – Manu 2013-04-05 15:24:37

+0

嗨@Manu,你找到任何解決方案?如果是的話,請讓我知道。我有同樣的問題。 – 2014-01-30 15:01:57

回答

-1

聽意圖過濾

<intent-filter> 
       <action android:name="android.intent.action.MEDIA_MOUNTED" /> 
       <action android:name="android.intent.action.MEDIA_UNMOUNTED" /> 

       <data android:scheme="file" /> 
</intent-filter> 

上述過濾器不會顯示一個USB文件是安裝,但是會通知您一些大容量存儲的安裝,但我猜你是幾乎肯定獲得USB連接接收器後,安裝設備是USB大容量存儲

所以當USB大容量存儲安裝,你會得到通知

public void onReceive(Context context, Intent intent) { 
    if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ 
     File file=new File("/storage/usbdisk"); 
       File[] listFiles = file.listFiles(); 
       for (File f : listFiles){ 
        f.getAbsoluteFilePath() 
        //you can do all file processing part here 
       } 
    } 
} 

支持USB文件路徑不標準,所以你可以列出所有文件「/秒torage「 如果文件名包含」usb「,那麼它的USB肯定在我的情況下」/ storage/usbdisk「