Android中的USB中的UsbAccessory和UsbDevice的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android中的USB中的UsbAccessory和UsbDevice的区别相关的知识,希望对你有一定的参考价值。

UsbAccessory:和标准的USB的概念相反
USB设备是USB的Host
所以,此时USB设备,也要干其作为USB的Host的事情
USB设备,要给作为USB的Device的Android设备供电
USB设备要负责管理USB总线
而Android设备是USB的Device
此时,从概念上说,相当于把Android设备,当做Accessory附件,挂在USB设备上
Android 3.1多了哪些类
对于Android 3.1来说代号仍然为honeycomb,新增功能还是不少的,API Level升到了12。除了这个ADK中的部分特性外,下面一起看看前几天提到的android.hardware.usb这个Package,由于 Google将拉拢硬件厂商制造出千奇百怪的USB附加配件所以提出了ADK这样的概念,可以查看 Android ADK硬件开发包介绍 ,目前来说USB的管理有了不小的增强。
一、 android.hardware.usb.UsbAccessory 本类是针对Open Accessory API 设计的。
二、 android.hardware.usb.UsbConstants 作为USB常量定义,在Linux内核文件 linux/usb/ch9.h 中。
三、 android.hardware.usb.UsbDevice 获取USB设备的信息,比如说类型、制造商等等,很有用的。
四、android.hardware.usb.UsbDeviceConnection 这个是USB设备传输控制的核心,对于Android USB硬件附件开发者来说必须掌握。不过还是比较简单的。
五、 android.hardware.usb.UsbEndpoint 获取一个USB终端信息
六、android.hardware.usb.UsbInterface USB底层接口,获取一些信息底层信息,比如说通讯协议,等等。
七、android.hardware.usb.UsbManager USB管理类,实例化方法和Android大多数系统Manager一样,通过类似 UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE); 的方式获取系统底层AIDL服务的一个实例,本类是一个全局USB类,比较重要。
八、android.hardware.usb.UsbRequest 核心的USB请求处理类,支持读写操作,以字节数组方式处理一个UsbEndpoint,Android123提示这个类类似WinCE串口通讯的 CreateFile部分,可以进行数据流的读写。
参考技术A Android中的USB中的UsbAccessory和UsbDevice的区别要先了解以下两种模式:
host模式:Android设备为USB总线和外设供电,数据传输是双向的。
Accessory模式:即附件模式,Android作为附件,手机和电脑连接,通常是这种模式,由USB Device端向总线供电,数据传输方向是双向的。这就是手机插到电脑上可以充电的原因。
进入调试的官网解决办法:
1、请把Android设备用数据线连接到电脑,当然,也要把Android设备的wifi打开。
2、在windows命令行下,进入SDK platform-tools/ 目录(具体看SDK安装在哪个目录了),执行 adb tcpip 5555 回车。这里其实是打开了adb调试的无线端口(Android设备在电脑上的端口映射),其实后面的数字可以随便来,只要端口没有被占用。
3、adb connect <device-ip-address>:5555键入回车,这里的device-ip-address是Android端的IP地址。
4、最后adb usb回车,假如没有问题,现在已经可以在eclipse上看到logcat的输出了。
参考技术B Android对USB的支持有两种模式:
HOST模式:Android设备为USB总线和外设供电,数据传输是双向的。
Accessory模式:即附件模式,Android作为附件,手机和电脑连接,通常是这种模式,由USB Device端向总线供电,数据传输方向是双向的。这就是为什么手机插到电脑上可以充电的原因。

在讨论具体代码之前,需要先讲一下再host模式下面的调试办法,因为数据线的端口被外设使用了,那么,传统的连接数据线调试的方法已经不行了。官网给出了解决办法:
1、请把Android设备用数据线连接到电脑,当然,也要把Android设备的wifi打开。
2、在windows命令行下,进入SDK platform-tools/ 目录(具体看SDK安装在哪个目录了),执行 adb tcpip 5555 回车。这里其实是打开了adb调试的无线端口(Android设备在电脑上的端口映射),其实后面的数字可以随便来,只要端口没有被占用。
3、adb connect <device-ip-address>:5555键入回车,这里的device-ip-address是Android端的IP地址。
4、最后adb usb回车,假如没有问题,现在已经可以在eclipse上看到logcat的输出了。

其实还有个简单的办法,可以在应用商店上下一个无线ADB工具,随便哪个都可以,这类工具就是在Android端做了上面的那些工作,而且还不用连数据线,但是第三步的那个操作还是要在windows的命令行窗口手动输入的。
参考技术C 做usb通信,首先要先弄清楚哪边是HOST那边是SLAVE。
比如你的android手机做host,要获得slave,用UsbDevice表示slave
要是你的android手机做slave,要获得host,用UsbAccessory表示host

网站:http://dengzhangtao.iteye.com/blog/1860520本回答被提问者和网友采纳

离线 Android 仅使用 USB 电缆连接到 PHP localhost

【中文标题】离线 Android 仅使用 USB 电缆连接到 PHP localhost【英文标题】:Offline Android connect to PHP localhost using only USB cable 【发布时间】:2018-06-20 14:55:42 【问题描述】:

我正在尝试仅使用 USB 电缆将 JSON 数据从 localhost 中的 PHP 文件 (Apache/XAMPP) 获取到 Android。 Android 设备离线。可能吗?有人建议使用okhttp3,但我不知道该怎么做。

【问题讨论】:

您在哪里打电话给okhttp3 请求?设备离线意味着什么? 请说的更清楚些。 “我的 php”到底是什么意思?它是在您的 PC 上运行的 Apache/XAMPP 安装吗? 【参考方案1】:

如果尚未尝试,请先尝试从模拟器运行应用程序,但使用来自 ipconfig(command promt) 的 IPv4 地址。在您的代码中使用 ipv4 地址而不是“Localhost:8080”使用“Localhost:”。

【讨论】:

带USB线的模拟器? 否,请尝试在模拟器中运行该应用程序。不适用于您的 Android 设备中的 USB 电缆。如果它工作正常,那么您可以知道您的代码没有问题。 为什么不尝试使用wifi呢?您是否曾经尝试过仅使用 USB 电缆?问题不在于代码是否正确,而在于是否只能使用 USB 电缆。现在你以前这样做过吗? 可以使用wifi。但是设备和系统必须在同一个网络中,并且必须使用系统的 IPv4 地址来调用 web 服务 那么现在请告诉如何使用 USB 电缆。这就是问题所在。

以上是关于Android中的USB中的UsbAccessory和UsbDevice的区别的主要内容,如果未能解决你的问题,请参考以下文章

android studio中的模拟器和USB调试问题

是否可以在不使用 android studio 中的任何 USB 电缆的情况下通过 wifi 进行调试? [复制]

android webcam模块

Android USB 有时无法识别

Android应用程序无法读写USB设备的解决方法

离线 Android 仅使用 USB 电缆连接到 PHP localhost