我目前正在尝试开发一个在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协议要遵循,但我找不到或理解它!
答案 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;