Android主机:与大容量存储USB设备连接

时间:2013-04-05 14:52:32

标签: android usb host

我目前正在尝试开发一个在USB设备上访问xml文件的应用程序。 我已阅读有关Android USB Host的Google文档。 现在我可以检测到我的USB设备,发现它的规格(如PID / VID),但我无法访问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设备上读取(并最终写入)文件? 我听说有一个Mass Storage协议要遵循,但我找不到或理解它!

1 个答案:

答案 0 :(得分:-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的文件路径不是标准的,因此您可以列出&#34; / storage&#34;中的所有文件。 如果文件名包含&#34; usb&#34;那么它的usb肯定在我的情况下&#34; / storage / usbdisk&#34;