Linux 下藍芽bluez分析及使用 (1)

來源:互聯網
上載者:User
 
Linux 下藍芽bluez分析及使用 (1)
藍芽耳機的使用

由於Linux下藍芽使用不及Windows下直觀,致使使用時會出現一些小問題。雖然是小問題,但是由於普通的操作都具有順序性,前面的中斷了,後面的哪怕再簡單,也無法繼續了。正好近期工作與藍芽與網路都有關,可以有時間和目標好好學習一下。閑話少說,進入正題。
我使用的Fedora 9, bluez的版本是

|-- bluez-gnome-0.26-1.fc9.i386.rpm
|-- bluez-gnome-analyzer-0.26-1.fc9.i386.rpm
|-- bluez-gnome-debuginfo-0.26-1.fc9.i386.rpm

先說說藍芽耳機的使用吧:
開啟耳機,使之處於可尋找狀態(公司的Motorola耳機:開啟並長按,直到藍燈逐漸層亮,並不閃爍),在電腦上使用:

[ThinkPad]~$ hcitool scan
Scanning ...
    00:07:A4:F3:09:3C    Motorola HT820
[ThinkPad]~$

可以看到已經掃描到了裝置。注意,電腦上的bluetooth服務要開啟。
我們將其地址記錄:00:07:A4:F3:09:3C
進入主目錄:

[ThinkPad]~$ cat .asoundrc
pcm.bluetooth {
    type bluetooth
    device 00:07:A4:F3:09:3C
}

按上面的格式建立alsa的設定檔。

面我們進行與耳機的配對(為什麼要進行配對呢,配對究竟做了哪些工作呢,等我看完源碼後總結:實際上是建立藍芽物理鏈路ACL(Asynchronous
Connectionless), 另外的一種鏈路是SCO(Synchronous Connection
Oriented)主要用來傳輸對時間要求很高的資料通訊。)。
右鍵點擊狀態列上的藍芽表徵圖(藍色的,有個剪刀的圖案),選擇瀏覽裝置,並使耳機處於可尋找的狀態。

擇耳機,串連,在彈出的對話方塊中輸入0000(預設的PIN Personal Information
Number),這樣,耳機就與電腦配對成功了。可能會彈出什麼Host is
down什麼的,沒關係,這是因為在點擊串連後,對應的訊息處理函數裡執行了命令nautilus --no-default-window
"obex://[xx:xx:xx:xx]"後報出來的資訊。
下面我們開始播放了
首先使用大家最熟悉的Mplayer

[ThinkPad]/work$ mplayer -ao alsa:device=bluetooth mp3.mp3

這樣我們就可以通過耳機聽到動聽的音樂了。好,我們邊聽音樂,邊說說其他的播放器怎麼使用藍芽耳機。
gstreamer也是開源軟體中非常有名的播放工具:

[ThinkPad]/work$ gst-launch filesrc location=mp3.mp3 ! decodebin ! alsasink device=bluetooth sync=false

你還可以通過自己編譯bluez-utils-3.32,請注意多加一個參數--enable-gstreamer,這樣在編譯後就會有一個libgstbluetooth.so 的gstreamer的外掛程式,將其放入/usr/lib/gstreamer目錄下

gst-launch filesrc location=mp3.mp3 ! decodebin ! audioconvert ! audioresample ! sbcenc ! a2dpsink device=00:07:A4:F3:09:3C

這樣也可以聽到,這就是Bluetooth中非常有名的A2DP(Advance Audio Distribution Profile),如果你還有更深的興趣,你可以看看gst對a2dpsink及sbcenc參數的調節,呵呵。
咱們看看Totem這個Linux下預設安裝的播放器怎樣使用bluetooth:

[ThinkPad]~$ gconftool-2 -t string -s /system/gstreamer/0.10/default/musicaudiosink "sbcenc ! a2dpsink device=00:07:A4:F3:09:3C"

這其實是修改了~/.gconf/system/gstreamer/0.10/default/%gconf.xml中的musicaudiosink。這裡必須要有libgstbluetooth.so,或者

[ThinkPad]~$ gconftool-2 -t string -s /system/gstreamer/0.10/default/musicaudiosink "alsasink device=bluetooth"

不再使用時,

[ThinkPad]~$ gconftool-2 -t string -s /system/gstreamer/0.10/default/musicaudiosink "autoaudiosink"

有個小小的遺憾是還無法使用耳機上“前進”,”後退“的按鍵。

以上很多內容來自:
http://wiki.bluez.org/wiki/HOWTO/AudioDevices
有興趣的朋友可以看看。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.