Qt for android 獲取USB設備列表(一)Java方式 獲取

簡介

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(){}@Overridepublic 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.pswp.cn/web/15619.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/15619.shtml
英文地址,請注明出處:http://en.pswp.cn/web/15619.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java8新特性——函數式編程詳解

目錄 一 概述1.1 背景1.2 函數式編程的意義1.3 函數式編程的發展 Lambda表達式1.1 介紹1.2 使用Lambda的好處1.3 Lambda方法1.3.1 Lambda表達式結構1.3.2 Lambda表達式的特征 1.4 Lambda的使用1.4.1 定義函數式接口1.4.2 Lambda表達式實現函數式接口1.4.3 簡化Lambda表達式1.4.…

C++學習/復習4--與類相關的概念/默認成員函數/運算符重載/Date類實現案例

一、類和對象 1.本章概要 2.C中的結構體(struct與class) 升級為類 &#xff08;1&#xff09;類及成員函數的兩種定義方式 聲明與定義分離 &#xff08;2&#xff09;權限 注意1&#xff1a;struct/class在權限上的區別 &#xff08;3&#xff09;封裝 &#xff08;4&#x…

AI學習指南數學工具篇-凸優化之對偶性與拉格朗日對偶

AI學習指南數學工具篇-凸優化之對偶性與拉格朗日對偶 在凸優化中&#xff0c;對偶性是一個非常重要的概念。通過對偶性&#xff0c;我們可以將原始問題轉化為對偶問題&#xff0c;從而更容易求解。其中&#xff0c;拉格朗日對偶問題是對偶性的一個重要應用&#xff0c;通過拉格…

《Ai學習筆記》自然語言處理 (Natural Language Processing):機器閱讀理解-基礎概念解析01

自然語言處理 (Natural Language Processing)&#xff1a; NLP四大基本任務 序列標注&#xff1a; 分詞、詞性標注 分類任務&#xff1a; 文本分類、情感分析 句子關系&#xff1a;問答系統、對話系統 生成任務&#xff1a;機器翻譯、文章摘要 機器閱讀理解的定義 Machi…

LangChain - 建立代理

本文翻譯整理自&#xff1a;Build an Agent https://python.langchain.com/v0.2/docs/tutorials/agents/ 文章目錄 一、說明概念 二、定義工具1、TavilyAPI參考&#xff1a; 2、RetrieverAPI參考&#xff1a;API參考&#xff1a; 3、工具 三、使用語言模型四、創建代理五、運行…

《安富萊嵌入式周報》第337期:超高性能信號量測量,協議分析的開源工具且核心算法開源,工業安全應用的雙通道數字I/O模組,低成本腦機接口,開源音頻合成器

周報匯總地址&#xff1a;http://www.armbbs.cn/forum.php?modforumdisplay&fid12&filtertypeid&typeid104 視頻版&#xff1a; https://link.zhihu.com/?targethttps%3A//www.bilibili.com/video/BV1PT421S7TR/ 《安富萊嵌入式周報》第337期&#xff1a;超高性…

【Spring Boot】分層開發 Web 應用程序(含實例)

分層開發 Web 應用程序 1.應用程序分層開發模式&#xff1a;MVC1.1 了解 MVC 模式1.2 MVC 和三層架構的關系 2.視圖技術 Thymeleaf3.使用控制器3.1 常用注解3.1.1 Controller3.1.2 RestController3.1.3 RequestMapping3.1.4 PathVariable 3.2 將 URL 映射到方法3.3 在方法中使用…

用戶數據報協議UDP實現可靠傳輸的思路

一、UDP協議的特點 按照報文來分割發送。不需要建立連接和維護連接。不需要接收確認。速度較快。不確保接收的順序和發送順序一樣。 二、用UDP實現可靠通信的思路 (一)接收時發送一個確認報文 實現接收確認的機制。 (二)每個報文騰出空間放置序號 發送時設置序號&#xff0c…

如何安裝虛擬機Wmware,并且在虛擬機中使用centos系統

1. 前言 大家好&#xff0c;我是jiaoxingk 本篇文章主要講解如何安裝虛擬機&#xff0c;并且在虛擬機中安裝centos系統&#xff0c;讓windows電腦也能夠使用Linux系統 2. 虛擬機的介紹 在安裝Vmware之前&#xff0c;我們先做虛擬機的介紹 虛擬機&#xff1a;通過軟件虛擬出來的…

Docker拉取鏡像報錯:x509: certificate has expired or is not yet v..

太久沒有使用docker進行鏡像拉取&#xff0c;今天使用docker-compose拉取mongo發現報錯&#xff08;如下圖&#xff09;&#xff1a; 報錯信息翻譯&#xff1a;證書已過期或尚未有效。 解決辦法&#xff1a; 1.一般都是證書問題或者系統時間問題導致&#xff0c;可以先執行 da…

用HAL庫改寫江科大的stm32入門例子-6-2 定時器外部時鐘

實驗目的&#xff1a; 熟悉外部時鐘的應用。 實驗步驟&#xff1a; 創建項目參照前面的文章&#xff0c;集成oled(沒有oled,用uart串口傳遞也可以)選擇外部時鐘源時鐘源參數設置編寫代碼&#xff1a; 5.1聲明全局變量&#xff0c;如果發生定時器中斷的時候&#xff0c;在回調…

SW 零件插入零件的重合配合

重合配合有時候會失效,可以先用距離配合代替,之后修改距離盡量接近

AI網絡爬蟲-自動獲取百度實時熱搜榜

工作任務和目標&#xff1a;自動獲取百度實時熱搜榜的標題和熱搜指數 標題&#xff1a;<div class"c-single-text-ellipsis"> 東部戰區臺島戰巡演練模擬動畫 <!--48--></div> <div class"hot-index_1Bl1a"> 4946724 </div> …

【bash】統計服務器信息腳本

起因 寫一個bash腳本統計服務器的機器名、內網IP、CPU使用率、內存使用率、List{GPU使用率、顯存} 腳本 #!/bin/bash# 主機名 hostname$(hostname) # 內網ip ip$(ip addr | grep inet | grep -v 127.0.0.1 | awk {print $2} | cut -d/ -f1) ip$(echo "$ip"|tr \n…

Excel表格在線解密:輕松解密密碼,快速恢復數據

忘記了excel表格密碼&#xff1f;教你簡單兩步走&#xff1a;具體步驟如下。首先&#xff0c;在百度搜索中鍵入“密碼帝官網”。其次&#xff0c;點擊“立即開始”&#xff0c;在用戶中心上傳表格文件即可找回密碼。這種方法不用下載軟件&#xff0c;操作簡單易行&#xff0c;適…

【DZ模板】價值288克米設計APP手機版DZ模板 數據本地化+完美使用

模版介紹 【DZ模板】價值288克米設計APP手機版DZ模板 數據本地化完美使用 騰訊官方出品discuz論壇DIY的后臺設置&#xff0c;功能齊全&#xff0c;論壇功能不亞于葫蘆俠&#xff0c;自定義馬甲&#xff0c;自定義認證&#xff0c;自定義廣告&#xff0c;完全可以打造出自己想…

元本學堂是什么?杜旭東疑似再翻車!

杜旭東&#xff0c;1956年1月7日出生于中國北京市&#xff0c;畢業于解放軍藝術學院&#xff0c;中國內地男演員、國家一級演員&#xff01; 2023年11月17日晚&#xff0c;杜旭東在其個人社交媒體上發布視頻&#xff0c;就其以前給緬北電詐集團的白家成員錄制慶生視頻一事道歉…

C++11std::bind的簡單使用

std::bind用來將可調用對象與其參數一起進行綁定&#xff0c;綁定后的結果可以用std::function&#xff08;可調用對象包裝器&#xff09;進行保存&#xff0c;并延遲調用到任何我們需要的時候。 通俗來講&#xff0c;它主要有兩大作用&#xff1a; &#xff08;1&#xff09…

每日一題Cat, Fox and the Lonely Array

文章目錄 題名&#xff1a;題意&#xff1a;題解&#xff1a;代碼&#xff1a; 題名&#xff1a; Cat, Fox and the Lonely Array 題意&#xff1a; 給定一個數組a&#xff0c;求出最小的k&#xff0c;滿足數組每個長度為k的連續子數組元素按位或答案都相等。 題解&#xf…