1. 程式人生 > >安卓USB開發教程 安卓 AOA 1.0

安卓USB開發教程 安卓 AOA 1.0

Android Open Accessory Protocol 1.0(AOA 協議 1.0)

Android USB 配件必須遵從 Android Open Accessory(AOA)協議,該協議定義了配件如何檢測和建立與 Android 裝置的通訊。配件應執行以下步驟:

1. 等待並檢測連線的裝置

2. 確定裝置的配件模式支援

3. 嘗試以配件模式下啟動裝置(如果需要)

4. 如果裝置支援 AOA,與裝置建立通訊

以下部分介紹如何實現這些步驟。

Note:在開發通過 USB 連線到 Android 裝置的新配件時,請使用 AOAv2

等待並檢測連線的裝置

配件應該連續檢查連線的 Android 裝置。連線裝置時,配件應確定裝置是否支援配件模式。

確定配件模式支援

當連線 Android 裝置時,它可以是以下三種狀態之一:

1. 支援 Android 配件模式,並已經處於配件模式。

2. 支援 Android 配件模式,但不處於配件模式。

3. 不支援 Android 配件模式。

在初始連線期間,附件應檢查連線裝置的 USB 裝置描述符的廠商 ID 和產品 ID。廠商 ID 應該匹配 Google 的 ID(0x18D1)。如果裝置已經處於配件模式,產品 ID 應為0x2D000x2D01,配件可以使用自己的通訊協議通過批量傳輸端點establish communication with the device(裝置不需要在附件模式下啟動)。

Note:0x2D00 保留給支援配件模式的 Android 裝置。0x2D01 保留用於支援配件模式的裝置以及 Android Debug Bridge(ADB)協議,該協議顯示了用於 ADB 協議的有兩個批量端點的第二個介面。如果你正在計算機上模擬配件,可以使用這些端點來除錯配件應用程式。通常,不要使用此介面,除非配件在裝置上實現到 ADB 的傳輸。

如果 USB 裝置描述符中發現的廠商 ID 或產品 ID 與預期值不匹配,則配件無法確定裝置是否支援 Android 配件模式。配件應嘗試以配件模式(詳細說明如下)啟動裝置,以確定裝置支援情況。

嘗試從配件模式啟動

如果廠商和產品 ID 與配件模式下的 Android 裝置不相符,則配件無法辨別裝置是否支援(支援但不處於)配件模式,或者裝置是否不支援配件模式。這可能是因為支援配件模式(但不處於配件模式)的裝置最初報告裝置製造商廠商和產品 ID 而不是 AOA 廠商和產品 ID。

配件應嘗試以配件模式啟動裝置,以確定裝置是否支援該模式:

1. 傳送 51 控制請求(“Get Protocol”)以確定裝置是否支援 Android 配件協議。如果裝置支援協議,則返回非零數字,表示支援的協議版本。控制請求在端點0上具有以下特徵:

requestType:    USB_DIR_IN | USB_TYPE_VENDOR
request:        51
value:          0
index:          0
data:           protocol version number (16 bits little endian sent from the
                device to the accessory)

2. 如果裝置返回支援的協議版本,則向裝置傳送帶有標識字串資訊的控制請求。該資訊允許裝置確定適合配件的應用(或者向用戶呈現 URL 若不存在適合的應用)。控制請求位於端點0(對於每個字串 ID),具有以下特徵:

requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
request:        52
value:          0
index:          string ID
data            zero terminated UTF8 string sent from accessory to device

支援以下字串ID,每個字串的最大為256位元組(必須以 \ 0 為零終止)。

manufacturer name:  0
model name:         1
description:        2
version:            3
URI:                4
serial number:      5

3. 傳送控制請求,要求裝置以配件模式啟動。控制請求在端點0上具有以下特徵:

requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
request:        53
value:          0
index:          0
data:           none

完成這些步驟後,配件應等待連線的 USB 裝置在配件模式下將其自身重新引入匯流排,然後重新列舉所連線的裝置。如果裝置成功切換到配件模式,則應該是正確的(例如,對應於Google的供應商和產品ID而不是裝置製造商的ID)。如果 ID 正確,則配件移動至 establish communication with the device

Note:AOA 當前不支援同時進行 AOA 和 MTP 連線。 要從 AOA 切換到 MTP,配件必須首先斷開 USB 裝置(物理上或電氣上等效的方式),然後使用 MTP 重新連線。

如果任何步驟失敗,配件確定裝置不支援 Android 配件模式,並等待下一個裝置連線。

建立與裝置的通訊

如果配件檢測到處於配件模式的 Android 裝置,則配件可以查詢裝置介面和端點描述符,以獲取與裝置通訊的批量端點。
介面和批量端點的數量取決於產品 ID。 Android 裝置有產品 ID:

1. 0x2D00 具有一個有兩個批量端點的介面,用於輸入和輸出通訊。

2. 0x2D01 具有兩個介面,每個介面具有兩個批量端點,用於輸入和輸出通訊。 第一個介面處理標準通訊,第二個介面處理 ADB 通訊。 要使用介面,請找到第一個批量輸入和輸出端點,使用 SET_CONFIGURATION(0x09)裝置請求將裝置配置設定為 1,然後使用端點進行通訊。

相關推薦

USB開發教程 AOA 1.0

Android Open Accessory Protocol 1.0(AOA 協議 1.0) Android USB 配件必須遵從 Android Open Accessory(AOA)協議,該協議

【helloworld】-微信小程序開發教程-入門篇【1

基本 微信小程序開發 AI 彈出對話框 頁面 com 基本使用 alt 案例演示 1. 開篇導言 本節目標:旨在演示如何用開發者工具構建並運行簡單的 helloworld 應用。 目標用戶:無編程經驗,但對微信小程序感興趣的同學。 學習目標:開發者工具的基本使用流程

為64位ARMv8架構開發板交叉編譯openssl-1.0.2l

因科研實驗需要,完成了針對64為ARM架構目標開發板的交叉編譯,之前網上查詢了一些方法,有些並不可行,且操作性與可讀性都較差,這裡給出自己親手編譯成功的過程。 本次編譯的目標環境和編譯環境如下: 目標

USB攝像頭 開源庫 UVCCamera 教程

相關 () 通用 texture weak 接口 type conn listen https://github.com/saki4510t/UVCCamera UVCCamera 聽名字就知道使用UVC( USB VEDIO CLASS) 協議的通用類庫。linux原生支

帶領新手快速開發Android App開發視頻課程 快速入門教程

Android 第1章 課程介紹與項目準備如果你從事Android開發,那你一定要學習一些開發技巧和掌握一些開發邏輯,而很不巧,我這裏全部都有,最開始我們介紹一下我們這個應用的整體組織架構,通過對各個平臺的api進行一個簡單的分析,以及說明一下我們的RxVolley的網絡框架使用教程,在本章中,我們將分析整個

使用手機開發深度學習簡易教程(Python3+Keras)

本教程基於安卓手機平臺,在PyDroid3軟體上,使用Python3語言配合Keras框架開發深度學習。本文章主要涉及在手機上開發環境的搭建,以及簡單的示例程式碼,如果想深入研究開發,還需要讀者自己花些功夫了。不廢話,開始教程。。 準備工作 1、手上需要有一個安卓手機,最近兩年

Android APP 快速開發教程

Android APP 快速開發教程(安卓) 前言 本篇部落格從開發的角度來介紹如何開發一個Android App,需要說明一點是,這裡只是提供一個如何開發一個app的思路,並不會介紹很多技術上的細節,從整個大局去把握如何去構思一個app的開發,讓你對獨立開發一款app的時候有個理解

USB HOST開發之Android平板+OTG線+4口USB hub+4個HID裝置

        首先解釋一下此開發應用方案涉及到的幾個術語。意思不弄明白,就不好往下玩了。 釋義說明:        USB host:USB主裝置,可以從另外一個USB 從裝置中取得資料,包括USB host控制器和USB host協議。有主就有從,host裝置與USB

工業平板電腦的藍牙開發教程

reat text equals receive com mail break oot ise 開發系統:Android4.4.2 運行平臺:廣州微嵌安卓工業平板電腦 安卓的藍牙的打開包括獲取藍牙模塊、搜索藍牙設備、藍牙設備間的配對、連接跟通信等部分。 1、安卓中使用藍牙模

搭建測試開發環境

adt1. JDK 32位 or 64位 java -version2. ADT 32位 or 64位 下載後,解壓到某個目錄,並配置環境變量:新建ANDROID_HOMED:\adt-bundle-windows-x86_64-20131030\sdkPath,編輯,在後面添加:%AND

Eclipse開發人員的福音

baidu vpn 下載鏈接 .net aid rip track ips .com 我們知道。谷歌已經放棄對Eclipse(ADT)的維護更新了。如今官網上也找不到ADT的下載鏈接了,我們大多數同學仍在使用的ADT版本號可能已經非常老了,預計大多數的S

傳智播客 視頻 教程

ast 程序員 sha 自定義控件 path target 平板電腦 更多 list 韓夢飛沙 韓亞飛 [email protected] yue31313 han_meng_fei_sha 傳智播客 Android視頻教程_傳智播客和黑馬程序員An

為IONIC開發apk簽名

如果 gconf 檢查 validity borde 發的 line 內容 運行 首先進入\platforms\android目錄生成一個keystore文件: keytool -genkey -alias mykey -keyalg RSA -validity 40

工程化開發筆記(1

測試 商業 軟件開發 界面 計算機 數學 開發流程 str sof 2018.3.8日 一、什麽是軟件工程? 1、軟件工程 是把系統的、有序的、可量化的方法應用到軟件的開發、運營和維護上的過程。 2、軟件工程包括下列領域 軟件需求分析、軟件設計、軟件構建、軟件測試和軟件

工程化開發筆記(2)

設計 說明 規劃 選擇 軟件企業 需求分析 結構 系統 周期 一、軟件生命周期 1、軟件定義期: 軟件定義是由軟件系統分析人員和用戶合作,確定軟件是什麽,針對有待開發的軟件系統進行分析、規劃和規格描述,為今後的軟件開發做準備。 (1)軟件任務立項 (2)項目可行性分析 (3

20165317實驗四 程序開發

否則 項目 image AS www. 布局 灰色 事件處理 教材 實驗四 安卓程序開發 提交點一 任務: Android Stuidio的安裝測試: 參考《Java和Android開發學習指南(第二版)(EPUBIT,Java for Android 2nd)》第二十四章

-深入淺出MVVM教程》之應用篇

getter apk 更新 processor 技術 tac bind end mat 背景 這幾年 MVP 架構在安卓屆非常流行,幾乎已經成為主流框架,它讓業務邏輯 和 UI操作相對獨立,使得代碼結構更清晰。 MVVM 在前端火得一塌糊塗,而在安卓這邊卻基本沒見到幾個人在

app開發-04- app運行的運行和調試

許可 完成 acc targe settings andro 安卓app開發 href 一個 app 運行的運行和調試 本篇介紹在 Android Studio 開發工具,運行調試設備:真機和虛擬機。 真機調試(USB 連接手機) 盡量使用真機進行調試,無論是調試效果和速度

Intellij Idea12第一個程式開發(HelloWorld)及簡單講解Android

一、前言           本helloworld只有3行程式碼,皆為讓沒做過安卓的朋友看看安卓的目錄結構以及基本的開發方式。      &

H5對WeView開發中的影響

 1.body,或者html 高度為100% 會導致下拉直接觸發原生的重新整理控制元件,而不是webView滑動到頂部後重新整理,以及不會執行onScrollChanged 方法,並且getScrollY 總是返回0 ,getContentHeight * getScale 的值總是與webView