Android USB 模式简介

设备模式

当计算机或其他USB主机需要连接安卓设备时,此时安卓设备是作为“USB设备”角色的,在计算机上显示为 USB 外设。现在的安卓设备已经被赋予了愈加丰富的功能,如MTP相机模式、文件传输模式(类似于U盘)、RNDIS网卡模式等。当使用普通手机数据线连接安卓手机和电脑就可以使用这些功能。

主机模式

Android 设备充当USB主机,安卓此时充当类似于计算机PC的角色,可以连接键盘、鼠标、U盘以及嵌入式应用USB转串口、转I2C等设备。注意,此时不能再使用普通数据线,而应该使用OTG(On-The-Go)转接线。原理是Android设备通过USB接口中的ID信号线状态决定其接口是工作在主机还是设备模式。如下为OTG转接头:

​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

配件模式

设备模式与配件模式之间的区别在于,在配件模式下,除了 adb 之外,主机还可以看到其他 USB 功能。Android 设备从设备模式开始运行,然后通过重新协商过程转换到配件模式。除了提供AOA功能外,还额外提供了音频功能。如:安卓Host AOA接口转换芯片CH9343。

Android主机模式的开启

如上文主机模式的介绍,开启Android OTG主机功能,务必使用OTG转换线,确认是否成功可以通过连接的外设是否可以从Android设备USB口是否有电来确认,若仍没有电,其一可以查看设备厂商规格书,其二可以点击系统的“设置”,查看有无主动开启OTG功能的菜单项。

若如上主机功能可以顺利开启,那么我们的安卓设备就可以连接键盘、鼠标、U盘这些常用外设了。除此类设备之外,安卓系统还提供了一套USB Host API可以支持直接通过应用程序和USB设备通讯,而无需预置设备的USB驱动。该功能极大的提高了安卓设备使用USB产品的灵活性,用户端仅安装APK安卓软件即可。如客户使用安卓连接USB转串口设备CH340、USB转多串口设备CH342或者用户使用USB MCU开发的自定义厂商类设备、HID设备等使用场景。

当然因为该特性并非所有安卓厂商都会强制支持和开放,所以我们需要通过以下方式来确认或者进行必要的配置来开启该功能。

Android USB Host API功能的确认和开启

步骤一:确定 Android 设备是否支持 USB Host 功能,具体可以通过以下步骤进行确认:

1. 查看手机或平板设备参数,或者直接联系厂家咨询;

2. 使用 UsbHostDiagnostics.APK 安卓应用软件直接进行检测,汉化版软件名称为:USB 主机诊断;

Note:若步骤1提示支持,则无需进行如下步骤。

步骤二:确认系统是否包含 USB Host API 相关的库文件,习惯也称驱动文件。存放路径为:/system/lib。

通过手机助手工具或者直接使用“adb shell”连接手机,进入该目录进行查看,以我的手机为例,通过 adb 查看结果如下图所示:

如果没有该文件,可以咨询厂家或者拷贝相同处理器的安卓系统下的该文件至此目录下。

步骤三:确认 Android 系统是否已经开放了 USB Host 权限,这一步也是最重要的一步。

由于需要修改系统文件,所以要保证 Android 设备已经具有 Root 权限,否则会遇到各种未知的问题。Root 之后,可以通过手机助手或者“ES文件浏览器”等软件等操作系统文件。

进入目录“/system/etc/permissons”,查看该目录下,是否有文件“android.hardware.usb.host.xml”,如果没有,则需要自己创建一个或者直接从其他系统中拷贝过来。之后打开该文件,添加如下内容:

<permissons><feature name="android.hardware.usb.host"/>
</permissons>

在该文件下查找是否存在名称为“handheld_core_hardware.xml”或者“tablet_core_hardware.xml”的文件。同理,未找到需要新建或者拷贝过来。打开文件,在 <permissions> section 中添加如下内容:

<feature name="android.hardware.usb.host">

添加完成后文件内容如下所示:


步骤四:非常重要,就是重启 Android 设备

注:查看安卓系统的 CPU 信息,可以进入“adb shell”之后,通过“cat /proc/cpuinfo”查看。

读者也可以移步至《CH340安卓应用开发指南》,来了解关于此用法的详情。

Android开启OTG功能/USB Host API功能相关推荐

  1. Android 系统使用USB OTG功能/打开USB Host API功能

    步骤一:确定 Android 设备是否支持 USB Host 功能,具体可以通过以下步骤进行确认: 1. 查看手机或平板设备参数,或者直接联系厂家咨询: 2. 使用 UsbHostDiagnostic ...

  2. 翻译Android USB HOST API

    翻译Android USB HOST API 源码地址:http://developer.android.com/guide/topics/connectivity/usb/host.html 译者注 ...

  3. Android开发者指南(29) —— USB Host and Accessory

    前言 本章内容为Android开发者指南的 USB章节,译为"USB主从设备",版本为Android 4.0 r1,翻译来自:"太阳火神的美丽人生",欢迎访问他 ...

  4. Android usb host

    当你的Android主机是处于USB主模式下,它充当USB主机,开启设备并列举出所有已连接的USB设备.这种模式在Android 3.1及以上的版本支持. API预览 在开始开发USB Host之前, ...

  5. Android Service创建USB HOST通信

    之前做了一个关于Android USB通信的Case,通过Android的USB总线给Zigbee供电,和板载的Zigbee(基于Zigbee的自组网)进行通信.要使用Android的USB Host ...

  6. 一篇读懂:Android手机如何通过USB接口与外设通信(附原理分析及方案选型)

    更多技术干货,欢迎扫码关注博主微信公众号:HowieXue,共同探讨软件知识经验,关注就有海量学习资料免费领哦: 目录 0背景 1.手机USB接口通信特点 1.1 使用方便 1.2 通用性强 1.3 ...

  7. 安卓USB开发教程 二 USB Host

    USB Host(主机模式) 当 Android 设备处于 USB 主机模式时,它充当 USB 主机,为总线供电,并枚举连接的 USB 设备.Android 3.1 及更高版本支持 USB 主机模式. ...

  8. Android AOA链接(accessory host)

    目录 AOA连接两台Android 设备 1. 配件端(手机) 1.1AndroidManifest 要求 1.2 与配件通信 1.3 终止通信 2. 主机端(车机) 2.1 API 概述 2.2 A ...

  9. android 手机 otg,对于安卓智能手机的OTG功能,你了解多少

    随着智能手机功能的多样化,用户对手机内存的需求也在不断增加.各种照片,音乐,视频,应用程序等日新月异. 当这些应用程序几乎占用手机内存时,可能会出现运行缓慢,闪回,系统暂停等情况,这会诱使人们购买带有 ...

  10. Android P+通过反射调用系统API实现高级功能

    Android P+通过反射调用系统API实现高级功能 1. 打开隐藏API 1.1 导入FreeReflection包 1.2 打开隐藏API 2. 反射系统服务并调用相应方法 通过反射调用系统AP ...

最新文章

  1. php文本分割成csv,怎么在php中将文本文件转换为csv文件并输出
  2. codeforces#597 D. Shichikuji and Power Grid(虚点+最小生成树+记录)
  3. 第十章 使用机器学习的建议-机器学习老师板书-斯坦福吴恩达教授
  4. 简历写了会Kafka,面试官90%会让你讲讲acks参数对消息持久化的影响
  5. BUUCTF(misc)变异凯撒 --二
  6. 学习汇编图文. 寄存器的特殊用法
  7. oracle 常用故障,Oracle常见问题解决方案汇总
  8. [jQuery] 根据表单的不同参数跳转不同的链接
  9. android 获取webView高度,设置webView高度
  10. 第七章:跨程序共享数据-探究内容提供器
  11. r语言 将表格导出为csv_r语言 将表格导出为csv_2. R语言基础语法
  12. golang 筆記:make 與 new 的差別
  13. 拦截器获取请求参数post_spring boot拦截器中获取request post请求中的参数
  14. 巧用Delegate在Silverlight多个页面、控件中传递回调方法
  15. 系统学习NLP(四)--数据平滑
  16. 自制的一个小地图生成器
  17. 3des加密及解密处理
  18. QQ群聊天记录统计分析 V0.2
  19. 十七、HBase更新数据
  20. python怎么表达我喜欢你的句子_20句暗示“我喜欢你”的告白句子,句句触动人心...

热门文章

  1. Apache Flink 零基础入门(四):客户端操作的 5 种模式
  2. 智能dns调研及bind9搭建
  3. 十个前端UI优秀框架
  4. cc2530dma控制器功能_dma控制器是什么_dma控制器工作方式
  5. 【HTML5入门指北】第二篇 网页相关的标签
  6. 教务系统漏洞再生南工大FaceMash
  7. Android实战 - 音心音乐播放器 (开启篇)
  8. 正则表达式基础、原理及优化
  9. 汇编c语言环境搭建原理,什么是一个精简的C语言环境 怎么搭建?
  10. html手机截屏保存不了,华为手机截屏图像保存不了怎么处理?