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
有兴趣的朋友可以看看。
Linux 下蓝牙bluez分析及使用 (1)的更多相关文章
- 在Linux下,如何分析一个程序达到性能瓶颈的原因
0.在Linux下,如何分析一个程序达到性能瓶颈的原因,请分别从CPU.内存.IO.网络的角度判断是谁导致的瓶颈?注意现在的机器CPU是多核 1.用sar -n DEV 1 10 2.用iotop命令 ...
- 几款抓包工具在windows,mac,linux下的支持分析
抓包工具的使用 几款抓包工具在windows,mac,linux下的支持分析 抓包工具简介 Chrome/Firefox 开发者工具: 浏览器内置,方便易用 Fiddler/Charles: 基于代理 ...
- 以C语言为例完成简单的网络聊天程序以及关于socket在Linux下系统调用的分析
套接字是网络编程中的一种通信机制,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程. 端 ...
- (转)Linux 下栈溢出问题分析解决 *** stack smashing detected *** XXXX terminated
Linux 下栈溢出问题分析解决 *** stack smashing detected *** XXXX terminated 1.利用gdb 或者valgrind 定位到具体的代码 最近在Linu ...
- Android/Linux下CGroup框架分析及其使用
1 cgroup介绍 CGroup是control group的简称,它为Linux kernel提供一种任务聚集和划分的机制,可以限制.记录.隔离进程组(process groups)所使用的资源( ...
- Linux下触摸屏驱动程序分析
[摘要: 本文以linux3.5--Exynos4412仄台,剖析触摸屏驱动焦点内容.Linux下触摸屏驱动(以ft5x06_ts为例)须要懂得以下学问: 1. I2C协定 2. Exynos4412 ...
- linux下进程权限分析
转自http://blog.chinaunix.net/uid-27105712-id-3349522.html 在linux下,关于文件权限,大部分人接触比较多,也比较熟悉了解.但是对进程权限一般知 ...
- linux下编译原理分析
linux下编译hello.c 程序,使用gcc hello.c,然后./a.out就能够执行:在这个简单的命令后面隐藏了很多复杂的过程,这个过程包含了以下的步骤: ================= ...
- 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 ...
随机推荐
- 安装绿色版mysql小记(5.7.11)
平时使用oracle,感觉太耗我电脑内存了,实在不想用oracle做平时练习了,那就只装一个客户端,工作用..平时自己试试mysql吧..mysql的安装真麻烦,真不是傻瓜式安装就能用,稍微配置不对就 ...
- Android使用READ_CONTACTS读取手机联系人
实例代码: package com.example.readcontacts; import java.io.InputStream; import java.util.ArrayList; impo ...
- 图标插件--jqplot实现柱状图及饼图,表盘图演示样例
柱状图 在jqPlot图表插件使用说明(一)中,我们已经能够通过jqPlot绘制出比較简单的线形图.通过查看源码.我们也能够看出,线形图是jqPlot默认的图表类型: /** * Class: Ser ...
- 2015年工作中遇到的问题:71-80,Tomcat-Redis-浮点数-HTTPS
71.Tomcat访问项目带了"项目名称".最简单的办法,是把这个项目部署到"root"目录,据boss所说,阿里的每一个项目,都单独放到1个Tomcat的ro ...
- (翻译)2016美国数学建模MCM E题(环境)翻译:我们朝向一个干旱的星球?
PROBLEM E: Are we heading towards a thirsty planet? Will the world run out of clean water? According ...
- 学习鸟哥的Linux私房菜笔记(15)——文件系统
一.文件结构 为了能在设备上存储与读取文件,我们需要在分区上创立文件系统 文件系统记录目录与文件我们称之为文件结构 每一个文件系统在Linux里都被解释成由一个根目录为起点的目录结构 Linux将各个 ...
- BZOJ 1090 - 区间dp
Magic Door 题目大意: 给一个字符串,可以将重复的串缩成x(a),表示x个a,求能缩成的最小长度. 题目分析 区间dp: dp[i][j]表示i~j处理后的最小长度, 则有 \[dp[i][ ...
- 树莓派挂载移动硬盘开启samba
本文参考 [https://blog.csdn.net/u010906068/article/details/38455363],原文部分步骤在我的树莓派上,可能是版本不同吧,进行了修改后部署成功 一 ...
- docker入门0:常识知识扫盲
Docker 是一个开源项目,基于 Go 语言实现,是一套轻量级的操作系统虚拟化解决方案.用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单. Docker通常用于如下场景: web ...
- VS2010中新控件的编程------颜色按钮类和颜色对话框
(1) 颜色按钮类和颜色对话框 1) 颜色对话框 MFC提供了颜色对话框类CMFCColorDialog进行颜色的选择,系统可以利用DoModal()调用,然后选择相应的颜色. CMFCCo ...