日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

安卓USB开发教程 五 安卓 AOA 1.0

發布時間:2023/12/9 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 安卓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 thedevice 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 設備在配件模式下將其自身重新引入總線,然后重新枚舉所連接的設備。如果設備成功切換到配件模式,則通過檢查廠商和產品 ID 的算法determines accessory mode support?應該是正確的(例如,對應于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,然后使用端點進行通信。


原文鏈接:https://source.android.com/devices/accessories/aoa



總結

以上是生活随笔為你收集整理的安卓USB开发教程 五 安卓 AOA 1.0的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。