Android的聯通性 USB主機模式(一)

2021-08-27 17:15:20 字數 3925 閱讀 9761

本文譯自:

當你的android裝置在usb主機模式中時,它作為usb主機給從屬裝置供電,並會列舉被連線的usb裝置。usb主機模式在android3.1以後開始被支援。

api概要

在開始之前,重要的是要理解工作中所需要的類。下表介紹了在android.hardware.usb包中的usb主機模式api。

表1.usb主機模式api 類

介紹usbmanager

用於列舉被連線的usb裝置,並跟其通訊。

usbdevice

代表了乙個被連線的usb裝置,並且包含了訪問它的識別資訊、介面、和端點的方法。

usbinte***ce

代表了乙個usb裝置的介面,該介面定義了裝置的一組功能。乙個裝置可以有乙個或多個用於通訊的介面。

usbendpoint

代表乙個介面端點,它是跟介面通訊的通道。乙個介面可以有乙個或多個端點,通常會有跟裝置進行雙工通訊的輸入和輸出端點。

usbdeviceconnection

代表乙個裝置連線,它在端點之上傳輸資料。這個類用於在連線的兩個裝置間使用同步或非同步的方式來回傳送資料。

usbrequest

代表乙個通過usbdeviceconnection物件跟裝置通訊的非同步請求。

usbconstants

定義了跟linux核心中linux/usb/ch9.h檔案定義對應的usb常量。

在大多數情況中,跟usb裝置通訊時,需要使用所有這些類(如果你是在使用非同步通訊,那麼只需要使用usbrequest類)。通常,要使用usbmanager物件來獲取期望的usbdevice物件。當你有了這個usbdevice物件時,就需要查詢對應的usbinte***ce物件和基於該介面通訊的usbendpoint物件。一旦獲取了正確的端點,就可以開啟usbdeviceconnect物件來跟usb裝置進行通訊了。

android清單要求

在使用usb主機模式api工作之前,你需要把以下介紹的內容新增到你的應用程式清單中:

1.因為不是所有的android裝置都保證支援usb主機模式,所以要在你的應用程式宣告中包含元素,以宣告你的應用程式要使用android.hardware.usb.host功能。

2.把應用程式的最小sdk設定為api level 12或更高的版本。在較早的api版本中不存在usb主機模式api。

3.如果你希望你的應用程式能夠獲得接入usb裝置時的通知,那麼還要在你的主activity中指定用android.hardware.usb.action.usb_device_attached型別的intent來配對的和元素。元素要指向乙個外部的xml資源檔案,該檔案宣告了希望檢測的裝置的識別資訊。

在這個xml資源檔案中,要用元素來宣告你想要過濾的usb裝置。以下列出了元素的屬性。通常,使用vendor-id和product-id來指定你所希望過濾的特定的裝置,並且使用class、subclass和protocol來指定你所希望過濾的usb裝置組,如大容量儲存裝置或數位相機。你可以不指定任何屬性,或所有全部屬性。不指定任何屬性,就會跟所有usb裝置匹配,如果應用程式需要,就可以這樣做:

a.vendor-id

b.product-id

c.class

d.subclass

e.protocol(裝置或介面)

在res/xml目錄中儲存這個資源檔案。該資源檔案的名稱(不含.xml副檔名)必須跟元素中指定的名稱相同。xml資源檔案的格式請看下例。

清單和資源檔案的示例

以下是乙個簡單的清單檔案和它所對應的資源檔案:

......

android:resource="@xml/device_filter" />

在這個例項中,下面的資源檔案應該被儲存在res/xml/device_filter.xml中,並且指定了所有的用於過濾usb裝置的屬性:

<?xml version="1.0" encoding="utf-8"?>

當你的android裝置在usb主機模式中時,它作為usb主機給從屬裝置供電,並會列舉被連線的usb裝置。usb主機模式在android3.1以後開始被支援。

api概要

在開始之前,重要的是要理解工作中所需要的類。下表介紹了在android.hardware.usb包中的usb主機模式api。

表1.usb主機模式api 類

介紹usbmanager

用於列舉被連線的usb裝置,並跟其通訊。

usbdevice

代表了乙個被連線的usb裝置,並且包含了訪問它的識別資訊、介面、和端點的方法。

usbinte***ce

代表了乙個usb裝置的介面,該介面定義了裝置的一組功能。乙個裝置可以有乙個或多個用於通訊的介面。

usbendpoint

代表乙個介面端點,它是跟介面通訊的通道。乙個介面可以有乙個或多個端點,通常會有跟裝置進行雙工通訊的輸入和輸出端點。

usbdeviceconnection

代表乙個裝置連線,它在端點之上傳輸資料。這個類用於在連線的兩個裝置間使用同步或非同步的方式來回傳送資料。

usbrequest

代表乙個通過usbdeviceconnection物件跟裝置通訊的非同步請求。

usbconstants

定義了跟linux核心中linux/usb/ch9.h檔案定義對應的usb常量。

在大多數情況中,跟usb裝置通訊時,需要使用所有這些類(如果你是在使用非同步通訊,那麼只需要使用usbrequest類)。通常,要使用usbmanager物件來獲取期望的usbdevice物件。當你有了這個usbdevice物件時,就需要查詢對應的usbinte***ce物件和基於該介面通訊的usbendpoint物件。一旦獲取了正確的端點,就可以開啟usbdeviceconnect物件來跟usb裝置進行通訊了。

android清單要求

在使用usb主機模式api工作之前,你需要把以下介紹的內容新增到你的應用程式清單中:

1.因為不是所有的android裝置都保證支援usb主機模式,所以要在你的應用程式宣告中包含元素,以宣告你的應用程式要使用android.hardware.usb.host功能。

2.把應用程式的最小sdk設定為api level 12或更高的版本。在較早的api版本中不存在usb主機模式api。

3.如果你希望你的應用程式能夠獲得接入usb裝置時的通知,那麼還要在你的主activity中指定用android.hardware.usb.action.usb_device_attached型別的intent來配對的和元素。元素要指向乙個外部的xml資源檔案,該檔案宣告了希望檢測的裝置的識別資訊。

在這個xml資源檔案中,要用元素來宣告你想要過濾的usb裝置。以下列出了元素的屬性。通常,使用vendor-id和product-id來指定你所希望過濾的特定的裝置,並且使用class、subclass和protocol來指定你所希望過濾的usb裝置組,如大容量儲存裝置或數位相機。你可以不指定任何屬性,或所有全部屬性。不指定任何屬性,就會跟所有usb裝置匹配,如果應用程式需要,就可以這樣做:

a.vendor-id

b.product-id

c.class

d.subclass

e.protocol(裝置或介面)

在res/xml目錄中儲存這個資源檔案。該資源檔案的名稱(不含.xml副檔名)必須跟元素中指定的名稱相同。xml資源檔案的格式請看下例。

清單和資源檔案的示例

以下是乙個簡單的清單檔案和它所對應的資源檔案:

......

android:resource="@xml/device_filter" />

在這個例項中,下面的資源檔案應該被儲存在res/xml/device_filter.xml中,並且指定了所有的用於過濾usb裝置的屬性:

<?xml version="1.0" encoding="utf-8"?>

Android的聯通性 USB主機模式(一)

本文譯自 當你的android裝置在usb主機模式中時,它作為usb主機給從屬裝置供電,並會列舉被連線的usb裝置。usb主機模式在android3.1以後開始被支援。api概要 在開始之前,重要的是要理解工作中所需要的類。下表介紹了在android.hardware.usb包中的usb主機模式ap...

邏輯的聯通性

假如有命題p 一定能推出命題q,則稱p 是q 的充分條件,q 是p 的必要條件。特別的,當p 既是q 的充分條件,又是q 的必要條件時,稱p 和q 互為充要條件 現在有n 個命題,其中一些是另一些的充分條件。請問有多少對命題互為充要條件?第一行三個正整數n,m,分別表示命題數 已知關係數 接下來m ...

例項的網路聯通性問題

9月8日更新 解釋及解決辦法 解釋 openstack中有兩種ip位址的概念 fixed ip和floating ip。fixed ip 是例項的真實ip,在建立例項時注入,如果作業系統不支援注入如windows,openstack會在例項啟動後通過dhcp方式把fixed ip分配給例項。floa...