我试图通过电缆将Android设备连接到一个(64位Windows 7)PC,然后从Android编程方式检索一些文件到PC。 (注:我需要一个特定的设备,Moverio BT-200,并且我遇到了驱动程序问题;所以请不建议使用adb ;-)我知道这是简单和快速的方式,但它不是可行)如何将文件从Android设备使用USB传输到PC和/或WPD
我发现,我的设备可以被看作是一个Windows便携式设备(WPD)。我在C#中找到了一些非常好的代码示例,它使我可以使用detect WPDs,enumerate their contents和transfer the contents。我还在C++中找到了一些代码,其代码为all of the above and much more。所有这些例子的作用就像一个魅力,只要我连接一个单一的SD卡或一个USB密钥(即:只要我有一个设备被Windows识别并获得一个字母作为正确的驱动器),我得到目前文件的完整列表及其绝对路径。但是,如果我尝试连接Android设备,并列出内容,我得到的东西,我不明白:
embt2
SD Card
o15F9A
o15F9B
o15F9C
o15F9D
o15F9E
...etc
Internal Storage
o1
o2
o3
o4
o5
o6
oD1F
oD20
oD24
o7
o8
o1E78
o9
...etc
这怎么可能?浏览C#代码(第二个链接,上面),我发现,在某些点,代码创建了几个GUID对象,每个都与一些稍有不同的参数:
// Identify the property to retrieve
var property = new _tagpropertykey();
property.fmtid = new Guid(0x26D4979A, 0xE643, 0x4626, 0x9E, 0x2B,
0x73, 0x6D, 0xC0, 0xC9, 0x2F, 0xDC);
property.pid = 12;
[...]
// Get the name of the object
string name;
var property = new _tagpropertykey();
property.fmtid = new Guid(0xEF6B490D, 0x5CD8, 0x437A, 0xAF, 0xFC,
0xDA, 0x8B, 0x60, 0xEE, 0x4A, 0x3C);
property.pid = 4;
[...]
// Get the type of the object
property = new _tagpropertykey();
property.fmtid = new Guid(0xEF6B490D, 0x5CD8, 0x437A, 0xAF, 0xFC,
0xDA, 0x8B, 0x60, 0xEE, 0x4A, 0x3C);
property.pid = 7;
[...]
var folderType = new Guid(0x27E2E392, 0xA111, 0x48E0, 0xAB, 0x0C,
0xE1, 0x77, 0x05, 0xA0, 0x5F, 0x85);
var functionalType = new Guid(0x99ED0160, 0x17FF, 0x4C44, 0x9D, 0x98,
0x1D, 0x7A, 0x6F, 0x94, 0x19, 0x21);
但我无法弄清楚如何将这些exadecimal值工作。网上的文件似乎很少。我发现我的设备guid与设备管理器({eec5ad98-8080-425f-922a-dabf3de3f69a}
),但每次我试图用我自己的GUID替换之一,我得到一个COMException。
我是否找对了地方?我需要设置一些GUID还是其他?
我标记这个问题,C#和C++,因为我发现这两种语言的一些代码示例,但我愿意解决任何语言问题(使用Java,Python,...)
我不认为所显示的代码可以编译,因为它重新声明了名称“property”。无论如何,它只是创建'Guid'对象。阅读Wikipedia中的GUID。 –
@Cheers这不是确切的代码:我只是复制粘贴来自原始项目中不同位置的代码块。阅读第二个链接以获得完整的解释。 (是的,它会编译,因为这是一段精确的代码,只是覆盖相同的变量)。我真的不认为维基百科页面可以解决我的问题。所有的GUID都是我的猜测,我不确定我的问题在那里。 – ocramot
*如果它不是用于多个“var”,它会进行编译。我的错。 – ocramot