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

时间: 2024-10-10 04:52:23

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

Linux下apache日志分析与状态查看方法

假设apache日志格式为:118.78.199.98 – - [09/Jan/2010:00:59:59 +0800] “GET /Public/Css/index.css HTTP/1.1″ 304 – “http://www.a.cn/common/index.php” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6.3)” 问题1:在apachelog中找出访问次数最多的10个IP.awk '{print $1}

linux下编译原理分析

linux下编译hello.c 程序,使用gcc hello.c,然后./a.out就可以运行:在这个简单的命令后面隐藏了许多复杂的过程,这个过程包括了下面的步骤: ====================================================================================== 预处理: 宏定义展开,所有的#define 在这个阶段都会被展开 预编译命令的处理,包括#if #ifdef 一类的命令 展开#include 的文件,像上面h

Linux 下 apache 日志分析与状态查看[转]

假设apache日志格式为: 118.78.199.98 – - [09/Jan/2010:00:59:59 +0800] “GET /Public/Css/index.css HTTP/1.1″ 304 – “http://www.a.cn/common/index.php” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6.3)” 问题1:在apachelog中找出访问次数最多的10个IP. awk '{print $

将javaweb项目部署到linux下的详细分析

以下是对将javaweb项目部署到linux下的方法进行了详细的分析介绍,需要的朋友可以过来参考下一般都在windows下开发的,现在部署到linux下:1,将项目达成war包(用eclipse,项目右键–>Export–>选择war file)2,将tomcat(用winSCP当然你也可以用secureCRT,用securCRT需要建立sftp(即上传文件的目录),用put tomcat命令)考到ilunx对应的目录下3,然后将项目的war包放到tomcat的webapps目录下4,启动to

Linux下栈帧分析

我们知道C语言中,每个栈帧对应着一个未运行完的函数.栈帧中保存了该函数的返回地址和局部变量.栈帧也叫过程活动记录,是编译器用来实现函数调用的一种数据结构.那么在Linux下gcc编译器栈帧是怎么实现的呢? 首先来看下面这段代码: 这段代码的运行结果是会导致虚拟机重启.通过代码可以看到我们在fun函数中写了让系统重启的代码然而我们在main函数中并没有调用fun函数,却仍旧导致了系统重启. 首先要我们知道栈是从高地址向低地址生长的,每个函数的每次调用,都有它自己独立的一个栈帧,这个栈帧中维持着所需

碰碰车司机教你Linux下使用nmon分析系统性能

下载nmon. 根据CPU的类型选择下载相应的版本:http://nmon.sourceforge.net/pmwiki.php?n=Site.Downloadwget http://sourceforge.net/projects/nmon/files/download/nmon_x86_12a.zip/download 我给大家准备的软件包 nmon 性能:分析 AIX 和 linux 性能的免费工具: http://down.51cto.com/data/2316752 nmon anal

Linux下基于Bluez

硬件:Moto H670 蓝牙耳机 (CSR chip)/ Broadcom v2.0 adapter软件:bluez-4.26 / bluez-gnome-1.8 / linux kernel 2.6.28 1)蓝牙耳机配对,打开你的蓝牙耳机,进入配对模式,我是用blue-wizard,就是blue-gnome这个东西来配对,实在是找不到其它方法.以前bluez-3.x 在/var/lib/bluetooth/xx/pincodes里直接写pincode就可以了,现在好像不行了,而且在配对前,

Linux下进程创建分析

实际用户:表示你是谁,谁运行起来,用于标识信息eg:身份证,邀请函身份,非会员 有效用户:对某种资源是否具有某种权限,进程可能访问某些资源,普通用户不忍,身份变更才可访问资源 例如:在Linux系统下,root用户或普通用户都可以使用passwd命令来修改密码,修改密码主要通过修改etc文件来实现,而shadow文件权限全空,只有root有权限修改此文件.故当普通用户执行passwd命令时,它的权限在一瞬间得到提升,运行时以拥有者权限运行. 猜测运行结果,会打印几条消息?? #include<s

关于socket在Linux下系统调用的分析

1.在include/linux/syscalls.h中定义了sys_socket函数的函数原型 asmlinkage long sys_socket(int, int, int); 系统调用函数必须满足: asmlinkage long sys_##function-name(##args){ ,return ret} 2.在arch/arm/include/asm,unistd.h中,将sys_socket系统调用和系统调用好关联起来 #define __NR_socket 97 __SYS