德克云技术联盟

标题: 【转】小米otg连接各设备,使用心得 [打印本页]

作者: 许昱    时间: 2014-7-22 12:44
标题: 【转】小米otg连接各设备,使用心得

小米otg连接各设备,使用心得
http://www.miui.com/thread-868997-1-1.html

在我购买小米2的时候,小米1还没有在手里暖热乎,时间并不长,购买小米2的原因之一就是集成了otg功能。
自己从事过一点点usb开发工作,下面用我自己的话解释一下otg(On The Go)哈。
usb协议需要区分主从关系的(区别于1394口),主人对通讯具有绝对的控制权,而从属设备没有任何权利发起通讯请求。简单一句话,主人问什么就答什么,不问的时候,不能随便说话。比如插入U盘:
问:来者何人?
答:U盘(大容量存储设备类)
问:哦(准备跟U盘相关的话题),那个单位的?
答:Sandisk的
问:多大?
答:16G
问:把你的基本情况给我汇报汇报,准备一下。(读取0扇区内容,包含文件系统,扇区大小)
答:好的
......
问:准备好了吗?
答:准备好了。
问:传过来!
答:OOXXXOOOOXXXX......XXXOOOOOXXXX

当然,实际的通讯协议要比这个复杂。咱们的计算机就是主设备,而常用的像U盘,mp3,手机,键盘,鼠标,打印机等等一般都是从设备。主设备无论从硬件还是软件层面上,都要比从机更复杂一些(比如提供具有一定负载能力的5V电源,能够枚举不同格式的设备,能够协调各个设备占用usb带宽的强度等等)

因此两个从设备是无法进行连接的。otg技术就是为了解决这个问题的。具有otg技术的设备,在连接具有主功能的设备的时候,就会变成一个从设备,而当连接一个从设备的时候,自身就会变身为一个主设备。

拿到小米2后,对它的otg功能进行一些测试,网上也有热心人发布过相关的内容,我再扩充一下吧。
1. 作为从机的功能,我就不说了,连上电脑即可。
2. 连接U盘,otg线直接连,手机会自动装载,并且在文件管理里面直接显示
3. 连接有线光电鼠标,没有问题,没有提示,小米2的负载能力还是可以带动光电鼠标的。
小米鼠标箭头是黑色的,并且一段时间不使用自动隐藏。
鼠标左中右键的作用相同,等同于手指的触摸,希望以后增加中右键的功能。
鼠标箭头与手指触摸之间不能实现多点触控,箭头对图标拖动的时候,如果手指在屏幕上滑动,箭头的拖拽作用立即消失。
鼠标滚轮使用正常,可以在文件管理器中使用。
在浏览器中的使用情况,在miui自带的浏览器中不能正常使用滚轮,在Opera中使用滚轮正常,注意,一定是要opera的安卓正式版,而不是opera mini,也不是opera的中国版本叫什么“欧鹏浏览器”,我试过的其他的浏览器像UC,海豚等等好像都没有很好的支持滚轮。
4. 连接有线键盘,没有问题,手机没有什么提示。
esc键是退回键,可以与输入法配合,我试过常见的这几种输入法像讯飞,百度,qq,搜狐,触宝。配合最好的就是触宝输入法,人家一开始设计的时候就考虑到了外接键盘的情况,当你插入了有线键盘,或者是连接了蓝牙键盘,触宝输入法就会自动隐藏起虚拟按键,在屏幕的最下面只剩下一条候选行,并且打字的时候的上屏英文,在候选框上显示候选中文词语,空格默认第一个词语上屏,如果直接按空格,则键入的英文字母上屏,上下箭头候选词翻页,非常方便。讯飞输入法虽然声称支持实体键盘,但是发现还是不行,像其他的输入法,有的竟然连按空格第一个词语上屏都不支持。更不用说自动隐藏虚拟按键了。看来一个软件产品的质量与口号喊的响不响没有任何关系。
5. 连接无线鼠标(罗技M185),没有问题,手机没有任何提示,直接可以使用。
6. 使用usb hub,并且连接有线鼠标和键盘,没有我问题,注意usb hub一定是那种可以外接电源的,否则小米的otg接口无法提供这么大的电流。
7. 连接小米1。小米1(不是1s)不带有otg功能,所以小米1作为从机,小米2应该作为主机,但是直接连接后,并且在小米1上打开usb存储,小米2上无法正常识别。这是一个问题了,自家的兄弟互不相认。希望以后可以修正此问题。
这个问题能够采用第三方解决,使用软件StockMount软件,具体使用方法大家可以在网上查询,连接小米1后,软件提示只装载了sda,没有装载sda1,意味着发现设备,但是没有装载第一个分区,可以手动用StockMount软件装载一次,就可以了,最后小米1被装载到了这个位置/sdcard/usbStorage/sda1目录下,在文件管理下面就可以看到usbStorage文件夹,这是linux的挂载方法,实际上usbStorage/sda1这个文件夹的内容不存在于小米2的内部闪存上,而是一个连接,进入usbStorage/sda1其实就是进入了小米1的tf卡。这对于挂载别的u盘同样的道理。
8. 使用usb hub挂载多个设备,包括u盘,多功能读卡器,小米1。
这里遇到的情况就是,小米会自动挂载第一个插入的存储设备(小米1除外,提示错误),后面插入的存储设备,就不提示了,我通过StockMount软件将其他的都挂载起来。StockMoun挂载的结果非常类似于linux挂载u盘。挂载位置在/sdcard/usbStorage/下的各个文件夹内,第一个设备叫sda,第一个设备的第一个分区为sda1,第二个分区为sda2,第二个设备叫sdb,以此类推。
好像读卡器并没有设备名,只有分区名。如图,有sdg1,但是没有sdg。
9. 与otg无关,使用蓝牙鼠标与键盘(雷柏E6500,安卓蓝牙键盘,Geyes高仿苹果的蓝牙鼠标),使用效果与有线鼠标键盘相同。
10. 连接有线游戏手柄,北通的,能够连接成功,方向键对应于键盘的上下左右方向键。我小米2手机上安装的是mame模拟器,发现方向键能够正常识别,但是其他功能按钮就不能识别了,可能是mame模拟器的问题,其他游戏没有测试,后续跟上。
11. 是否能够连接usb有线网卡,这个确实没有实验过。不过据说安卓系统支持某些芯片,比如AX88772A,如果你所说的usb有线网卡内部采用的是这个芯片的话,并且手机的rom并没有精简掉这个芯片的相关驱动代码,就可以自动驱动这个usb网卡。
同样对于这个问题,其他的设备,像是usb转串口线,也有安卓原生支持的芯片FT311D,如果usb转串口线采用的是这个芯片的,也可以直接使用的。
(这里所说的直接使用,其实是可以直接使用JAVA API接口直接对硬件操作,至于miui中是否对于这个新添加的设备自动启用软件界面,我就不得而知了。呵呵。毕竟有了api接口,没有人给他编写UI软件也是不行啊)
同时对于任何一个usb设备,只要可以找到针对于android的驱动,或者是直接编写它的驱动,经过编译,就可以自己添加到android内核中,因为有了otg,就有了host功能。






欢迎光临 德克云技术联盟 (http://www.decoclouds.com/)