2013-04-05 47 views
5

Tôi hiện đang cố phát triển ứng dụng truy cập tệp xml trên thiết bị USB. Tôi đã đọc Tài liệu của Google về Máy chủ lưu trữ USB Android. Bây giờ tôi có thể phát hiện thiết bị USB của tôi, khám phá các thông số kỹ thuật của nó (như PID/VID), nhưng tôi không thể truy cập vào các tệp của thiết bị USB: (Máy chủ Android: kết nối với thiết bị USB lưu trữ dung lượng lớn

Đây là mã của tôi về hoạt động tìm kiếm thiết bị:

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

tôi đã cố gắng để tìm thấy một số ví dụ trên internet, nhưng tôi bị mất bây giờ! :(

Bất cứ ai cũng biết làm thế nào để làm cho đọc (và cuối cùng viết) một tập tin trên một thiết bị USB? tôi đã nghe nói rằng có một giao thức lưu trữ khối lượng để làm theo, nhưng tôi không tìm thấy hoặc hiểu nó!

+0

Tôi có thể hoàn toàn sai ở đây, đó chỉ là phỏng đoán. Nhưng tôi giả sử rằng hạt nhân sẽ gắn bất kỳ thiết bị lưu trữ khối nào trên hệ thống của bạn ở đâu đó bên trong '/ mnt /' để bạn có thể truy cập các công cụ trong đó với lớp 'File' bình thường – Budius

+0

Vâng, tôi đã nhìn theo cách đó, nhưng không có gì trong tệp '/ mnt /', hoặc thậm chí nếu trong đường dẫn được mô tả bởi đối tượng UsbDevice: '\ dev \ bus \ usb \ 002'! Hoặc chỉ một tệp '* .o' ' – Manu

+0

Hi @Manu, bạn có tìm thấy giải pháp nào không? Nếu có, vui lòng cho tôi biết. Tôi gặp vấn đề tương tự. –

Trả lời

-1

Nghe lọc ý định

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

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

trên bộ lọc sẽ không cho thấy một file usb là núi nhưng bạn sẽ được thông báo như một số mass storage là núi nhưng tôi đoán sau khi nhận được usb gắn liền nhận bạn là khá nhiều chắc chắn thiết bị gắn là uSB Mass Storage

vì vậy khi mass storage usb được gắn, bạn sẽ nhận được thông báo

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

đường dẫn tập tin cho usb là không đạt tiêu chuẩn, do đó bạn có thể liệt kê tất cả các tập tin trong "/ s torage " nếu tên tệp chứa" usb "thì usb chắc chắn trong trường hợp của tôi"/storage/usbdisk "