android 4.2-- 蓝牙 bluetooth (一) 入门
来源:互联网 发布:主成分分析使用的数据 编辑:程序博客网 时间:2024/05/27 20:53
入手一个新的模块或应用,当然首先要知道它都有什么了,与它相关的代码在那里,所以先一起看下蓝牙代码分布吧。
1. 代码分布:
packages/apps/Bluetooth/
看这路径肯定是蓝牙应用方面的代码了,主要是关于蓝牙应用协议的表现代码,包括opp、hfp、hdp、a2dp、pan等等,这些名词后面再解释。
frameworks/base/core/java/android/server/
4.2以后这个目录虽然还有了,但里面代码已经转移到应用层了,就是前面那个目录,所以4.2.2上的蓝牙这里可以忽略。
framework/base/core/java/android/bluetooth
这个目录里的代码更像一个桥梁,里面有供java层使用一些类,也有对应的aidl文件联系C、C++部分的代码,还是挺重要的。
kernel\drivers\bluetoothBluetooth
具体协议实现。包括hci,hid,rfcomm,sco,SDP等协议
kernel\net\bluetooth Linux kernel
对各种接口的Bluetoothdevice的驱动。例如:USB接口,串口等,上面kernel这两个目录有可能看不到的,但一定会有的。
external\bluetooth\bluedroid BlueZ (应用空间协议),官方蓝牙协议栈。
system\bluetoothBluetooth 适配层代码,和framework那个作用类似,是串联framework与blueZ的工具。
大致代码分布就是这些,初步查看后让我们再来看下蓝牙的整体结构。
2..常用类和名词解释:
\packages\apps\Settings\src\com\android\settings\bluetooth 目录下
BluetoothEnabler.java 界面上蓝牙开启、关闭的开关就是它了,
BluetoothSettings.java 主界面,用于管理配对和连接设备
LocalBluetoothManager.java 提供了蓝牙API上的简单调用接口,这里只是开始。
CachedBluetoothDevice.java 描述蓝牙设备的类,对BluetoothDevice的再封装
BluetoothPairingDialog.java 那个配对提示的对话框
/packages/apps/Phone/src/com/android/phone/
BluetoothPhoneService.java 在phone的目录肯定和电话相关了,蓝牙接听挂断电话会用到这个
/packages/apps/Bluetooth/src/com/android/bluetooth/btservice/
AdapterService.java 4.2后才有的代码,蓝牙打开、关闭、扫描、配对都会走到这里,其实更准确的说它替代了4.1之前的BluetoothService.java,原来的工作就由这个类来完成了。说到这里不能不说4.2蓝牙的目录变了,在4.1及以前的代码中packages层的代码只有opp协议相关应用的代码,也就是文件传输那部分,而4.2的代码应用层的代码则丰富了许多,按具体的蓝牙应用协议来区别,分为以下文件夹(这里一并对蓝牙一些名词作个简单解释):
a2dp 蓝牙立体声,和蓝牙耳机听歌有关那些,另还有个avrcp--音频/视频远程控制配置文件,是用来听歌时暂停,上下歌曲选择的。
btservice 这个前面AdapterService.java的描述大家应该能猜到一些,关于蓝牙基本操作的目录,一切由此开始。
hdp 蓝牙关于医疗方面的应用 Bluetooth Health Device Profile
hfp 和电话相关,蓝牙接听、挂断电话 Hands-free Profile
hid 人机交互接口,蓝牙鼠标键盘什么的就是这个了
opp 不多解释,以前就有。
pan 描述了两个或更多个 Bluetooth 设备如何构成一个即时网络,和网络有关的还有串行端口功能(SPP),拨号网络功能(DUN)
pbap 电话号码簿访问协议(Phonebook Access Profile)
android 4.2的蓝牙应用层部分代码更丰富了,虽然有些目录还没具体代码,不过说不准哪个版本更新就有了,就像4.0添加了hdp医疗那部分一样。
另外原本在framework的JNI代码也被移到packages/apps/bluetooth当中。
/frameworks/base/core/java/android/bluetooth/目录下
BluetoothA2dp.java A2DP的功能实现
BluetoothAdapter.java 蓝牙action的定义,虚拟设备属性以及操作方法
BluetoothAudioGateway.java 蓝牙语音网关
BluetoothClass.java 蓝牙设备类型的定义
BluetoothDevice.java 蓝牙设备属性
BluetoothDevicePicker.java 定义远程蓝牙设备的特性,比如需要认证,设备类型
BluetoothHeadset.java 定义蓝牙headset功能的属性以及接口
BluetoothInputStream.java 蓝牙流接口的实现(输入流)
BluetoothOutputStream.java 蓝牙流接口的实现(输出流)
BluetoothServerSocket.java 蓝牙socket服务端具备的方法
BluetoothSocket.java 蓝牙socket的封装
BluetoothUuid.java 蓝牙uuid的定义以及uuid的解析
以上java文件在使用具体功能会用到,现在只是简单描述下,至于具体使用在后续文章用到时再给出。同时代码说明部分也就写这些了
对于C、C++部分的代码一方面没看那么多,另一方面根据android JNI的命名习惯,大家找起来也很容易。
3.后续分析:
前面从整体上描述蓝牙的基本知识,落实在具体的代码分析上,我们按几个主线功能来走,蓝牙的开关、搜索配对、蓝牙耳机与电话和文件传输,这几个也算是蓝牙的常用必备功能了
转载自:http://blog.csdn.net/baimy1985/article/details/8892410
- android 4.2-- 蓝牙 bluetooth (一) 入门
- android -- 蓝牙 bluetooth (一) 入门
- android -- 蓝牙 bluetooth (一) 入门
- android -- 蓝牙 bluetooth (一) 入门
- android -- 蓝牙 bluetooth (一) 入门 .
- android -- 蓝牙 bluetooth (一) 入门
- android -- 蓝牙 bluetooth (一) 入门
- android -- 蓝牙 bluetooth (一) 入门
- android -- 蓝牙 bluetooth (一) 入门
- android -- 蓝牙 bluetooth (一) 入门
- android -- 蓝牙 bluetooth (一) 入门
- android -- 蓝牙 bluetooth (一) 入门
- android -- 蓝牙 bluetooth (一) 入门
- android -- 蓝牙 bluetooth (一) 入门
- Android——4.2 蓝牙 BlueTooth 初探入门 (一)
- android系统源码学习 -- 蓝牙 bluetooth (一) 入门
- android -- 蓝牙 bluetooth 入门
- 兔子-蓝牙 bluetooth (一) 入门
- ***快速理解Docker - 容器级虚拟化解决方案
- 广搜-nyoj-隐式图的搜索-三个水杯
- android 图片压缩
- hdu5115 区间dp
- linux中fork()函数x详解
- android 4.2-- 蓝牙 bluetooth (一) 入门
- MATLAB函数大全
- 聚合数据左磊:不走寻常路 做国内最好的数据聚合平台
- Activity状态保存
- [leetcode] Min Stack
- C#操作MySQL数据库的简单例子
- oracle 基线与优化(三)
- 互联网,软件行业找工作问题总结
- PS 滤镜——水波 water wave