2013-04-05 10 views
5

Ich versuche gerade, eine Anwendung zu entwickeln, die auf XML-Dateien auf einem USB-Gerät zugreifen. Ich habe die Google-Dokumentation über Android USB Host gelesen. Jetzt kann ich mein USB-Gerät erkennen, entdecken Sie seine Spezifikationen (wie PID/VID), aber ich kann auf die Dateien des USB-Geräts nicht zugreifen :(Android Host: Verbindung mit einem USB-Massenspeichergerät

Hier ist mein Code der Tätigkeit für Geräte suchen:

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

ich habe versucht, einige Beispiele im Internet zu finden, aber ich bin jetzt verloren! :(

Jeder weiß, wie für Lese zu tun (und schreibt schließlich) eine Datei auf einem USB-Gerät? I Ich habe gehört, dass es ein Massenspeicherprotokoll zu folgen gibt, aber ich finde oder verstehe es nicht!

+0

Ich könnte hier völlig falsch sein, es ist nur eine Vermutung. Aber ich würde annehmen, dass der Kernel irgendein Massenspeichergerät auf Ihrem System irgendwo in '/ mnt /' mounten würde, so dass Sie dort einfach mit der normalen 'Datei'-Klasse darauf zugreifen können – Budius

+0

Ja, ich habe schon auf diese Weise gesehen, Aber es gibt nichts in der '/ mnt /' Datei, oder auch nicht in dem Pfad, der vom UsbDevice Objekt beschrieben wird: '\ dev \ bus \ usb \ 002'! Oder nur eine '* .o' Datei – Manu

+0

Hallo @Manu, hast du irgendeine Lösung gefunden? Wenn ja, lass es mich wissen. Ich habe das gleiche Problem. –

Antwort

-1

anhören Intent-Filter

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

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

über Filter zeigt nicht, dass ein USB-Datei Halterung ist, aber Sie werden als einige Speichermasse benachrichtigt Halterung ist, aber ich denke, nach Empfänger USB angeschlossen bekommen Sie ziemlich sicher sind, Einbaugerät ist uSB-Massenspeicher

so, wenn der uSB-Massenspeicher montiert ist, Sie

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

Dateipfad für uSB-Standard wird nicht benachrichtigt werden, so dass Sie alle Dateien in „/ s auflisten tone " wenn der Dateiname" USB "dann sein USB für sicher in meinem Fall"/storage/usbdisk "