Qt for android 获取USB设备列表(一)Java方式 获取

news2025/3/13 18:15:10

简介

QtActivity 作为 Qt 应用程序的入口点,负责启动和配置 Qt 应用程序的信息, 后面我们继承 QtActivity 做自定义控制,了解一下 Activity 生命周期概念, 因为 QtActivity 继承自Android的activity,使用周期函数完成我们的任务。

步骤

1. 获取UsbManager

参考 UsbManager(apiref.com), 通过下面代码获取USB服务
UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);

2. 获取getDeviceList

UsbManager 对象接口中, 我们使用如下代码获取usb设备列表 HashMap<String, UsbDevice> getDeviceList()

3. UsbDevice

UsbDevice接口如下, 打印设备的PID、VID、SN等基本信息即可
接口参考文档 USBDevice 接口说明文档

<class name="android/hardware/usb/UsbDevice" since="12">
		<extends name="java/lang/Object"/>
		<implements name="android/os/Parcelable"/>
		<method name="getConfiguration(I)Landroid/hardware/usb/UsbConfiguration;" since="21"/>
		<method name="getConfigurationCount()I" since="21"/>
		<method name="getDeviceClass()I"/>
		<method name="getDeviceId()I"/>
		<method name="getDeviceId(Ljava/lang/String;)I"/>
		<method name="getDeviceName()Ljava/lang/String;"/>
		<method name="getDeviceName(I)Ljava/lang/String;"/>
		<method name="getDeviceProtocol()I"/>
		<method name="getDeviceSubclass()I"/>
		<method name="getInterface(I)Landroid/hardware/usb/UsbInterface;"/>
		<method name="getInterfaceCount()I"/>
		<method name="getManufacturerName()Ljava/lang/String;" since="21"/>
		<method name="getProductId()I"/>
		<method name="getProductName()Ljava/lang/String;" since="21"/>
		<method name="getSerialNumber()Ljava/lang/String;" since="21"/>
		<method name="getVendorId()I"/>
		<method name="getVersion()Ljava/lang/String;" since="23"/>
		<field name="CREATOR"/>
	</class>

4. 代码

package usb;

import java.util.HashMap;
import android.os.Bundle;
import android.content.Context;
import android.hardware.usb.UsbManager;
import android.hardware.usb.UsbDevice;

public class USBListActivity extends org.qtproject.qt.android.bindings.QtActivity
{
    private UsbManager m_usbManager;

    public USBListActivity()
    {

    }

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        m_usbManager = (UsbManager)getSystemService(Context.USB_SERVICE);

        getDeviceList();
    }

    public void getDeviceList()
    {
        HashMap<String, UsbDevice> deviceList = m_usbManager.getDeviceList();
        System.out.println("------------------------->GetDeviceList<-------------------------");
        deviceList.forEach((key, value) -> {
            System.out.println("------------------------->" + key + "<-------------------------");

            System.out.println(value);

            System.out.println("<-------------------------" + key + "------------------------->");

        });
        System.out.println("<-------------------------GetDeviceList------------------------->");
    }
}

5. 设置你的代码为启动入口

编辑 AndroidManifest.xml, 将
android:name=“org.qtproject.qt.android.bindings.QtActivity”
改为
android:name=“usb.USBListActivity”
代码目录如下
在这里插入图片描述

6. 收集设备连接

我使用OTG线连接了USB扩展线, 在扩展上接了两个同样型号的USB转TTL线, 如下图
在这里插入图片描述

7. 运行结果

I System.out: ------------------------->GetDeviceList<-------------------------
I System.out: ------------------------->/dev/bus/usb/001/008<-------------------------
I System.out: UsbDevice[mName=/dev/bus/usb/001/008,mVendorId=6790,mProductId=29987,mClass=255,mSubclass=0,mProtocol=0,mManufacturerName=null,mProductName=USB2.0-Serial,mVersion=2.54,mSerialNumberReader=android.hardware.usb.IUsbSerialReader S t u b Stub StubProxy@a1e1d4b, mHasAudioPlayback=false, mHasAudioCapture=false, mHasMidi=false, mHasVideoCapture=false, mHasVideoPlayback=false, mConfigurations=[
I System.out: UsbConfiguration[mId=1,mName=null,mAttributes=128,mMaxPower=48,mInterfaces=[
I System.out: UsbInterface[mId=0,mAlternateSetting=0,mName=null,mClass=255,mSubclass=1,mProtocol=2,mEndpoints=[
I System.out: UsbEndpoint[mAddress=130,mAttributes=2,mMaxPacketSize=32,mInterval=0]
I System.out: UsbEndpoint[mAddress=2,mAttributes=2,mMaxPacketSize=32,mInterval=0]
I System.out: UsbEndpoint[mAddress=129,mAttributes=3,mMaxPacketSize=8,mInterval=1]]]]
I System.out: <-------------------------/dev/bus/usb/001/008------------------------->
I System.out: ------------------------->/dev/bus/usb/001/007<-------------------------
I System.out: UsbDevice[mName=/dev/bus/usb/001/007,mVendorId=6790,mProductId=29987,mClass=255,mSubclass=0,mProtocol=0,mManufacturerName=null,mProductName=USB2.0-Serial,mVersion=2.54,mSerialNumberReader=android.hardware.usb.IUsbSerialReader S t u b Stub StubProxy@ec18328, mHasAudioPlayback=false, mHasAudioCapture=false, mHasMidi=false, mHasVideoCapture=false, mHasVideoPlayback=false, mConfigurations=[
I System.out: UsbConfiguration[mId=1,mName=null,mAttributes=128,mMaxPower=48,mInterfaces=[
I System.out: UsbInterface[mId=0,mAlternateSetting=0,mName=null,mClass=255,mSubclass=1,mProtocol=2,mEndpoints=[
I System.out: UsbEndpoint[mAddress=130,mAttributes=2,mMaxPacketSize=32,mInterval=0]
I System.out: UsbEndpoint[mAddress=2,mAttributes=2,mMaxPacketSize=32,mInterval=0]
I System.out: UsbEndpoint[mAddress=129,mAttributes=3,mMaxPacketSize=8,mInterval=1]]]]
I System.out: <-------------------------/dev/bus/usb/001/007------------------------->
I System.out: <-------------------------GetDeviceList------------------------->

在这里插入图片描述


andoid开发文档

UsbManager(apiref.com)

UsbManager android-doc.com

UsbManager(matools.com)

Activity 生命周期概念


Qt for android 错误处理

Qt for Android 乱码问题


其他

Qt for android 文档(thinkinginqt.com)

Qt for android 官方文档(Qt6.2LTS)

Qt Project to Manifest Configuration

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1695514.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLOv10详细解读 | 一文带你深入了解yolov10的创新点(附网络结构图 + 举例说明)

前言 Hello大家好&#xff0c;我是Snu77&#xff0c;继YOLOv9发布时间没有多久&#xff0c;YOLOv10就紧接着发布于2024.5.23号&#xff08;不得不感叹YOLO系列的发展速度&#xff0c;但要纠正大家的观点就是不是最新的就一定最好&#xff09;&#xff01; 本文给大家带来的是…

Memcached 应该如何使用?

在【宝塔下应该用 Memcached 还是 Redis&#xff1f;】一文里&#xff0c;明月已经说过对于我们网站服务器来说 Memcached 才是首选&#xff0c;因为 Redis 虽然跟 Memcached 类似但更偏向于集群服务器&#xff0c;对于我们普通的站点服务器来说&#xff0c;也就是用了 Redis 大…

基于 BERT 对 IMDB 电影评论进行情感分类

前言 系列专栏:【深度学习:算法项目实战】✨︎ 涉及医疗健康、财经金融、商业零售、食品饮料、运动健身、交通运输、环境科学、社交媒体以及文本和图像处理等诸多领域,讨论了各种复杂的深度神经网络思想,如卷积神经网络、循环神经网络、生成对抗网络、门控循环单元、长短期记…

Tomcat部署项目的方式

目录 1、Tomcat发布项目的方式 方式1&#xff1a; 直接把项目发布到webapps目录下 方式2&#xff1a;项目发布到ROOT目录 方式3&#xff1a;虚拟路径方式发布项目 方式4&#xff1a;(推荐)虚拟路径&#xff0c;另外的方式&#xff01; 方式5&#xff1a;发布多个网站 1、…

用户态下屏蔽全局消息钩子 —— ClientLoadLibrary 指针覆盖

目录 前言 一、研究 SetWindowsHookEx 的机制 二、概念验证 三、运行效果分析 四、总结与展望 参考文献 原文出处链接&#xff1a;[https://blog.csdn.net/qq_59075481/article/details/139206017] 前言 SetWindowsHookEx 函数帮助其他人员注入模块到我们的进程&#x…

Java后端开发一年经验,跳槽如何准备?

跳槽是一项重要的决定&#xff0c;需要慎重考虑并做好充分的准备。我这里有一套编程入门教程&#xff0c;不仅包含了详细的视频讲解&#xff0c;项目实战。如果你渴望学习编程&#xff0c;不妨点个关注&#xff0c;给个评论222&#xff0c;私信22&#xff0c;我在后台发给你。 …

SpringCloud(3)-OpenFeign相关配置

OpenFeign 是个声明式 WebService 客户端&#xff0c;使用 OpenFeign 让编写 Web Service 客户端更简单。Spring Cloud 对 OpenFeign 进 行 了 封 装 使 其 支 持 了 Spring MVC 标 准 注 解 和 HttpMessageConverters。OpenFeign 可以与 Eureka 和 Ribbon 组合使用以支持负载均…

Tensorflow2.0笔记 - AutoEncoder做FashionMnist数据集训练

本笔记记录自编码器做FashionMnist数据集训练&#xff0c;关于autoencoder的原理&#xff0c;请自行百度。 import os import time import tensorflow as tf from tensorflow import keras from tensorflow.keras import datasets, layers, optimizers, Sequential, metrics, …

17.7K星开源产品分析平台:Posthog

Posthog&#xff1a;开源洞察&#xff0c;产品优化的得力助手 - 精选真开源&#xff0c;释放新价值。 概览 PostHog是一个全面开源的平台&#xff0c;旨在帮助团队构建更好的产品。它提供了从产品分析到会话回放、功能标志和A/B测试等一系列工具&#xff0c;支持自托管&#x…

Keras深度学习框架第二十讲:使用KerasCV中的Stable Diffusion进行高性能图像生成

1、绪论 1.1 概念 为便于后文讨论&#xff0c;首先进行相关概念的陈述。 Stable Diffusion&#xff1a;Stable Diffusion 是一个在图像生成领域广泛使用的技术&#xff0c;尤其是用于文本到图像的转换。它基于扩散模型&#xff08;Diffusion Models&#xff09;&#xff0c;这…

Springboot017学生读书笔记共享

springboot005学生心理咨询评估系统 亲测完美运行带论文&#xff1a;获取源码&#xff0c;私信评论或者v:niliuapp 运行视频 Springboot017学生读书笔记共享 包含的文件列表&#xff08;含论文&#xff09; 数据库脚本&#xff1a;db.sql其他文件&#xff1a;ppt.ppt论文&am…

Java+Swing+Mysql实现飞机订票系统

一、系统介绍 1.开发环境 操作系统&#xff1a;Win10 开发工具 &#xff1a;Eclipse2021 JDK版本&#xff1a;jdk1.8 数据库&#xff1a;Mysql8.0 2.技术选型 JavaSwingMysql 3.功能模块 4.数据库设计 1.用户表&#xff08;users&#xff09; 字段名称 类型 记录内容…

【Linux】Linux的安装

文章目录 一、Linux环境的安装虚拟机 镜像文件云服务器&#xff08;可能需要花钱&#xff09; 未完待续 一、Linux环境的安装 我们往后的学习用的Linux版本为——CentOs 7 &#xff0c;使用 Ubuntu 也可以 。这里提供几个安装方法&#xff1a; 电脑安装双系统&#xff08;不…

OpenWrt 安装Quagga 支持ospf Bgp等动态路由协议 软路由实测 系列四

1 Quagga 是一个路由软件套件, 提供 OSPFv2,OSPFv3,RIP v1 和 v2,RIPng 和 BGP-4 的实现. 2 web 登录安装 #或者ssh登录安装 opkg install quagga quagga-zebra quagga-bgpd quagga-watchquagga quagga-vtysh # reboot 3 ssh 登录 #重启服务 /etc/init.d/quagga restart #…

Linux下Vision Mamba环境配置+多CUDA版本切换

上篇文章大致讲了下Vision Mamba的相关知识&#xff0c;网上关于Vision Mamba的配置博客太多&#xff0c;笔者主要用来整合下。 笔者在Win10和Linux下分别尝试配置相关环境。 Win10下配置 失败 \textcolor{red}{失败} 失败&#xff0c;最后出现的问题如下&#xff1a; https://…

ps进程查看命令详解

1、PS 命令是什么 查看它的man手册可以看到&#xff0c;ps命令能够给出当前系统中进程的快照。它能捕获系统在某一事件的进程状态。如果你想不断更新查看的这个状态&#xff0c;可以使用top命令。 2、ps命令支持三种使用的语法格式 UNIX 风格&#xff0c;选项可以组合在一起…

flutter 实现旋转星球

先看效果 planet_widget.dart import dart:math; import package:flutter/material.dart; import package:vector_math/vector_math_64.dart show Vector3; import package:flutter/gestures.dart; import package:flutter/physics.dart;class PlanetWidget extends StatefulW…

Android14 - 绘制系统 - 概览

从Android 12开始&#xff0c;Android的绘制系统有结构性变化&#xff0c; 在绘制的生产消费者模式中&#xff0c;新增BLASTBufferQueue&#xff0c;客户端进程自行进行queue的生产和消费&#xff0c;随后通过Transation提交到SurfaceFlinger&#xff0c;如此可以使得各进程将缓…

Altium Designer 中键拖动,滚轮缩放,并修改缩放速度

我的版本是AD19&#xff0c;其他版本应该都一样。 滚轮缩放 首先&#xff0c;要用滚轮缩放&#xff0c;先要调整一下AD 设置&#xff0c;打开Preferences&#xff0c;在Mouse Wheel Configuration 里&#xff0c;把Zoom Main Window 后面Ctrl 上的对勾取消掉&#xff0c;再把…