zoukankan      html  css  js  c++  java
  • Linux 下蓝牙bluez分析及使用 (1)

    http://blog.chinaunix.net/u2/72724/showart_1079595.html

    蓝牙耳机的使用

    由于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
    有兴趣的朋友可以看看。
  • 相关阅读:
    1104--DNA排序
    poj1050-To the Max
    编译:一个 C 程序的艺术之旅(转载)
    大话同步/异步、阻塞/非阻塞(转载)
    Windows 在 git bash下使用 conda 命令
    Python Multiprocessing 多进程,使用多核CPU计算 并使用tqdm显示进度条
    Python 写入训练日志文件并控制台输出
    nn.Conv2d 参数及输入输出详解
    Python中 list, numpy.array, torch.Tensor 格式相互转化
    Linux 上传代码到github
  • 原文地址:https://www.cnblogs.com/leaven/p/1629215.html
Copyright © 2011-2022 走看看