您需要使用 MTP 文件传输。由于您使用的是 Windows,因此最好将 COM 与 Windows PortableDeviceApiLib 库一起使用。这不是一件容易的事。上述评论之一中的 WPD API 链接是一个很好的参考。
您还应该安装Microsoft MTP Simulator 3.0并查看随附的示例代码。
在 MTP 中,存储在设备上的每个文件或文件夹都是一个带有句柄的对象。要检索文件或文件夹,您必须检索对象句柄,然后通过检查其 objectFormatCode 属性来检查它是文件还是文件夹。文件夹的对象格式代码设置为 0x3001。您可以从MTP Spec获取整个列表。
设置 WPD/PTP 包装器后,您可以开始向设备发送 MTP 命令。要从设备获取文件,过程如下。
- 通过调用 getStorageIds() 获取可用的存储 ID;
- 对于您感兴趣的存储 ID(内部存储/SD 卡),调用 getObjectHandles() 以获取所有文件/文件夹的列表。
- 循环遍历根文件夹句柄以查找您感兴趣的文件。对于您获得的每个句柄,调用 getObjectInfo() 以获取有关该句柄的详细信息。
- 一旦有了名称和格式代码与您要查找的句柄相匹配的句柄,就调用 getObject() 函数下载文件。
另请记住,您不能同时下载所有内容。您必须为需要下载的每个文件句柄调用 getObject()。