You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android端串口列表无设备问题排查求助(附权限及代码)

USB-TTL转换器Android端识别问题排查

1. 先补全Android权限(最基础要求)

你当前配置的权限完全没覆盖USB相关功能,必须添加以下内容到AndroidManifest.xml:

  • 基础USB权限:
<uses-permission android:name="android.permission.USB_PERMISSION" />
<uses-feature android:name="android.hardware.usb.host" android:required="false" />
  • 若应用目标Android版本为13及以上,额外补充:
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />

关键配置:添加USB设备过滤规则
系统需要明确知道你的应用要识别哪些USB设备,因此要在AndroidManifest.xml的<application>标签内加入这段:

<application ...>
    <!-- 关联USB设备过滤规则文件 -->
    <meta-data
        android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
        android:resource="@xml/usb_device_filter" />

    <!-- 接收USB权限请求和设备连接事件的广播接收器 -->
    <receiver
        android:name=".UsbPermissionReceiver"
        android:exported="true">
        <intent-filter>
            <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
            <action android:name="android.hardware.usb.action.USB_PERMISSION" />
        </intent-filter>
    </receiver>
</application>

接着在项目的res/xml目录下新建usb_device_filter.xml文件,填入你使用的USB-TTL转换器的VID和PID(可在Serial USB Terminal中查看设备的具体参数,以下为常见芯片示例):

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <usb-device vendor-id="1a86" product-id="7523" /> <!-- CH340芯片 -->
    <usb-device vendor-id="067b" product-id="2303" /> <!-- PL2303芯片 -->
    <!-- 其他设备可继续添加 -->
</resources>

2. Qt自带QSerialPort的Android兼容性问题

Windows会自动把USB-TTL映射为系统串口,所以QSerialPortInfo::availablePorts()能正常识别;但Android不会自动做这个映射——USB-TTL属于USB Host设备,Qt原生的QSerialPort不支持直接识别这类设备,必须借助Android的USB Host API来处理。

解决方向:

  • 使用第三方Qt库,比如封装了Android USB Host串口功能的qt-serialport-usb-host,无需自己写JNI代码;
  • 自行通过JNI调用Android Java代码,手动实现USB设备枚举、权限请求和串口通信(新手不推荐,复杂度较高)。

3. 必须触发动态权限请求

Android 6.0及以上系统,仅在Manifest中声明权限无效,需要弹出对话框让用户手动授权。使用第三方库通常会自动处理权限弹窗;若自行开发JNI,需在检测到USB设备时发送权限请求的Intent。

4. 验证步骤

  1. 完成所有配置后重新编译安装应用;
  2. 连接USB-TTL转换器,检查系统是否弹出权限请求弹窗,点击允许;
  3. 点击应用中的Refresh按钮重新扫描,若仍无法识别,确认usb_device_filter.xml中的VID/PID与设备实际参数一致。

内容的提问来源于stack exchange,提问作者kancler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 16:25:26