導航:首頁 > 操作系統 > androidusb協議

androidusb協議

發布時間:2022-12-11 13:40:07

android如何設置USB的com3口

如下:
1、mainfest中注冊監聽USB拔插動作並且過濾對應vid,pid的設備。這個是靜態的,在下面實例中用的是動態的,具體可以參考引用中的第【2】個。
2、查找所有的USB設備
3、動態注冊需要用的USB設備許可權
4、連接已注冊的USB設備,並設置連接參數
5、設置返回監聽,並對話
6、按照不同的協議解析byte[]數據獲得對應數據(在此不表)
7、關閉連接等

㈡ Android 手機上的 USB MIDI 是做什麼用的怎麼用

USB MIDI是一種協議,能夠讓支持這種樂器的設備跟手機相連接,因此想要開啟這個功能,或者是midi鍵盤控制手機或者在手機上面使用,必須自己有對應的鍵盤,並且手機要支持這個功能。

使用方法:

1、把ogt數據線以及鍵盤手機准備好,把otg數據線一頭跟手USB連接,一頭跟鍵盤連接。

(2)androisb協議擴展閱讀:

MIDI產生背景:

MIDI發明者,是美國的加州音樂人,Dave Smith。

三十年前,音樂人沒法同時操縱多個樂器,因為當時各種樂器是不可連接的。需要左右手同時彈奏兩個鍵盤。

此後,合成器製造商Dave Smith,說服了唱片商採用了一種叫做「樂器數字介面」(Musical Instrument Digital Interface,MIDI)的通用格式,這種格式能夠讓合成器受到外部鍵盤信號控制,可以由唱片商的競爭對手製作,甚至直接從電腦輸出。

使運算速度足夠快的電腦處理音符采樣,並能同時控制多個鍵盤和鼓機。

MIDI標准能讓人們在自己家裡進行音樂創作,使人們終於能夠把合成器和鼓機連接到電腦上。於是,MIDI很快變成了連接各種型號的合成器、鼓機、采樣數據和計算機的產業標准。

MIDI無論放置在哪裡,都能在一個合成器上演奏些東西,並能在另外一個合成器上播放完全一樣的聲響。復雜而精心控制的的合成器聲效、鼓機和采樣樣本見證了編曲技術從不可能到可能的轉變。隨著這種全新定義的製作方式,舞曲這種新的音樂類型誕生了。

第一台能夠兼容MIDI格式的是一個由Dave Smith製作、叫做Prophet-900的合成器。它在1982年12月退役。 在當時的青少年游戲玩家中流行的Atari以及Commodore64型計算機也能通過一個5針的線纜控制另一端的MIDI樂器。

MIDI音樂格式,帶有強烈的電子感,以及廣泛適用性和便利性,催生了那個年代眾多的音樂類型。重塑了1980年代的流行樂。

MIDI格式早期的的「開源精神」概念,讓每個人都能創作」復雜的音樂片段」,MIDI標準的支持者推動它成為連接著著全世界的自由紐帶。三十年以後,MIDI仍然強勁不衰,作為專業音樂錄制和製作的關鍵組件而存續著。

㈢ 如何寫一個Android USB介面驅動

說到 android 驅動是離不開 linux 驅動的。Android 內核採用的是 Linux2.6 內核 (最近Linux 3.3 已經包含了一些 Android 代碼)。但 Android 並沒有完全照搬 Linux 系統內核,除了對Linux 進行部分修正,還增加了不少內容。android 驅動 主要分兩種類型:Android 專用驅動 和 Android 使用的設備驅動(linux)。
Android 專有驅動程序:
1)Android Ashmem 匿名共享內存; 為用戶空間程序提供分配內存的機制,為進程間提供大塊共享內存,同時為內核提供回收和管理這個內存。
2)Android Logger 輕量級的LOG(日誌) 驅動;
3)Android Binder 基於 OpenBinder 框架的一個驅動;
4)Android Power Management 電源管理模塊;
5)Low Memory Killer 低內存管理器;
6)Android PMEM 物理內存驅動;
7)USB Gadget USB 驅動(基於 gaeget 框架);
8)Ram Console 用於調試寫入日誌信息的設備;
9)Time Device 定時控制設備;
10)Android Alarm 硬體時鍾;

Android 上的設備驅動:
1)Framebuff 顯示驅動;
2)Event 輸入設備驅動;
3)ALSA 音頻驅動;
4)OSS 音頻驅動;
5)v412攝像頭:視頻驅動;
6)MTD 驅動;
7)藍牙驅動;
8)WLAN 設備驅動;
Android 專有驅動程序

1.Android Ashmem
為用戶空間程序提供分配內存的機制,為進程間提供大塊共享內存,同時為內核提供回收和管理這個內存。
設備節點:/dev/ashmen .主設備號 10.
源碼位置: include/linux/ashmen.h Kernel /mm/ashmen.c
相比於 malloc 和 anonymous/named mmap 等傳統的內存分配機制,其優勢是通過內核驅動提供了輔助內核的內存回收演算法機制(pin/unoin)
2.Android Logger
無論是底層的源代碼還上層的應用,我們都可以使用 logger 這個日誌設備看、來進行調試。
設備節點: /dev/log/main /dev/log/event /dev/log/radio
源碼位置:include/linux/logger.h include/linux/logger.c
3.Android Binder
IPC Binder 一種進程間通信機制。他的進程能夠為其它進程提供服務 ----- 通過標準的 Linux 系統調用 API。
設備節點 :/dev/binder
源碼位置:Kernel/include/linux/binder.h Kernel/drivers/misc/binder.c
4.Android Power Management
一個基於標准 linux 電源管理的輕量級 Android 電源管理系統,在 drivers/android/power.c kernel/power/
5.Low Memory Killer
它在用戶空間中指定了一組內存臨界值,當其中某個值與進程描述中的 oom_adj 值在同一范圍時,該進程將被Kill掉(在parameters/adj中指定oome_adj 的最小值)。它與標準的Linux OOM機制類似,只是實現方法不同
源碼位置:drivers/misc/lowmemorykiller.c
6.Android PMEM
PMEM 主要作用就是向用戶空間提供連續的物理內存區域。
1.讓 GPU 或 VPU 緩沖區共享 CPU 核心。
2.用於 Android service 堆。
源碼位置:include/linux/android_pmem.h drivers/android/pmem.c
7.USB Gadget
基於標准 Linux USB gaeget 驅動框架的設備驅動。
源碼位置:drivers/usb/gadet/
8.Ram Console
為了提供調試功能,android 允許將調試日誌信息寫入這個設備,它是基於 RAM 的 buffer.
源碼位置: drivers/staging/android/ram_console.c
9.Time Device
定時控制,提供了對設備進行定時控制的功能。
源碼位置:drivers/staging/android/timed_output.c(timed_gpio.c)
10.Android Alarm
提供一個定時器,用於把設備從睡眠狀態喚醒,同時它還提供了一個即使在設備睡眠時也會運行的時鍾基準。
設備節點:/dev/alarm
源碼位置:drivers/trc/alarm.c
Android 設備驅動
1. Framebuffer 幀緩存設備
Framebuffer 驅動在 Linux 中是標準的顯示設備的驅動。對於 PC 系統,它是顯卡的驅動 ; 對於嵌入式 SOC 處理器系統,它是 LCD 控制器或者其他顯示控制器的驅動。它是一個字元設備,在文件系統中設備節點通常是 /dev/fbx 。 每個系統可以有多個顯示設備 , 依次用 /dev/fbO 、 /dev/fb l
等來表示。在 Android 系統中主設備號為 29 ,次設備號遞增生成。
Android 對 Framebuffer 驅動的使用方式是標準的 , 在 / dev / graphie / 中的 Framebuffer 設備節點由 init 進程自動創建 , 被 libui 庫調用 。 Android 的 GUI 系統中 , 通過調用 Framebuffer 驅動的標准介面,實現顯示設備的抽象。

Framebuff的結構框架和實現 :

linux LCD驅動(二)--FrameBuffer

Linux LCD驅動(四)--驅動的實現
2.Event輸入設備驅動
Input 驅動程序是 Linux 輸入設備的驅動程序 , 分為游戲桿 (joystick) 、 滑鼠 (mouse 和 mice)和事件設備 (Event queue)3 種驅動程序。其中事件驅動程序是目前通用的程序,可支持鍵盤 、 滑鼠、觸摸屏等多種輸入設備。 Input 驅動程序的主設備號是 l3 ,每一種 Input 設備從設備號占 用5 位 , 3 種從設備號分配是 : 游戲桿 0 ~ 61 ; Mouse 滑鼠 33 ~ 62 ; Mice 滑鼠 63 ; 事件設備 64 ~ 95 ,各個具體的設備在 misc 、 touchscreen 、 keyboard 等目錄中。
Event 設備在用戶空問使用 read 、 ioctl 、 poll 等文件系統的介面操作, read 用於讀取輸入信息, ioctl 用於獲取和設置信息, poll 用於用戶空間的阻塞,當內核有按鍵等中斷時,通過在中斷中喚醒內核的 poll 實現。

Event 輸入驅動的架構和實現:
Linux設備驅動之——input子系統

3.ALSA音頻驅動
高級 Linux 聲音體系 ALSA(Advanced Linux Sound Architecture ) 是為音頻系統提供驅動 的Linux 內核組件,以替代原先的開發聲音系統 OSS 。它是一個完全開放源代碼的音頻驅動程序集 ,除了像 OSS 那樣提供一組內核驅動程序模塊之外 , ALSA 還專門為簡化應用程序的編寫提供相應的函數庫,與 OSS 提供的基於 ioctl 等原始編程介面相比, ALSA 函數庫使用起來要更加方便一些
利用該函數庫,開發人員可以方便、快捷地開發出自己的應用程序,細節則留給函數庫進行內部處理 。 所以雖然 ALSA 也提供了類似於 OSS 的系統介面 , 但建議應用程序開發者使用音頻函數庫,而不是直接調用驅動函數。
ALSA 驅動的主設備號為 116 ,次設備號由各個設備單獨定義,主要的設備節點如下:
/ dev / snd / contmlCX —— 主控制 ;
/ dev / snd / pcmXXXc —— PCM 數據通道 ;
/ dev / snd / seq —— 順序器;
/ dev / snd / timer —— 定義器。
在用戶空問中 , ALSA 驅動通常配合 ALsA 庫使用 , 庫通過 ioctl 等介面調用 ALSA 驅動程序的設備節點。對於 AIJSA 驅動的調用,調用的是用戶空間的 ALsA 庫的介面,而不是直接調用 ALSA 驅動程序。
ALSA 驅動程序的主要頭文件是 include / sound ./ sound . h ,驅動核心數據結構和具體驅動的注冊函數是 include / sound / core . h ,驅動程序 的核心實現是 Sound / core / sound . c 文件。
ALSA 驅動程序使用下面的函數注冊控制和設備:
int snd _ pcm _ new (struct snd _ card * card , char * id , int device , int playback _ count , int capture _ count , struct snd _ pcm ** rpcm) ;
int snd ctl _ add(struct snd _ card * card , struct snd _ kcontrol * kcontro1) ;
ALSA 音頻驅動在內核進行 menuconfig 配置時 , 配置選項為 「 Device Drivers 」 > 「 Sound c ard support 」 一 > 「 Advanced Linux Sound Architecture 」 。子選項包含了 Generic sound devices( 通用聲音設備 ) 、 ARM 體系結構支持,以及兼容 OSS 的幾個選項。 ALsA 音頻驅動配置對應的文件是sound / core / Kconfig 。
Android 沒有直接使用 ALSA 驅動,可以基於 A-LSA 驅動和 ALSA 庫實現 Android Audio 的硬體抽象層; ALSA 庫調用內核的 ALSA 驅動, Audio 的硬體抽象層調用 ALSA 庫。
4.OSS音頻驅動
OSS(Open Sound System開放聲音系統)是 linux 上最早出現的音效卡驅動。OSS 由一套完整的內核驅動程序模塊組成,可以為絕大多數音效卡提供統一的編程介面。
OSS 是字元設備,主設備號14,主要包括下面幾種設備文件:
1) /dev/sndstat
它是音效卡驅動程序提供的簡單介面,它通常是一個只讀文件,作用也只限於匯報音效卡的當前狀態。(用於檢測音效卡)
2)/dev/dsp
用於數字采樣和數字錄音的設備文件。對於音頻編程很重要。實現模擬信號和數字信號的轉換。

3)/dev/audio
類似於/dev/dsp,使用的是 mu-law 編碼方式。

4)/dev/mixer
用於多個信號組合或者疊加在一起,對於不同的音效卡來說,其混音器的作用可能各不相同。

5)/dev/sequencer
這個設備用來對音效卡內建的波表合成器進行操作,或者對 MIDI 匯流排上的樂器進行控制。
OSS 驅動所涉及的文件主要包括:
kernel/include/linux/soundcard.h
kernel/include/linux/sound.h 定義 OSS 驅動的次設備號和注冊函數
kernel/sound_core.c OSS核心實現部分
5.V4l2視頻驅動
V4L2是V4L的升級版本,為linux下視頻設備程序提供了一套介面規范。包括一套數據結構和底層V4L2驅動介面。V4L2提供了很多訪問介面,你可以根據具體需要選擇操作方法。需要注意的是,很少有驅動完全實現了所有的介面功能。所以在使用時需要參考驅動源碼,或仔細閱讀驅動提供者的使用說明。
V4L2的主設備號是81,次設備號:0~255,這些次設備號里也有好幾種設備(視頻設備、Radio設備、Teletext、VBI)。
V4L2的設備節點: /dev/videoX, /dev/vbiX and /dev/radioX
Android 設備驅動(下)

MTD 驅動
Flash 驅動通常使用 MTD (memory technology device ),內存技術設備。
MTD 的字元設備:
/dev/mtdX
主設備號 90.
MTD 的塊設備:
/dev/block/mtdblockX

主設備號 13.
MTD 驅動源碼

drivers/mtd/mtdcore.c:MTD核心,定義MTD原始設備
drivers/mtd/mtdchar.c:MTD字元設備
drivers/mtd/mtdblock.c:MTD塊設備
MTD 驅動程序是 Linux 下專門為嵌入式環境開發的新一類驅動程序。Linux 下的 MTD 驅動程序介面被劃分為用戶模塊和硬體模塊:
用戶模塊 提供從用戶空間直接使用的介面:原始字元訪問、原始塊訪問、FTL (Flash Transition Layer)和JFS(Journaled File System)。

硬體模塊 提供內存設備的物理訪問,但不直接使用它們,二十通過上述的用戶模塊來訪問。這些模塊提供了快閃記憶體上讀、寫和擦除等操作的實現。

藍牙驅動

在 Linux 中,藍牙設備驅動是網路設備,使用網路介面。
Android 的藍牙協議棧使用BlueZ實現來對GAP, SDP以及RFCOMM等應用規范的支持,並獲得了SIG認證。由於Bluez使用GPL授權, 所以Android 框架通過D-BUS IPC來與bluez的用戶空間代碼交互以避免使用未經授權的代碼。

藍牙協議部分頭文件:
include/net/bluetooth/hci_core.h
include/net/bluetooth/bluetooth.h
藍牙協議源代碼文件:
net/bluetooth/*
藍牙驅動程序部分的文件:
drivers/bluetooth/*

藍牙的驅動程序一般都通過標準的HCI控制實現。但根據硬體介面和初始化流程的不同,又存在一些差別。這類初始化動作一般是一些晶振頻率,波特率等基礎設置。比如CSR的晶元一般通過BCSP協議完成最初的初始化配置,再激活標准HCI控制流程。對Linux來說,一旦bluez可以使用HCI與晶元建立起通信(一般是hciattach + hciconfig),便可以利用其上的標准協議(SCO, L2CAP等),與藍牙通信,使其正常工作了。

WLAN 設備驅動(Wi-Fi)(比較復雜我面會專門寫個wifi分析)

在linux中,Wlan設備屬於網路設備,採用網路介面。
Wlan在用戶空間採用標準的socket介面進行控制。
WiFi協議部分頭文件:
include/net/wireless.h
WiFi協議部分源文件:
net/wireless/*
WiFi驅動程序部分:
drivers/net/wireless/*

㈣ 手機的USB;OTG是啥功能

手機USB功能是 Android 提供的一個用於開發工作的功能,OTG技術實現設備間的數據傳送。以下是關於USB和OTG的相關介紹

1.手機USB功能的相關介紹:

手機USB是 Android 提供的一個用於開發工作的功能,使用該功能可在計算機和 Android 設備之間復制數據、在移動設備上安裝應用程序、讀取日誌數據等等。

默認情況下,USB 調試模式是關閉的,所以需要手動打開它。USB調試用途廣泛,各種手機助手軟體行使正常功能必須開啟USB調試模式才能正常使用。只有開啟了USB調試模式,與電腦連接時才能進行下載軟體,一鍵root,備份聯系人等功能

2.OTG功能的相關介紹

OTG技術就是在沒有Host的情況下,實現設備間的數據傳送。例如數碼相機直接連接到列印機上,通過OTG技術,連接兩台設備間的USB口,將拍出的相片立即列印出來;也可以將數碼照相機中的數據,通過OTG發送到USB介面的移動硬碟上,野外操作就沒有必要攜帶價格昂貴的存儲卡,或者背一個便攜電腦。

通過OTG技術,可以給智能終端擴展USB介面配件以豐富智能終端的功能,比如擴展遙控器配件,把手機、平板變成萬能遙控器使用。

(4)androisb協議擴展閱讀:

安卓

Android是Google於2007年11月5日宣布的基於Linux平台的開源手機操作系統,該平台由操作系統、中間件、用戶界面和應用軟體組成[18]。

Android一詞的本義指「機器人」。同時也Android的系統架構和其操作系統一樣,採用了分層的架構。從架構圖看,Android分為四個層,從高層到低層分別是應用程序層、應用程序框架層、系統運行庫層和Linux內核層。

Android在正式發行之前,最開始擁有兩個內部測試版本,並且以著名的機器人名稱來對其進行命名。

它們分別是:阿童木(AndroidBeta),發條機器人(Android 1.0)。

後來由於涉及到版權問題,谷歌將其命名規則變更為用甜點作為它們系統版本的代號的命名方法。甜點命名法開始於Android 1.5發布的時候。

作為每個版本代表的甜點的尺寸越變越大,然後按照26個字母數序:紙杯蛋糕(Android 1.5),甜甜圈(Android 1.6),松餅(Android 2.0/2.1),凍酸奶(Android 2.2),姜餅(Android 2.3),蜂巢(Android 3.0、Android 3.1和Android 3.2),冰激凌三明治(Android 4.0),果凍豆(Jelly Bean,Android4.1、Android 4.2和Android 4.3,以及棒棒糖(Android5.0)。用戶可通過ROOT獲得更好的體驗。

代表支持生產商:三星、小米、華為、魅族、中興、摩托羅拉、HTC、LG、索尼。

iOS

iOS是由蘋果公司為iPhone、iPod touch以及iPad開發的閉源操作系統。就像其基於的Mac OS X操作系統一樣,它也是以Darwin為基礎的。原本這個系統名為iPhone OS,直到2010年6月7日WWDC大會上宣布改名為iOS。iOS的系統結構分為四個層次:核心操作系統(the Core OS layer),核心服務層(the Core Services layer),媒體層(the Media layer),Cocoa 觸摸框架層(the Cocoa Touch layer)。已經發展到iOS 8.1.3。

支持生產商:蘋果。

㈤ Android中的USB中的UsbAccessory和UsbDevice的區別

UsbAccessory:和標準的USB的概念相反
USB設備是USB的Host
所以,此時USB設備,也要干其作為USB的Host的事情
USB設備,要給作為USB的Device的Android設備供電
USB設備要負責管理USB匯流排
而Android設備是USB的Device
此時,從概念上說,相當於把Android設備,當做Accessory附件,掛在USB設備上
Android 3.1多了哪些類
對於Android 3.1來說代號仍然為honeycomb,新增功能還是不少的,API Level升到了12。除了這個ADK中的部分特性外,下面一起看看前幾天提到的android.hardware.usb這個Package,由於 Google將拉攏硬體廠商製造出千奇百怪的USB附加配件所以提出了ADK這樣的概念,可以查看 Android ADK硬體開發包介紹 ,目前來說USB的管理有了不小的增強。
一、 android.hardware.usb.UsbAccessory 本類是針對Open Accessory API 設計的。
二、 android.hardware.usb.UsbConstants 作為USB常量定義,在Linux內核文件 linux/usb/ch9.h 中。
三、 android.hardware.usb.UsbDevice 獲取USB設備的信息,比如說類型、製造商等等,很有用的。
四、android.hardware.usb.UsbDeviceConnection 這個是USB設備傳輸控制的核心,對於Android USB硬體附件開發者來說必須掌握。不過還是比較簡單的。
五、 android.hardware.usb.UsbEndpoint 獲取一個USB終端信息
六、android.hardware.usb.UsbInterface USB底層介面,獲取一些信息底層信息,比如說通訊協議,等等。
七、android.hardware.usb.UsbManager USB管理類,實例化方法和Android大多數系統Manager一樣,通過類似 UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE); 的方式獲取系統底層AIDL服務的一個實例,本類是一個全局USB類,比較重要。
八、android.hardware.usb.UsbRequest 核心的USB請求處理類,支持讀寫操作,以位元組數組方式處理一個UsbEndpoint,Android123提示這個類類似WinCE串口通訊的 CreateFile部分,可以進行數據流的讀寫。

㈥ Android USB如何實現既可以發現Accessory設備,同時也可以發現Host設備

做usb通信,首先要先弄清楚哪邊是HOST那邊是SLAVE。
比如你的android手機做host,要獲得slave,用UsbDevice表示slave
要是你的android手機做slave,要獲得host,用UsbAccessory表示host

㈦ android手機通過USB連接其他能上網,從而上網

1.安裝手機驅動程序。(到官網去下官方提供的即可,當然也可能有第三方驅動)。

2.進入系統設置開發人員選項打開USB調試。用數據線連接PC和手機,連接方式選擇MTP。

此時所有步驟完成。手機使用的網路為計算機所共享的網路了(就算不關閉3G數據。當然也可以將手機的3G數據關閉,不過可能有的程序會提示無網路連接。)

閱讀全文

與androidusb協議相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:755
蘋果郵件無法連接伺服器地址 瀏覽:958
phpffmpeg轉碼 瀏覽:669
長沙好玩的解壓項目 瀏覽:140
專屬學情分析報告是什麼app 瀏覽:562
php工程部署 瀏覽:831
android全屏透明 瀏覽:730
阿里雲伺服器已開通怎麼辦 瀏覽:801
光遇為什麼登錄時伺服器已滿 瀏覽:300
PDF分析 瀏覽:482
h3c光纖全工半全工設置命令 瀏覽:140
公司法pdf下載 瀏覽:381
linuxmarkdown 瀏覽:349
華為手機怎麼多選文件夾 瀏覽:681
如何取消命令方塊指令 瀏覽:347
風翼app為什麼進不去了 瀏覽:776
im4java壓縮圖片 瀏覽:360
數據查詢網站源碼 瀏覽:148
伊克塞爾文檔怎麼進行加密 瀏覽:888
app轉賬是什麼 瀏覽:161