分享

关于android USB Host编程的一些总结

 android之情殇 2014-06-20
        先不说是否能实现,另外,USB HOST通信方式本来就是用USB连接的,如果用USB连接电脑的话,直接就可以管理手机上的文件了,用不到通过程序了吧?
二、通过socket方式进行连接
     开始的时候看到一个例子说是通过USB HOST实现的PC与手机端进行连接,我根据查到的资料和自己的理解觉得大概是如下的意思:
      1.基于socket编程方式,在android手机端和pc端进行连接传输数据。
      2.连接时,需要通过adb forward方式进行端口转发,才能连接的上去。
      3.需要用到broadcast来进行,在server端用adb shell 命令开启android端的socket连接服务。
      4.主要基于android.hardware.usb包下的UsbManager 类和UsbAccessory类。
      5.然后就是一些IO操作,IO处理及关闭优化。
     最关键的两点就是:
     1)端口转发:
      Runtime.getRuntime().exec(“adb forward tcp :12580 tcp:10086 ”);
      在服务端监听10086端口。
       2)在server端java程序中使用adb 命令启动client端的service。
         Runtime.getRuntime().exec(“adb shell am broadcast –a NotifyServiceStart”);
       后来测试多次发现,这个方式没有用到USB HOST的方式,依然是socket通信,只不过是进行了一下端口转发。
       另外,关于socket通信时,写的android程序在模拟器上可以与PC上的server端进行通信,而把程序装到真机上时,就不能实现通信,这个问题的主要原因是PC端和手机上的无线网络不在一个网段,无法进行连接。
三、串口通信
       在网上查到一些关于USB HOST的开发都是基于基于android端与一些单片机进行串口通信的,这是一些嵌入式的开发,对端口数据进行转码操作,还要用到一些c++的知识,另外还要要用到一些开发板,这些底层的东西不懂,另外这跟android端与pc通信又扯不上关系。
       所以,经过分析,主要矛盾总结如下:
      1.    没有测试条件(支持USB HOST的手机)大多数手机没有实现这个功能。
     2.    Android手机与pc端通信使用USB HOST方式,是否有这个必要,明显直接插上USB就能传输文件了。
      3.    Android USB HOST编程难度很大,并且主要是android手机作为主设备的。是否有再研究下去的必要。跟测试手机就没关联了。
    我觉得没有再研究下去的必要了,用了不少时间,也走了不少弯路,再研究下去也未必能研究出什么,程序也没有手机测试。我觉得再研究下去,就是走入误区了,还会占用不少时间,我也不能保证能做出来。不能说什么收获都没有,至少把这些知识都了解一些。我准备下面研究上次你提到的Monkey和MonkeyRunner,不知道X总什么意思,给点指示。。。。
作者:风泊海上

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多