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
有興趣的朋友可以看看。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM