我正在编写一个应用程序,它应该在 SD 卡上转储数据,然后在 pc 上的另一个应用程序应该在设备连接到 pc 时读取数据(在磁盘驱动器模式下)。在我的 HTC Legend 上有一个对话框可供选择:仅充电、HTC 同步、磁盘驱动器..
是否有可能设置设备连接到电脑的模式,或者至少有意图要求用户切换模式?
我正在编写一个应用程序,它应该在 SD 卡上转储数据,然后在 pc 上的另一个应用程序应该在设备连接到 pc 时读取数据(在磁盘驱动器模式下)。在我的 HTC Legend 上有一个对话框可供选择:仅充电、HTC 同步、磁盘驱动器..
是否有可能设置设备连接到电脑的模式,或者至少有意图要求用户切换模式?
在 HTC 设备上,在管理应用程序(ICS - 可能也适用于 Gingerbread;不记得)中打开 ConnectToPC 服务(未插入 USB 时),然后点击清除数据。然后,再次插回 USB,您应该可以选择“不再询问”。选择所需的模式,选中该框,然后接受。
我还没有找到以编程方式设置模式的方法,但我相信您可以通过调用系统从通知区域调用的相同活动以编程方式调出设置菜单。不幸的是,这似乎是特定于制造商的:在我的手机上是com.htc.android.psclient.SwitchUsbSettings
.
对于 HTC One M8 遇到此问题的任何人来说,这有点离题,但要跳出框框思考问题。USB连接导致设备充电,就是这样。
解决方案是组合不同的 USB 电缆,卸载一个名为 Battery Doctor 的应用程序(它显然喜欢管理电池周围的一切),以及 USB 网络设置 - 打开智能网络共享......看似无关......但这种组合让我与 MobileGo for Android 连接以管理和备份文件、联系人和设置。
希望这可以帮助某人。
当您在他们的 Android 应用程序中请求 USB 同步时,CompanionLink 会执行此操作:它将数据刷新到 SD,然后将 SD 导出为 USB 上的存储(“磁盘驱动器”),然后等待用户在PC 使用完 SD,然后再次撤消 SD 导出到 USB。尽管 CompanionLink 应用程序使用起来可能非常令人沮丧,但至少它的这一部分(很大程度上)是可靠的。
不幸的是,我不知道技术细节,可能需要在这几个月中自己弄清楚。如果您无法使用 android 文档获得任何吸引力,也许您可以研究 CompanionLink 在 android 上执行的操作来实现这一点。我上面描述的顺序是当它被配置为通过 USB 与(基于 PC 的)Palm Desktop 同步时。
顺便说一句,这个高度复杂的过程的原因似乎是直接访问 SD 卡的 FS,至少目前使用的卡 FAT FS 只能支持一个客户端:手机本身或 USB。imo 如果可以同时共享对 SD 的访问,那将非常有帮助,但这可能需要对 android 进行深入的更改。
是的。在 Android 中,当设备与 PC 连接时,有一种方法可以更改设备的 USB 模式的行为。我使用了 Motorola Milestone [运行 2.1],我能够在以下模式之间切换:PC Suite [由 Motorola 开发]、MemoryCardAccess 和 Charge。如果您需要访问手机内存,我认为您应该在设备中打开“USB 调试模式”。虽然不确定,但我觉得它可能很方便!