zoukankan      html  css  js  c++  java
  • 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
    有兴趣的朋友可以看看。

  • 相关阅读:
    Android捕捉错误try catch 的简单使用
    ubuntu下安装lua和tolua++
    mosh安装与使用
    三,温习redis持久化解析与配置
    二,温习redis(工具命令使用)
    一,温习Redis (详解从安装到配置)
    报错!-> CPU100%-但是找不到使用cpu的进程
    linux安全---防火墙(iptables)理论解析
    Mysql8.0版二进制安装(my.cnf文件灵活编写)
    ansible实现template管理nginx
  • 原文地址:https://www.cnblogs.com/zhangyubao/p/7017021.html
Copyright © 2011-2022 走看看