1. 程式人生 > >在Android4.2中實現bluetooth A2dp Sink(二)——移植Android5.0藍芽協議棧

在Android4.2中實現bluetooth A2dp Sink(二)——移植Android5.0藍芽協議棧

    在Android中,藍芽系統的結構如下圖所示:

    在這個體系結構中,從下往上依次是模組驅動、藍芽協議棧、Bluetooth.apk、Framework和各種藍芽應用。其中,核心中的驅動是直接和硬體打交道的,一般由模組廠商提供。Android層中,最下面的是處理具體藍芽協議的協議棧,裡面包含了藍芽各種profile的具體實現,Bluetooth.apk是藍芽協議棧和framework之間的紐帶,使用jni介面溝通了用java實現的framework和c實現的協議棧,並且實現了狀態機來控制各種profile的各種工作狀態。Framwork為應用提供各種介面。這樣的功能劃分不一定準確,只是我個人的一點理解。

    能夠的前提是模組硬體上要支援A2DP Sink,所以移植之前需要和廠商進行溝通,看硬體上支援不支援Sink的功能。

    藍芽協議棧是整個體系中最複雜的部分,是具體實現各種profile協議處理的地方,相對來說,使用java實現的Bluetooth.apk和Framework都要簡單一些。所以移植的過程中,協議棧是原封不動的從5.0上覆制過來的,然後再在Bluetooth.apk和Framework中進行一些修改以與協議棧想配合。這就是移植的大致思路。

相關推薦

Android4.2實現bluetooth A2dp Sink——移植Android5.0協議

    在Android中,藍芽系統的結構如下圖所示:     在這個體系結構中,從下往上依次是模組驅動、藍芽協議棧、Bluetooth.apk、Framework和各種藍芽應用。其中,核心中的驅動是直接和硬體打交道的,一般由模組廠商提供。Android層中,最下面的是處

Android4.2實現bluetooth A2dp Sink——移植Android5.0協議

    一直以來,Android對於藍芽的支援都很混亂,簡直可以說是一坨shit。各個版本的協議棧都不一樣,最早用的是bluez,進入4.x時代之後,換成了谷歌自己的bluedroid。換就換吧,至少等做完了再用吧,結果4.2、4.3、4.4的bluedroid全都不一樣。

UWP實現大爆炸效果

cti setter val sele osi enume rail += ddd 上一回實現了一個寬度不均勻的Panel,這次我們編寫一個簡單的BigbangView主體。 首先創建一個模板化控件,刪掉Themes/Generic.xaml中的<Style Targ

scrapy框架實現登入人人網最新登入方式

      上篇部落格說到登入人人網的時候,如果同一個賬號出錯超過三次,那麼將會出現四個漢字的驗證碼,這裡我們利用打碼平臺來破解驗證碼並傳入(實際上,如果簡單點可以通過肉眼觀察出現的驗證碼,然後input輸入結果。)如下圖所示,通過上節的分析我們知道密碼是通過加密傳

CC2640R2F BLE5.0 協議通用屬性配置檔案GATT

通用屬性配置檔案(GATT) 正如GAP層負責連線相關的功能,GATT主要是負責在兩個已經連線的裝置互動資料,GAP層把BLE裝置區分為主機Master(Central)和從機Slave(Perpherial),在GATT層則區分為Server和Client。客

UWP實現大爆炸效果

ID eight 爆炸效果 foo 更新 The 選中 wid 重寫 自從老羅搞出大爆炸之後,各家安卓都內置了類似功能。UWP怎麽能落下呢,在這裏我們就一起擼一個簡單的大爆炸實現。 閑話不說,先上效果: 因為代碼太多,所以我打算寫成一個系列,下面是第一篇的正文: 首先

Android4.2 更改大碟符顯示名字rk

--- a/bootable/recovery/recovery.cpp +++ b/bootable/recovery/recovery.cpp @@ -1591,7 +1591,7 @@ case_HP_COPY_HWAPUDATA:         &n

scrapy框架實現登入人人網最新登入方式

        最近在弄scrapy框架的問題,感覺裡面好玩的東西有很多,無意中在bilibili中看到關於在scrapy實現登入人人網的視訊,人人網可能使用者少,所以在現在的一些部落格和教程裡面看到最新的登入方法幾乎沒有,於是自己寫了這篇部落格。 &

Android4.4.2原始碼分析之WiFi模組

接著上一篇繼續對WiFi原始碼的分析 onResume方法中 6>,首先是呼叫WiFiEnabler的resume方法對switch進行管理 接下來註冊廣播 getActivity().registerReceiver(mReceiver, mFilter);

C#程式碼實現兩個表DataTable的關聯查詢JOIN

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls

在caffe 實現Generative Adversarial Nets

目錄 一、Generative Adversarial Nets 1. GAN簡介 對抗生成網路(GAN)同時訓練兩個模型:能夠得到資料分佈的生成模型(generative model G)和能判夠區別資料是生成的還是真實的判別模型 (discr

elasticsearch+logstash+kibana5.5.2整合searchguard實現使用者許可權管理

上一篇我們完成了elk整合sg的配置,但是,我們的logstash只能使用一臺es,這是遠遠不夠的,我們要重新制作自己的授信檔案,幸運的是官網給出了一個工具,並且還給出了一個線上製作的網站,支援10個es節點,這裡我們使用線上製作 url: https://f

Java web常見編碼亂碼問題

catalina 轉換 alt str 檢測 內容 tom 拼搏 image 根據上篇記錄Java web中常見編碼亂碼問題(一), 接著記錄亂碼案例:   案例分析:   2、輸出流寫入內容或者輸入流讀取內容時亂碼(內容中有中文)   原因分析:     a、 如果是

【SSH進階之路】Struts基本原理 + 實現簡單登錄

target doctype 掌握 pack insert enter snippet file manage 上面博文,主要簡單的介紹了一下SSH的基本概念,比較宏觀。作為剛開始學習的人可以有一個總體上的認識,個人覺得對學習有非常好的輔助功能,它不不過

HTML5+Canvas+jQuery調用手機拍照功能實現圖片上傳

customer mkdir 狀態保存 ont false lan else if 項目 action 上一篇僅僅講到前臺操作,這篇專門涉及到Java後臺處理。前臺通過Ajax提交將Base64編碼過的圖片數據信息傳到Java後臺,然後Java這邊進行接收處理。通過

使用gluon實現簡單的CNN

bsp evaluate label exce ini rate ati sof name from mxnet import ndarray as nd from mxnet import gluon from mxnet import autograd from mx

使用Spring+MySql實現讀寫分離spring整合多數據庫

ont 依據 xml配置 實現 整合 配置 item 匹配 mic 緊接著上一章,因為現在做的項目還是以spring為主要的容器管理框架,所以寫以下spring如何整合多個數據源。 1. 背景 我們一般應用對數據庫而言都是“讀多寫少”,也就說對數據庫讀取數據的壓力比較大

MySQL的日誌類型-General query log

sql 設置 set 線程id lob 進行 mysq 示例 mark 簡介 General query log記錄客戶端的連接和斷開,以及從客戶端發來的每一個SQL語句。 日誌內容格式 General query log可以記錄在文件中,也可以記錄在表中,格式如下:在文件

github刪除已建倉庫

gpo 自己 class 9.png git 點擊 github 復制 post 閱讀指南:(1)在登錄自己的github中,進入將刪除倉庫文件中: (2)進入倉庫的settings中,復制Repository name 中的名字(一會刪除要填寫) (3)點擊刪

基於Orangpi Zero和Linux ALSA實現WIFI無線音箱

memfree 線程 取數據 edit 這一 緩沖 一起 說了 cpp 作品已經完成,先上源碼: https://files.cnblogs.com/files/qzrzq1/WIFISpeaker.zip 全文包含三篇,這是第二篇,主要講述發送端程序的原理和過程。 第一篇