5

我目前正在尝试开发一个访问 USB 设备上的 xml 文件的应用程序。我已阅读有关 Android USB 主机的 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 设备上读取(并最终写入)文件?我听说有要遵循的大容量存储协议,但我没有找到或理解它!

4

1 回答 1

-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 的文件路径不是标准的,因此如果文件名包含“usb”,那么您可以在“/storage”中列出所有文件,那么在我的情况下,它的 usb 肯定是“/storage/usbdisk”

于 2014-11-27T18:52:40.017 回答