蓝牙耳机的使用

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

Linux 下蓝牙bluez分析及使用 (1)的更多相关文章

  1. 在Linux下,如何分析一个程序达到性能瓶颈的原因

    0.在Linux下,如何分析一个程序达到性能瓶颈的原因,请分别从CPU.内存.IO.网络的角度判断是谁导致的瓶颈?注意现在的机器CPU是多核 1.用sar -n DEV 1 10 2.用iotop命令 ...

  2. 几款抓包工具在windows,mac,linux下的支持分析

    抓包工具的使用 几款抓包工具在windows,mac,linux下的支持分析 抓包工具简介 Chrome/Firefox 开发者工具: 浏览器内置,方便易用 Fiddler/Charles: 基于代理 ...

  3. 以C语言为例完成简单的网络聊天程序以及关于socket在Linux下系统调用的分析

    套接字是网络编程中的一种通信机制,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程. 端 ...

  4. (转)Linux 下栈溢出问题分析解决 *** stack smashing detected *** XXXX terminated

    Linux 下栈溢出问题分析解决 *** stack smashing detected *** XXXX terminated 1.利用gdb 或者valgrind 定位到具体的代码 最近在Linu ...

  5. Android/Linux下CGroup框架分析及其使用

    1 cgroup介绍 CGroup是control group的简称,它为Linux kernel提供一种任务聚集和划分的机制,可以限制.记录.隔离进程组(process groups)所使用的资源( ...

  6. Linux下触摸屏驱动程序分析

    [摘要: 本文以linux3.5--Exynos4412仄台,剖析触摸屏驱动焦点内容.Linux下触摸屏驱动(以ft5x06_ts为例)须要懂得以下学问: 1. I2C协定 2. Exynos4412 ...

  7. linux下进程权限分析

    转自http://blog.chinaunix.net/uid-27105712-id-3349522.html 在linux下,关于文件权限,大部分人接触比较多,也比较熟悉了解.但是对进程权限一般知 ...

  8. linux下编译原理分析

    linux下编译hello.c 程序,使用gcc hello.c,然后./a.out就能够执行:在这个简单的命令后面隐藏了很多复杂的过程,这个过程包含了以下的步骤: ================= ...

  9. linux下蓝牙开发(bluez应用)

    编译blueZ-5.25 需要先编译安装以下包: bluez-libs-3.36.tar.gz expat-2.1.0.tar.gz dbus-1.10.0.tar.gz glib-2.26.1.ta ...

随机推荐

  1. php Apache配置伪静态的介绍

    以下是摘抄http://jingyan.baidu.com/article/86112f132aa7462737978718.html的,作为记录,方便以后参考 现有的在线网上视频教程对伪静态的讲解比 ...

  2. 【u007】血色先锋队

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 巫妖王的天灾军团终于卷土重来,血色十字军组织了一支先锋军前往诺森德大陆对抗天灾军团,以及一切沾有亡灵气 ...

  3. [Ramda] Count Words in a String with Ramda's countBy and invert

    You can really unlock the power of ramda (and functional programming in general) when you combine fu ...

  4. Thrift写RPC接口

    Thrift总结(二)创建RPC服务 前面介绍了thrift 基础的东西,怎么写thrift 语法规范编写脚本,如何生成相关的语言的接口.不清楚的可以看这个<Thrift总结(一)介绍>. ...

  5. 免费的 C/C++ 编译&解释 器列表

    摘自<C++编程网>,详细介绍请参考http://www.cpp-prog.com/2009/0520/118.html MicrosoftVisual C++ 2008 Express  ...

  6. Android在网络上分析获取图片(支持bmp格式)

    Android学习系列 - 在网络上显示的图像(支持bmp格公式)) 参见例如,下面的代码: /**     * 至Url地址上去照片.并返回Bitmap回来     *     * @param i ...

  7. 一个里程碑,新网站实现全站https

    本地验证node服务没问题后,上传到阿里云服务器上,发现无法访问.一开始以为是SSL证书有问题,去腾讯云SSL证书重新下载,还是不行.然后改node应用文件代码app.js,猜测是crt证书应该改成p ...

  8. CommonJS里module.exports与exports输出模块的区别

    其实是一个东西,但有些注意点,可以参考CommonJS规范

  9. JavaScript创建日志文件并记录时间的做法

    作者:朱金灿 来源:http://blog.csdn.net/clever101 try { var WSShell = WScript.CreateObject("WScript.Shel ...

  10. 反编译Jar包

    Jar 包(Java Archive)是对 Java 程序的打包,它可能包含源码,也可能没有. 对于有包含源码的 Jar 包,在 Eclipse 工程里设定好 source code 路径后能直接查看 ...