这是本人第一次想写博客,由于本人的记忆力有限,有些东西没办法一直保存在我聪明的脑子里,于是乎,就打算用博客的方式进行知识的积累。
今天我要写的是我在项目中碰到的一个功能,这个功能纠缠了我一个星期左右,各种google和百度。最终通过智慧的脑袋将它击破。我实现的功能是两台android设备通过OTG连接,实现数据的通讯。
我在这里说下我所碰到的问题:
这里的FileInputStream可不像我们平时所用的API,这里的inputStream是USB通讯所提功的。一开始我在发送大文件时,想通过inputStram.availe()获取他的文件大小,可谁料想到,只要一调用inputStream.availble()程序就发生异常。网上查了半天,才发现此FileInputStream非彼FileInputStream。这里卡了好半天。
2.无法发送大文件。
由于上面的问题所引发的问题,我发送一个大文件没办法动态初始化我的数组大小多少, 因为inputStram.availe没法使用。于是乎我就查阅了些资料,终于黄天不负有心人,发现usb一次通讯最大不能超过16384。android 开发文档上有明确指出:Android附属协议支持 包缓冲区最多16384个字节,所以你可以选择总是声明你的缓冲区 大小为简单起见。那既然是这样,我秒懂,我该for循环去发送文件byte数组了。只要你的逻辑能力比较好,我想应该没问题了。呵呵