我正在尝试简单地将一个简单的XML文件写入SD卡,我注意到我的Nexus 4确实写了该文件,但是使用Windows 7无法通过MTP协议查看.
码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
CustomerQueryRqType customerQueryRequest = new CustomerQueryRqType();
Serializer serializer = new Persister();
File myFile = new File(Environment.getExternalStorageDirectory() + "/customerQueryRequest.xml");
try {
boolean created = myFile.createNewFile();
serializer.write(customerQueryRequest, myFile);
} catch (Exception e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
我可以使用Astro文件管理器在手机上看到该文件:
但Windows没有看到它......:
adb shell 在目录中显示:
ls -l
drwxrwxr-x root sdcard_rw 1970-01-16 20:51 Alarms
drwxrwxr-x root sdcard_rw 1970-01-16 20:51 Android
drwxrwxr-x root sdcard_rw 2012-11-21 19:30 DCIM
drwxrwxr-x root sdcard_rw 1970-01-16 20:51 Download
drwxrwxr-x root sdcard_rw 1970-01-16 20:51 …Run Code Online (Sandbox Code Playgroud) 每当我的设备(Nexus 5,Android M Preview 3)通过USB连接时,USB配置始终默认为"仅充电".
这是非常有问题的,因为我的设备上的USB端口有故障,有时在碰撞时会断开连接并重新连接,因此我每次都必须手动将模式从通知抽屉更改为MTP(媒体传输协议).
如何在python中通过USB线使用MTP读取和写入我的Galaxy Nexus手机?我在Windows 7电脑上.
我有一台运行Android Honeycomb的数码单反相机和三星Galaxy Tab.使用USB电缆将DSLR连接到平板电脑(通过USB套件在平板电脑上启用主机功能).我希望在用户使用此外置摄像头拍照时收到通知,以便将此图像下载到平板电脑或使用它做其他事情,例如显示包含从图像中获取的元信息的Toast通知.
至于我获得允许监视更改的所有现有工具(如FileObserver使用底层inotify机制MediaContentProvider等),需要查看特定文件或文件系统路径.这很好,直到我们在2.x和更早版本的Android版本中获得了块层协议支持 - 当你连接设备时,它已被安装在设备文件系统的某个地方,你可以使用这个挂载点作为这些工具的观察点.
由于Honeycomb Google已经将访问外部USB设备的方式改为Media Transfer Protocol其中PTP的一部分.现在,当我将外部USB设备连接到Android设备时,我将看不到任何挂载点(我正在使用adb shell和后续mount命令获取它们).此外,MTP实现使用存储ID,它显然充当更高级别的抽象,并且只是普通的整数值.我希望有一种方法能够以某种方式将这些存储ID转换为真正的路径/ mountpoint /但是显然似乎没有.
考虑到MediaScanner已经在我的设备上运行的Android ,我猜想Intent当设备可以访问的媒体文件发生变化时,可以通过特殊的广播来管理这个问题,所以我开始寻找已经存在且适合Intents被通知但没有运气-我只找到ACTION_MEDIA_MOUNTED并且ACTION_MEDIA_REMOVED当设备被连接和断开分别被仅广播.这意味着MediaScanner在重新安装之前无法注意到设备上的任何更改(我使用库存应用程序对其进行了双重检查 - 在您拔下插头并将其插入Android设备之前,它不会在相机上看到任何新创建的图像再次).
试图获得外部SD卡的这个挂载路径,我使用了Environment.getExternalStorageDirectory()API调用,但它产生了模拟Galaxy的sdcard路径,而/mnt/sdcard不是相机的路径.所以它对我也不起作用.
我设法解决这个问题,只是发起了定期Timer活动,AsyncTask并作为一个TimerTask.此任务会初始化USB连接,打开设备,扫描整个设备内存,仅获取最后拍摄的照片,然后关闭设备描述符和USB连接.
它看起来并不像做,考虑到它需要做的所有这些行动每一个可能是很经常的时间的最好的和有效的方式,说每5秒或10秒.它肯定会很快耗尽电池并产生不必要的系统I/O,仅用于拍摄最后拍摄的照片并将其与之前拍摄的照片进行比较(99%是相同的图像),但我没有找到任何更好的工作解决方案这样做.拥有基于事件的通知的观察者机制会好得多.
所以我的问题是有更有效的方式来通知Honeycomb或更高版本的Android版本的外部USB存储器的更改,而不是上面描述的那些?
每当我通过USB将手机连接到PC时,手机会显示一条消息,要求我拒绝或允许MTP连接.我总是想允许它
我的设备:三星S5
Android:6.0.1
有没有办法始终允许它作为默认选项.
弹出窗口显示:允许访问设备数据.将建立MTP连接以访问所连接设备上的数据.否认允许
我正在尝试开发一个应用程序,我将移动设备连接到计算机作为MTP.现在我尝试使用一些外部库从我的java代码访问此MTP.
我的要求是从该设备获取时间并计算计算机上的偏移量.
但我无法做同样的事情.我们可以这样做吗?
我尝试使用USB网络共享并创建双向套接字通信,但这需要打开套接字并且会降低应用程序的安全性.
在我的项目中,我使用Windows便携设备(WPD)API来枚举移动设备的内容.WPD API枚举指南.我能够枚举每个对象并查看其属性,如API编程指南中所示.WPD API属性指南
但是,当我尝试获取名称中包含对象名称的对象.名称时,返回的值将被截断.
HRESULT hr = objectProperties->GetStringValue(WPD_OBJECT_NAME, &strOriginalFileName);
if(FAILED(hr))
return false;
PWSTR wideStr = strOriginalFileName;
char buffer[20];
wcstombs(buffer, wideStr, 20);
qDebug() << buffer;
Run Code Online (Sandbox Code Playgroud)
因此,例如,com.example返回名称为的对象(设备上的文件夹)com.当我试图在设备上找到特定的文件路径时,这成为一个明显的问题.
我似乎无法弄清楚出了什么问题.我误解了文件名实际上是怎么回事?对象example内是另一个属性还是其他东西com?我很困惑.
编辑:所以我使用WPD API示例软件来检索com.example对象的所有对象属性,您可以看到WPD本身无法获取完整的文件夹名称. 
谢谢你的时间!
我正在写一个爱好项目来处理相机上的文件.以前我发现相机和FolderBrowserDialog有问题.
我认为讨厌的是相机正在使用MTP或PTP(图片传输协议而不是点对点).
为了更加无缝地与相机连接,我想使用PTP或MTP来访问相机.是否有.Net人可以推荐的MTP/PTP包装器?如果可能的话,我很想避免编写我自己的或涉及非托管代码.
我开发了一个小应用程序,将文件从一个文件夹复制到另一个文件夹.我使用JFileChooser选择目标目录.我很久没有尝试过的东西就是选择我的手机作为目标目录.我试过但我不能从我的JFileChooser中找到它.我读了其他一些问题,我想知道是否有可以让我将文件从我的电脑复制到mtp设备?我的目标是linux和Windows平台.
我的手机是LG Nexus 5 android 6.0.1.谢谢你的时间.如果你想downvote我想知道原因