大家好,我目前在做一个项目 用C# 写一个 Winform程序,通过调用adb  来控制 android操作系统的手机。 目前遇到了几个无法解决的问题 ,请各位给一些帮助。谢谢。   1. 中文支持问题。    比如 pull push命令  如果操作对象是中文文件或拥有中文路径。 我的编译环境是utf-8编码, adb 的运行环境 是 GBK  然后android 内部也是utf-8 就会出现各种乱码,或者我写进去是乱码,或者我读出来是乱码。        请问有没有某种方法,可以直接解决这种乱码问题。
   2.   Forward 命令。  也就是 端口映射 。 可以让 手机内的程序,直接通过端口映射 与pc上的软件 做到数据socket传输。
   但是我发现这种连接 极不稳定,连接上了  传输速度不可控,100k的数据 有时候是几十秒 有时候是一秒。而同样的代码,有些手机 就完全读取到数据。
        是不是我的方式有问题。请各位不吝赐教。  
   3.除了 adb 是否还有其他途径可以让 pc端程序控制android 操作系统呢。 谢谢。

解决方案 »

  1.   

    1. 处理文件,都是自己处理socket在手机端,不用adb pull什么。
    2. 是啊,没有好方法,你改用wifi吧,不要用adb了
    3. wifi和蓝牙啊
      

  2.   

    1.只要android端的路径不是中文就没事。
    2.这个没办法感觉还是蓝牙传输稳定。
      

  3.   

    还要加一个问题  有些手机 插上后 用adb devices 怎么也发现不了设备  无论多少次 插拔  但是重启电脑就好了 。。 这又是为什么呢 求教
      

  4.   

    我们处理这种问题,首先把adb进程kill掉,然后再枚举,活着触发下即插即用设备的改变情况在win32下,不过这种可能性比较小了,因为处理USB插入事件时就考虑刷新adb除非你系统有问题,还有如果你做同步软件最好把adb的源码合并到项目,我们早期的软件也是adb外挂,但这样不稳定,毕竟跨进程的,直接分析逻辑编译到自己的exe中比较可靠。
      

  5.   


    adb驱动没装吧,adb模式不稳定吧,连接时间长了会自动失去连接的,你可以做个压力测试看看,反正我是遇到了。如果有神马好的解决方案可以告诉我一下,[email protected]
      

  6.   

    上面我说了啊,还是直接将adb代码并入到pc端,都开源了没有必要搞个adb进程出来,别人不懂的以为你山炮造病毒呢,哈哈
      

  7.   

    Smart 说的有道理  但我是用C# 开发 adb 应该是纯C/C++ 的源代码   并没有现成的库 使用 如果内嵌的话 开发时间  估计就严重超支了。
      

  8.   

    先用root权限Kill掉server 再restart
      

  9.   

    在Winform中怎么可以打开adb.exe呢?开启一个进程运行adb.exe之后就一直处于一种阻塞状态,请问这是什么原因呢?
      

  10.   

    我也在研究C# 怎样通过usb 连接android 手机。网上教的都是通过网络进行数据交互的,郁闷啊。