2013-04-05 2 views
5

J'essaie actuellement de développer une application qui accède aux fichiers xml sur un périphérique USB. J'ai lu la documentation Google sur l'hôte USB Android. Maintenant, je peux détecter mon périphérique USB, découvrez ses spécifications (comme PID/VID), mais je ne peux pas accéder aux fichiers du périphérique USB :(Hôte Android: connexion avec un périphérique USB de stockage de masse

Voici mon code de l'activité à la recherche d'appareils:

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

j'ai essayé de trouver un exemple sur Internet, mais je suis perdu maintenant! :(

Tout le monde sait comment faire pour la lecture (et éventuellement écrire) un fichier sur un périphérique USB? I J'ai entendu dire qu'il y avait un protocole de stockage de masse à suivre, mais je ne le trouve pas ou je ne le comprends pas!

+0

Je pourrais me tromper complètement ici, c'est juste une supposition. Mais je supposerais que le noyau serait monté n'importe quel périphérique de stockage de masse sur votre système quelque part dans '/ mnt /' de sorte que vous puissiez simplement y accéder avec la classe normale 'File' – Budius

+0

Oui, j'ai déjà regardé de cette façon, mais il n'y a rien dans le fichier '/ mnt /', ou même dans le chemin décrit par l'objet UsbDevice: '\ dev \ bus \ usb \ 002'! Ou juste un fichier '* .o' – Manu

+0

Bonjour @Manu, avez-vous trouvé une solution? Si oui, s'il vous plaît faites le moi savoir. J'ai le même problème. –

Répondre

-1

Écouter filtre intention

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

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

ci-dessus filtre ne montre qu'un fichier USB est le mont, mais vous serez informé que certains stockage de masse est le mont mais je suppose que après avoir obtenu récepteur attaché usb vous êtes à peu près sûr dispositif monté est le stockage de masse USB

donc quand le stockage de masse USB est monté, vous recevrez une notification

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 
       } 
    } 
} 
chemin du fichier

pour usb est pas standard de sorte que vous pouvez lister tous les fichiers dans «/s torage " si le nom de fichier contient" usb "alors son usb bien sûr dans mon cas"/storage/usbdisk "

Questions connexes