Linux 下蓝牙bluez分析及使用 (1)

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

你可能感兴趣的:(蓝牙)