藍牙耳機源碼
『壹』 連接藍牙需要的PIN碼是什麼
為保護您的使用安全,聯通SIM卡採用PIN碼和PUK碼保護。當PIN碼輸錯3次後,SIM卡會自動上鎖,手機提示「SIM卡已鎖」;
SIM卡被鎖後,需要輸入PUK才能解鎖,您可登錄手機營業廳點擊「我的聯通」>「安全中心」>「我的PUK碼」,即可查詢PUK碼。
溫馨提示:
1.PIN碼的初始密碼是1234,如PUK碼連續輸錯10次,SIM卡將會報廢,需要補卡後才能繼續使用;
2.手機營業廳的具體功能和操作路徑以實際頁面為准。
『貳』 如何在網上接單做藍牙耳機
可以選擇開網店或者在閑魚、轉轉上發布讓人購買。
也可以自己建立營銷網站接單,具體步驟如下:
1、買一個域名;
2、開通空間;
3、買個網站源碼;
4、網站上有有溝通工具;
5、詳細描述你的產品賣點,規格等;
6、放上你的客戶案例即可。
『叄』 為Deepin Linux啟用藍牙支持
自從安裝了Deepin Linux,並 採用自己編譯的內核 後,筆者的ThinkPad X200筆記本體驗可謂是上升了一個非常重要的層次。後來有一天,筆者想用藍牙耳機聽音樂,然而在使用過程中發現,這台筆記本雖然自帶藍牙,屏幕下的藍牙指示燈一直點亮著,系統中卻看不到與藍牙有關的設置選項。
出現這樣的問題,多半就是因為系統中對藍牙的支持沒有啟用,主要包括系統組件和內核兩個層面。下面把我的經驗總結如下。
默認地,Deepin並沒有在系統中裝上藍牙組件,須用戶手動安裝。在終端中運行:
其中, bluetooth 是Linux藍牙的核心組件,而 blueman 則是基於GTK+的一個全功能藍牙管理器。把它們一齊裝上,即可為Deepin啟用全面的藍牙支持。
筆者本以為安裝了藍牙組件後,藍牙功能就能正常使用(因為之前在解決WLAN問題時,WLAN驅動未配置的情況下無線網卡燈是不會亮的,然而藍牙燈始終會常亮),但是當打開藍牙管理器時,竟然報錯,提示藍牙服務未啟動。這不得不讓我想到,內核中的藍牙支持是否沒有啟用。
果不其然。在內核源碼目錄下運行 make menuconfig ,打開內核配置界面,依次對內核進行以下配置。
內核中的藍牙選項位於【Network Settings】 --> 【Bluetooth subsystem support】。先選中【Bluetooth subsystem support】,然後按」Y「,勾選它。
【Bluetooth subsystem support】中有子菜單,按回車進入,如下所示:
其中有幾個選項,控制特定類型藍牙設備協議的支持,一般全部啟用。它們包括:
最為重要的一步,就是將藍牙適配器驅動編譯入內核當中。 進入最下方子菜單【Bluetooth device drivers】,如下所示:
菜單中根據介面和特定型號設備,列出了相應的支持選項,有些選項在勾選後還會展開新的選項。典型的介面有USB、SDIO、UART,按需要勾選。
筆者X200筆記本的藍牙適配器是Broadcom BCM2045B,走的是USB通道,因此先勾選【HCI USB driver】,隨後會在該項下面出現三個新的選項,再進一步勾選【Broadcom protocol support】。不過,在得知適配器信息之前,筆者拿捏藍牙適配器可能也走了UART通道,所以也將【HCI UART driver】勾上,再進一步勾選下面的【Intel AG6XX protocol support】。但實際使用時發現,X200的藍牙適配器的確走的是USB而非UART。若不能確定自己的藍牙適配器類型,可以一並選上,也不佔用太多空間。
上述配置完成後,按左右方向鍵選擇」Save「,保存內核配置,然後選」Exit「退出。使用下面的命令重新編譯內核並安裝:
重啟後,藍牙功能即被激活。
在內核中啟用藍牙支持,並在系統中安裝藍牙組件後,Deepin發生了翻天覆地的變化。Deepin下藍牙的體驗非常出色。
Blueman管理器默認開機啟動,會在托盤區域出現一個藍牙圖標,在其中可以很方便地管理藍牙設備。
在Blueman管理器中可以搜索到各種藍牙設備,包括各種手機、電腦,以及筆者的藍牙耳機。與藍牙耳機配對後,Deepin即刻將聲音通過藍牙進行播放,無需再進行進一步的配置,尤其方便。此外,Blueman還有其他有趣的玩法,比如文件傳輸、瀏覽設備文件,其中對設備文件的瀏覽功能與當年的MTK功能機類似。
以X200為代表的ThinkPad早期機型有一項設計非常出彩,就是它屏幕下的燈條,系統運行狀態一目瞭然。其中正包括了藍牙指示燈,當有數據傳輸時(如正使用藍牙音頻),指示燈會閃爍,如此就能知道藍牙設備是否正常工作。可謂匠心。
要想讓使用Deepin的筆記本支持藍牙,需要做兩項工作——
由此,Deepin下設備的價值就能被進一步挖掘,體驗自會更上一層樓。
『肆』 Android怎樣監聽藍牙耳機的按鍵事件
其實對於Android系統,每次按鍵只會有一個唯一「鍵值」響應,使用起來感覺會模模糊糊的,但是其實對於系統來說是很清晰的。
AVRCP全稱(Audio/VideoRemoteControlProfile),是藍牙協議中的一個profile。從名字上就可以看出主要應用於Audio/Video控制。每個按鍵並不是獨立的,上-曲/下一曲是在正在播放音樂的時候才會有效,即才會向Android發送「鍵值」。
基於按鍵從Linux到Android分析具體對於的鍵值:
Linux掃描碼功能映射字串Android鍵值
00c8200 開始放音樂MEDIA_PLAYKEYCODE_MEDIA_PLAY
00c9201 停止放音樂MEDIA_PAUSEKEYCODE_MEDIA_PAUSE
00a3163 下一曲MEDIA_NEXTKEYCODE_MEDIA_NEXT
00a5165 上-曲MEDIA_PREVIOUSKEYCODE_MEDIA_PREVIOUS
Android應用代碼,完整測試應用:TeskKey。
總結:1號鍵會交替發送KEYCODE_MEDIA_PLAY/KEYCODE_MEDIA_PAUSE;2/3號鍵會在播放音樂時分別發送KEYCODE_MEDIA_PREVIOUS/.KEYCODE_MEDIA_NEXT。如果想要把藍牙耳機上的按鍵利用起來,可以在接收到KEYCODE_MEDIA_PLAY時播放無聲音樂以使能2/3號鍵。這樣就能完整接收3種鍵值了自行控制了。這個具體自行設計(測試代碼已經更新包含了)。
註:這種實現並不一定通用,比如我在深度定製的MIUI中測試,盡管啟動的TestKey應用,系統自帶的音樂播放器仍然能同時響應鍵值。
更新:
已經更新TestKey源碼,添加對藍牙耳機按鍵的監聽,實現方法就是上述中推測的方法,已經成功驗證過了。播放音樂參考《Android多媒體開發--資源文件播放》。效果圖:
問與答
1.這個只能在播放音樂的狀態下才能監聽到么?
答:根據上述的原理,這些按鍵也僅僅是應用在控制媒體時使用;且根據實際驗證沒有播放音樂時藍牙耳機的2/3號鍵是並沒有向Android設備發送鍵值(從底層Linux來看)。綜上所述,需要通過播放音樂來實現激活其向Android設備發送鍵值,針對這種情況可以播放一個「沒有聲音」的音樂文件來實現,這樣既可以監聽到2/3號鍵又可以不影響其它聲音的輸出。可以在前台時播放音樂,後台停止播放。
2.我現在主要是想監聽得到開關鍵(1號鍵)。 在做一個按下藍牙開關鍵後啟動一個語音識別的功能?
答:在我的測試條件下,1號鍵是可以正常監聽到的。1號鍵會交替發送KEYCODE_MEDIA_PLAY/KEYCODE_MEDIA_PAUSE鍵值。這個鍵不需要模擬播放音樂就可以正常的監聽到。
3.4號按鍵的監聽方法
答:所謂的4號按鍵,也就是指本文中的所測試型號的藍牙耳機上並沒有,但有可能其它型號的藍牙耳機上有。我沒有辦法測試驗證,所以這里就簡單敘述一下「新按鍵」的鍵值確定思路:1.先使用TestKey測試應用測試按鍵,測試Android上層是否可以得到對應鍵值。2.如果沒有得到,那麼就使用adbshellgetevent來看Linux底層可以不可以得到鍵值。然後根據按鍵從Linux到Android來確定Android上層使用的鍵值碼到底是多少。(當然,如果你實在不知道如何監聽,把藍牙耳機寄給我,我給你確定也行。:))
註:其實上述文章完全是根據按鍵從Linux到Android測試確定下來的。那是篇文章是剝開Android外殼來看「按鍵」事件的流程的,方法適用於所有輸入事件:各種按鍵/觸摸/物理鍵盤/滑鼠等待輸入設備。沒有一定的Linux開發經驗很難看懂和理解。
4.Android後台監聽按鍵怎麼實現
或:如何啟動一次應用後在後台一直監聽播放鍵因為有這樣一個場景在用戶開車的時候需按一下開關鍵就啟動語音識別的功能。
這個問題其實已經超出了本文討論的范圍,是Android系統對應用層的鍵盤事件(按鍵)的分發的問題了。正常情況下,按鍵只會向當前最端的應用分發鍵盤事件,也就是說在後台你邊音量鍵都監聽不了。
但是既然這種情況(後台應用監聽按鍵)的需求存在,那麼就一定有它存在的道理。比如「相機鍵」,按下後直接調出相機到最前台。從表面上看是相機響應了按鍵,但是從實現方法上來看,並不是通過鍵值來操作,必須通過其它方法,比如廣播或者其它等等。
明白了其中的道理後,那麼想要實現就好辦了。先看這個按鍵有沒有廣播,如要有接聽系統中發出來的廣播;如果沒有那麼對於定製系統可以自己在系統中添加一個廣播;總之,正常渠道是沒有辦法在後台監聽一些不應該是你監聽到的按鍵的。
更:查了一下,這個按鍵是有廣播的。這樣就可以後台響應了(不需要C/不需要root)。例子我就不試了,見Android官方例子RandomMusicPlayer。
其中的重點是這個廣播android.intent.action.MEDIA_BUTTON。