2013-04-05 15 views
5

Attualmente sto cercando di sviluppare un'applicazione che acceda ai file xml su un dispositivo USB. Ho letto la documentazione di Google sull'host USB di Android. ora posso rilevare il dispositivo USB, scoprire le sue specifiche (come PID/VID), ma non possono accedere ai file del dispositivo USB :(Host Android: connessione con un dispositivo USB di archiviazione di massa

Ecco il mio codice dell'attività di ricerca di dispositivi:

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 ???? */ 

ho cercato di trovare qualche esempio su internet, ma sono perduto ora! :(

Qualcuno sa come fare per leggere (ed eventualmente scrivere) un file su un dispositivo USB? I Ho sentito dire che c'è un protocollo di archiviazione di massa da seguire, ma non lo trovo o non lo capisco!

+0

Potrei sbagliarmi completamente qui, è solo una supposizione. Ma suppongo che il kernel possa montare qualsiasi dispositivo di archiviazione di massa sul tuo sistema da qualche parte all'interno di '/ mnt /' in modo da poter accedere alle cose lì con la normale classe 'File' – Budius

+0

Sì, ho già guardato in quel modo, ma non c'è nulla nel file/mnt /, o anche nel percorso descrittto dall'oggetto UsbDevice: '\ dev \ bus \ usb \ 002'! O solo un file '* .o' – Manu

+0

Ciao @Manu, hai trovato qualche soluzione? Se sì, per favore fatemelo sapere. Sto avendo lo stesso problema. –

risposta

-1

Ascolta filtro intento

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

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

sopra filtro non mostrerà che un file usb è il monte, ma si saranno informati alcuni di archiviazione di massa è il monte, ma immagino che dopo aver ottenuto il ricevitore USB collegati si sono praticamente sicuri dispositivo montato è usb di archiviazione

di massa in modo che quando la memoria di massa USB è montato si otterrà una notifica

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 
       } 
    } 
} 

percorso del file per USB non è standard in modo da poter elencare tutti i file in "/ s torage " se il nome del file contiene" usb "quindi il suo usb di sicuro nel mio caso"/storage/usbdisk "

Problemi correlati