Android蓝牙协议指南
android蓝牙介绍二蓝牙代码架构及其uart 到rfcomm流程

Android bluetooth介绍(二)android 蓝牙代码架构及其uart 到rfcomm 流程一、Android Bluetooth Architecture蓝牙代码架构部分(google 官方蓝牙框架)Android的蓝牙系统,自下而上包括以下一些内容如上图所示:1、串口驱动Linux的内核的蓝牙驱动程、Linux的内核的蓝牙协议的层2、BlueZ的适配器BlueZ的(蓝牙在用户空间的函式库)bluez代码结构Bluetooth协议栈BlueZ分为两部分:内核代码和用户态程序及工具集。
(1)、内核代码:由BlueZ核心协议和驱动程序组成Bluetooth协议实现在内核源代码 kernel/net/bluetooth中。
包括hci,l2cap,hid,rfcomm,sco,SDP,BNEP等协议的实现。
(2)、驱动程序:kernel/driver/bluetooth中,包含Linuxkernel对各种接口的Bluetooth device的驱动,如:USB接口,串口等。
(3)、用户态程序及工具集:包括应用程序接口和BlueZ工具集。
BlueZ提供函数库以及应用程序接口,便于程序员开发bluetooth应用程序。
BlueZ utils是主要工具集,实现对bluetooth设备的初始化和控制。
3、蓝牙相关的应用程序接口Android.buletooth包中的各个Class(蓝牙在框架层的内容-----java)同样下图也是一张比较经典的蓝牙代码架构图(google官方提供)二、蓝牙通过Hciattach启动串口流程:1、hciattach总体流程2、展讯hciattach代码实现流程:三、具体代码分析1、initrc中定义idh.code\device\sprd\sp8830ec_nwcn\init.sc8830.rc1.service hciattach /system/bin/hciattach -n /dev/sttybt0 sprd_shark2.socket bluetooth stream 660 bluetooth bluetoother bluetooth4.group wifi bluetooth net_bt_admin net_bt inet net_raw net_admin system5.disabled6.oneshotadb 下/dev/ttybt0(不同平台有所不同)PS 进程中:hicattch2、/system/bin/hciattach 执行的Main函数idh.code\external\bluetooth\bluez\tools\hciattach.cservice hciattach /system/bin/hciattach -n /dev/sttybt0sprd_shark 传进两个参数,/dev/sttybt0 和 sprd_shark1.i nt main(int argc, char *argv[])2.{3.………………4.for (n = 0; optind < argc; n++, optind++) {5.char *opt;6.7.opt = argv[optind];8.9.switch(n) {10. case 0://(1)、解析驱动的位置;11. dev[0] = 0;12. if (!strchr(opt, '/'))13. strcpy(dev, "/dev/");14. strcat(dev, opt);15. break;16.17. case 1://(2)、解析串口的配置相关参数;18. if (strchr(argv[optind], ',')) {19. int m_id, p_id;20. sscanf(argv[optind], "%x,%x",&m_id, &p_id);21. u = get_by_id(m_id, p_id);22. } else {23. u = get_by_type(opt);24. }25.26. if (!u) {27. fprintf(stderr, "Unknown device type or id\n");28. exit(1);29. }30.31. break;32.33. case 2://(3)、通过对前面参数的解析,把uart[i]中的数值初始化;34. u->speed = atoi(argv[optind]);35. break;36.37. case 3:38. if (!strcmp("flow", argv[optind]))39. u->flags |= FLOW_CTL;40. else41. u->flags &= ~FLOW_CTL;42. break;43.44. case 4:45. if (!strcmp("sleep", argv[optind]))46. u->pm = ENABLE_PM;47. else48. u->pm = DISABLE_PM;49. break;50.51. case 5:52. u->bdaddr = argv[optind];53. break;54. }55. }56.57.………………58. if (init_speed)//初始化串口速率;59. u->init_speed = init_speed;60.………………61. n = init_uart(dev, u, send_break, raw);//(4)、初始化串口;62.………………63.64. return 0;65.}(1)、解析驱动的位置;1.if (!strchr(opt, '/'))2.strcpy(dev, "/dev/");3.service hciattach /system/bin/hciattach -n /dev/sttybt0 sprd_shark4.dev = /dev/ttyb0(2)、解析串口的配置相关参数;获取参数对应的结构体;1.u = get_by_id(m_id, p_id);2.static struct uart_t * get_by_id(int m_id, int p_id)3.{4.int i;5.for (i = 0; uart[i].type; i++) {6.if (uart[i].m_id == m_id && uart[i].p_id== p_id)7.return &uart[i];8.}9.return NULL;10.}这个函数比较简单,通过循环对比,如传进了的参数sprd_shark和uart结构体中的对比,找到对应的数组。
android蓝牙SPP协议通信

android蓝⽛SPP协议通信准备1.蓝⽛串⾏端⼝基于SPP协议(Serial Port Profile),能在蓝⽛设备之间创建串⼝进⾏数据传输2.SPP的UUID:00001101-0000-1000-8000-00805F9B34FB3.Android⼿机⼀般以客户端的⾓⾊主动连接SPP协议设备连接流程1.检测蓝⽛状态若蓝⽛未打开,则打开蓝⽛~bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();@Overrideprotected void onResume() {super.onResume();if (!bluetoothAdapter.isEnabled()) {// open blueToothIntent enableBtIntent = new Intent( BluetoothAdapter.ACTION_REQUEST_ENABLE);startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);}}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {if (requestCode == REQUEST_ENABLE_BT && resultCode == Activity.RESULT_CANCELED) {finish();return;}}2.注册设备搜索⼴播信息使⽤registerReceiver注册broadcastReceiver来获取搜索设备等消息IntentFilter intentFilter = new IntentFilter();intentFilter.addAction(BluetoothDevice.ACTION_FOUND);intentFilter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);registerReceiver(receiver, intentFilter);// receiverprivate final BroadcastReceiver receiver = new BroadcastReceiver(){@Overridepublic void onReceive(Context context, Intent intent) {String action = intent.getAction();if (BluetoothDevice.ACTION_FOUND.equals(action)) {// find a deviceBluetoothDevice device = intent .getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);if (device.getBondState() != BluetoothDevice.BOND_BONDED) {//未配对设备newDeviceArrayAdapter.add(device.getName() + "\n" + device.getAddress());}else {//已经配对过的设备TextView tvPaired = (TextView)findViewById(_paired);tvPaired.setVisibility(View.VISIBLE);lvPairedDevices.setVisibility(View.VISIBLE);pairedDeviceArrayAdapter.add(device.getName() + "\n" + device.getAddress());}Log.i(TAG,"name:" + device.getName() + " address"+ device.getAddress());} else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action){// search finishLog.i(TAG, "search finish!");}}};3.使⽤BlueAdatper搜索使⽤bluetoothAdapter搜索设备,bluetoothAdapter.startDiscovery()在搜索过程中,系统会发出三个⼴播信息:ACTION_DISCOVERY_START:开始搜索ACTION_DISCOVERY_FINISHED:搜索结束ACTION_FOUND:找到设备@Overridepublic void onClick(View v) {if (bluetoothAdapter.isDiscovering()) {bluetoothAdapter.cancelDiscovery();}bluetoothAdapter.startDiscovery();}4.获取搜索到的蓝⽛设备信息在BroadcastReceiver的onReceive()⾥取得搜索到的蓝⽛设备信息(如名称,MAC,RSSI)5.通过蓝⽛设备的MAC地址来建⽴⼀个BluetoothDevice对象:BluetoothDevice romoteDevice = bluetoothAdapter.getRemoteDevice(mDeviceAddress);6.由BluetoothDevice衍⽣BluetoothSocket通过BluetoothSocket的createRfcommSocketToServiceRecord()⽅法来选择连接的协议/服务,这⾥⽤的是SPP(UUID:00001101-0000-1000-8000-00805F9B34FB)try {bluetoothSocket = romoteDevice.createRfcommSocketToServiceRecord(UUID.fromString(SPP_UUID));} catch (IOException e) {e.printStackTrace();Toast.makeText(this, "socket init failed", Toast.LENGTH_SHORT).show();}7.使⽤BluetoothSocket来连接、读写蓝⽛设备读写可以归到⼀个独⽴线程去实现~try {bluetoothSocket.connect();Toast.makeText(this, "connect success", Toast.LENGTH_SHORT).show();} catch (IOException e2) {e2.printStackTrace();Toast.makeText(this, "connect failed", Toast.LENGTH_SHORT).show();try {bluetoothSocket.close();bluetoothSocket = null;} catch (IOException e) {e.printStackTrace();Toast.makeText(this, "socket close failed", Toast.LENGTH_SHORT).show();}return;}try {inputStream = bluetoothSocket.getInputStream();} catch (IOException e2) {e2.printStackTrace();Toast.makeText(this, "get inputstream failed", Toast.LENGTH_SHORT).show();return;}try {OutputStream os = bluetoothSocket.getOutputStream();byte[] osBytes = etInput.getText().toString().getBytes();for (int i = 0; i < osBytes.length; i++) {if (osBytes[i] == 0x0a)n++;}byte[] osBytesNew = new byte[osBytes.length+n];n = 0;for (int i = 0; i < osBytesNew.length; i++) {//mobile "\n"is 0a,modify 0d 0a then sendif (osBytesNew[i] == 0x0a) {osBytesNew[n] = 0x0d;n++;osBytesNew[n] = 0x0a;}else {osBytesNew[n] = osBytes[i]; }n++;}os.write(osBytesNew);} catch (Exception e) {e.printStackTrace();}。
蓝牙配对协议

蓝牙配对协议概述蓝牙配对协议是用于在蓝牙设备之间建立安全连接的协议。
通过配对,蓝牙设备可以进行加密通信,确保数据的保密性和完整性。
本文将介绍蓝牙配对协议的基本原理和常见的配对方式。
配对方式1. PIN码配对PIN码配对是最常见的蓝牙配对方式之一。
在PIN码配对过程中,主从设备之间通过输入PIN码进行配对。
通过输入相同的PIN码,设备之间可以验证彼此的身份,并建立安全连接。
1.1. 输入PIN码在PIN码配对过程中,首先需要主从设备之间共享一个PIN码。
设备可以事先设置一个PIN码,然后将其告知对方设备。
在配对过程中,设备会向对方设备发送PIN码请求。
对方设备接收到请求后,需要用户在设备上输入提前设定好的PIN码。
1.2. 验证PIN码设备接收到PIN码后,会对该PIN码进行验证。
如果验证通过,设备之间会建立安全连接。
否则,配对失败。
2. 口令配对口令配对是另一种常见的蓝牙配对方式。
在口令配对过程中,设备之间通过输入一个口令进行配对。
与PIN码配对类似,通过输入相同的口令,设备之间可以验证彼此的身份,并建立安全连接。
2.1. 输入口令在口令配对过程中,首先需要主从设备共享一个口令。
设备可以事先设置一个口令,并将其告知对方设备。
在配对过程中,设备会向对方设备发送口令请求。
对方设备接收到请求后,需要用户在设备上输入提前设定好的口令。
2.2. 验证口令设备接收到口令后,会对该口令进行验证。
如果验证通过,设备之间会建立安全连接。
否则,配对失败。
安全性与加密蓝牙配对协议的一个重要目标是确保通信的安全性。
在成功配对后,设备之间会建立一个称为“链接密钥”的共享密钥。
设备使用链接密钥来加密通信数据,以确保数据的保密性和完整性。
1. 加密算法蓝牙配对协议采用了一种称为“安全模型”的框架来支持多种加密算法。
具体采用哪种加密算法取决于设备的支持情况。
目前,比较常用的加密算法有AES-128和AES-256。
2. 加密密钥在配对过程中,设备之间会建立一个加密密钥。
蓝牙协议书规范

蓝牙协议书规范# 蓝牙协议书规范## 第一条定义1.1 “蓝牙技术”指采用蓝牙标准进行无线通信的技术。
1.2 “协议书”指本文档所规定的蓝牙技术使用协议。
1.3 “用户”指使用蓝牙技术或服务的个人或实体。
## 第二条协议的生效2.1 本协议自用户接受之日起生效,用户通过点击“同意”按钮或使用蓝牙技术即视为接受本协议。
## 第三条用户资格3.1 用户应为具有完全民事行为能力的自然人、法人或其他组织。
3.2 用户应保证提供的信息真实、准确、完整。
## 第四条蓝牙技术的使用4.1 用户应按照蓝牙技术的标准和规定使用蓝牙设备和服务。
4.2 用户不得利用蓝牙技术进行任何违法活动,包括但不限于侵犯他人知识产权、隐私权等。
## 第五条数据保护5.1 用户在使用蓝牙技术过程中产生的数据,应遵守相关数据保护法规。
5.2 我们承诺采取合理措施保护用户数据的安全和隐私。
## 第六条知识产权6.1 本协议书及相关蓝牙技术中的所有知识产权归属于其合法所有者。
6.2 用户不得侵犯蓝牙技术的知识产权,包括但不限于商标、专利、著作权等。
## 第七条免责声明7.1 蓝牙技术提供的服务可能受到不可抗力因素的影响,我们不对因不可抗力导致的服务中断或数据丢失承担责任。
7.2 用户应自行承担使用蓝牙技术的风险,我们不对用户因使用蓝牙技术遭受的任何损失承担责任。
## 第八条协议的修改8.1 我们保留随时修改本协议的权利,修改后的协议一旦公布即生效。
8.2 用户应定期查看本协议的最新版本,继续使用蓝牙技术即视为接受修改后的协议。
## 第九条法律适用与争议解决9.1 本协议的解释、适用及争议解决均适用中华人民共和国法律。
9.2 如发生争议,双方应首先通过友好协商解决;协商不成的,可提交至有管辖权的人民法院通过诉讼方式解决。
## 第十条其他10.1 本协议未尽事宜,双方可另行协商确定。
10.2 本协议的任何条款如被认定为无效或不可执行,不影响其他条款的效力。
蓝牙协议中文版

蓝牙协议中文版1. 引言蓝牙协议是一种无线通信技术,可以在短距离内实现设备之间的数据传输。
该协议已经成为现代电子设备中普遍使用的标准之一。
本文将介绍蓝牙协议的基本原理、通信方式以及相关的技术细节。
2. 蓝牙协议概述蓝牙协议是由蓝牙专业联盟(Bluetooth Special Interest Group,简称:SIG)制定的一种通信协议。
它定义了在2.4 GHz频段上进行无线通信的方式,可以实现设备之间的短距离数据传输。
蓝牙协议的特点包括低功耗、低成本、短距离通信等。
它可以用于连接手机、平板电脑、音频设备、电子手表等各种电子设备。
蓝牙协议还支持多种通信方式,包括点对点通信、广播通信和网状通信等。
3. 蓝牙协议的工作原理蓝牙协议使用频分多址(Frequency Division Multiple Access,简称:FDMA)和时分多址(Time Division Multiple Access,简称:TDMA)两种技术来实现多用户之间的共享信道。
在蓝牙协议中,设备之间通过广播和扫描的方式进行通信。
当设备处于广播模式时,它会发送广播消息,其他设备可以通过扫描接收到该消息。
当设备处于扫描模式时,它会主动搜索周围的设备并与之建立连接。
蓝牙协议还采用了分组(packet)的方式来传输数据。
每个分组包含了数据的有效载荷以及相应的控制信息。
设备之间通过分组来交换数据,以实现可靠的通信。
4. 蓝牙协议的通信方式蓝牙协议支持多种通信方式,包括点对点通信、广播通信和网状通信等。
在点对点通信中,两个设备可以直接建立连接并进行数据传输。
这种通信方式适用于需要进行双向数据传输的场景,例如蓝牙耳机与手机之间的通信。
广播通信是一种一对多的通信方式,一个设备可以向周围的多个设备发送广播消息。
其他设备可以通过扫描接收到该消息,但无法向发送广播的设备进行回复。
这种通信方式适用于需要向多个设备发送同样的信息的场景,例如广告推送。
网状通信是一种多对多的通信方式,多个设备可以相互之间建立连接并进行数据传输。
蓝牙所有协议规范

蓝牙所有协议规范蓝牙技术是一种短距离无线通信技术,最初由瑞典的爱立信公司在1994年开发。
它使用2.4GHz的ISM频段进行无线通信,具备低功耗、低成本和广泛的应用领域特点,被广泛应用于消费电子、医疗设备、汽车和工业领域等。
为了确保蓝牙设备之间的互操作性,蓝牙技术联盟制定了一系列的协议规范。
这些协议规范定义了蓝牙设备的通信协议、硬件接口和应用层协议等,确保了不同厂商的蓝牙设备可以互相配对和通信。
下面,我们将逐一介绍蓝牙技术联盟定义的一些重要的协议规范:1. 蓝牙核心规范(Bluetooth Core Specification)蓝牙核心规范定义了蓝牙设备之间的通信协议,包括物理层、链路层、控制层和应用层等。
它规定了蓝牙设备的基本功能和特性,确保了蓝牙设备之间的互通性。
2. 蓝牙配对协议(Bluetooth Pairing Protocol)蓝牙配对协议定义了蓝牙设备之间的配对过程和密钥生成算法。
在蓝牙设备进行配对时,配对协议确保了通信双方的身份验证和密钥交换,从而确保了蓝牙通信的安全性。
3. 蓝牙传输协议(Bluetooth Transport Protocol)蓝牙传输协议定义了蓝牙设备之间数据的传输方式和协议。
它规定了蓝牙设备之间的数据传输格式、数据包的结构和传输速率等,确保了蓝牙设备之间数据的可靠传输和处理。
4. 蓝牙音频协议(Bluetooth Audio Profile)蓝牙音频协议定义了蓝牙设备之间音频数据的传输和处理方式。
它规定了蓝牙设备之间音频数据的编码格式、音频传输通道和音频控制等,使得蓝牙设备可以实现音频的传输和播放功能。
5. 蓝牙物联网协议(Bluetooth Internet of Things Profile)蓝牙物联网协议定义了蓝牙设备在物联网应用中的通信协议和功能规范。
它包括了蓝牙设备的发现、连接、数据传输和远程控制等功能,使得蓝牙设备可以无线连接到物联网并实现远程监控和控制。
蓝牙配对协议书范本

蓝牙配对协议书范本甲方(设备提供方):________________________乙方(设备使用方):_______________________鉴于甲方拥有蓝牙设备及相关技术,乙方需要使用甲方提供的蓝牙设备进行数据传输,双方本着平等互利的原则,经协商一致,就蓝牙设备配对事宜达成如下协议:1. 配对目的甲方同意将其拥有的蓝牙设备与乙方设备进行配对,以便乙方能够使用甲方的蓝牙设备进行数据传输。
2. 配对范围甲方提供的蓝牙设备仅限于乙方使用,乙方不得将配对信息泄露给第三方或用于非授权用途。
3. 配对条件乙方需提供有效的设备信息,包括但不限于设备型号、操作系统版本等,以便甲方进行配对。
4. 配对流程甲方将在收到乙方提供的有效设备信息后,启动配对流程。
配对成功后,甲方将提供配对凭证给乙方。
5. 配对凭证乙方应妥善保管配对凭证,该凭证是乙方使用甲方蓝牙设备的唯一凭证。
如凭证遗失,乙方应及时通知甲方,并按照甲方规定办理补发手续。
6. 配对期限本协议项下的配对服务有效期为自配对成功之日起一年。
期满后,乙方如需继续使用,应与甲方重新签订协议。
7. 保密条款双方应对在配对过程中知悉的对方商业秘密和技术秘密负有保密义务,未经对方书面同意,不得向第三方披露。
8. 违约责任如一方违反本协议约定,应承担违约责任,并赔偿对方因此遭受的一切损失。
9. 争议解决本协议在履行过程中如发生争议,双方应通过友好协商解决;协商不成时,任何一方均可向甲方所在地人民法院提起诉讼。
10. 其他本协议未尽事宜,双方可另行协商解决。
本协议自双方签字盖章之日起生效。
甲方代表(签字):________________________乙方代表(签字):_______________________签订日期:____年____月____日(注:本范本仅供参考,具体合同内容应根据实际情况由双方协商确定,并建议在签订前咨询法律专业人士。
)。
bluetooth协议架构详解与android 蓝牙架构分析

二、中间协议层
中间协议层的一系列协议构成了蓝牙协议体系: • 蓝牙协议体系中的协议按SIG的关注程度分为四层: 1.核心协议:BaseBand、LMP、L2CAP、SDP; 2.电缆替代协议:RFCOMM; 3.电话传送控制协议:TCS-Binary、AT 命 令 集; 4.选用协议:PPP、UDP/TCP/IP、OBEX、WAP、vCard、 vCal、IrMC、 WAE。 • 除上述协议层外,规范还定义了主机控制器接口(HCI), 位于蓝牙系统的L2CAP(逻辑链路控制与适配协议)层和 LMP(链路管理协议)层之间的一层协议。
爱立信将这项新的无线通信技术命名为蓝牙(Bluetooth)。 Bluetooth取自10世纪丹麦国王 Harald Bluetooth 的名字。 1998年5月,爱立信联合诺基亚(Nokia)、英特尔 (Intel)、IBM 、东芝(Toshiba)这4家公司一起成立了 蓝牙特别兴趣小组(Special Interest Group,SIG),负 责蓝牙技术标准的制定、产品测试,并协调各国蓝牙的具体 使用。目前SIG已经采纳蓝牙4.0核心规范技术拥有极低的运 行和待机功耗,使用一粒纽扣电池甚至可连续工作数年之久。 同时还拥有低成本,跨厂商互操作性,3毫秒低延迟、100米 以上超长距离、AES-128加密等诸多特色,可以用于计步器、 心律监视器、智能仪表、传感器物联网等众多领域,大大扩 展蓝牙技术的应用范围。
蓝牙移动终端
• 移动电话( Mobile Phone ), 无绳电话 ( Cordless Phone ), 笔记本电脑 ( Notebook), 个人数字助理 ( PDA ), 数字相机 ( Digital cameras), 打印机 ( Printer), 局域网络 ( Network)等
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Android蓝牙协议栈Android蓝牙协议栈使用的是BlueZ,支持GAP, SDP, and RFCOMM规范,是一个SIG认证的蓝牙协议栈。
Bluez 是GPL许可的,因此Android的框架内与用户空间的bluez代码通过D-BUS进程通讯进行交互,以避免专有代码。
Headset和Handsfree(v1.5)规范就在Android框架中实现的,它是跟Phone App紧密耦合的。
这些规范也是SIG认证的。
下面的图表提供了一个以库为导向的蓝牙栈视图。
实线框的是Android模块,红色虚线部分为合作伙伴指定模块(译者注:芯片商提供)。
下面的图表是以进程为导向视图:移植BlueZ是兼容蓝牙2.1的,可以工作在任何2.1芯片以及向后兼容的旧的蓝牙版本。
有要有两个方面:∙串口驱动 UART driver∙蓝牙电源开/关 Bluetooth Power On/Off串口驱动BlueZ核心子系统使用hciattach守护进程添加你的指定硬件串口驱动。
例如,MSM7201A,这个文件是在drivers/serial/msm_serial.c。
你还需要通过修改init.rc为hciattach来编辑命令行选项。
蓝牙电源开/关蓝牙芯片的电源开关方法1.0和Post 1.0是不同的,具体如下:∙ 1.0:Android框架写0或1到/sys/modules/board_[PLATFORM]/parameters/bluetooth_power_on∙Post 1.0:Android框架使用linux rfkill API,参考 arch/arm/mach-msm/board-trout-rfkill.c例子。
编译编译Android打开蓝牙支持,添加下面这行内容到BoardConfig.mk。
BOARD_HAVE_BLUETOOTH :=true解决问题调试调试你的蓝牙实现,可以通过读跟蓝牙相关的logs(adb logcat)和查找ERROR和警告消息。
Android使用Bluez,同时会带来一些有用的调式工具。
下面的片段为了提供一个建议的例子:hciconfig -a# print BT chipset address and features. Useful to check if you can communicate with your BT chipset.hcidump -XVt# print live HCI UART traffic.hcitool scan# scan for local devices. Useful to check if RX/TX works.l2ping ADDRESS# ping another BT device. Useful to check if RX/TX works.sdptool records ADDRESS # request the SDP records of another BT device.守护进程日志hcid(STDOUT)和hciattach(STDERR)的守护进程日志缺省是被写到/dev/null。
编辑init.rc和init.PLATFORM.rc在logwrapper下运行这些守护进程,把它们输出到logcat。
hciconfig -a 和 hcitool如果你编译你自己的system.img,除了hcitool扫描不行,hciconfig -a是可以工作的,尝试安装固件到蓝牙芯片。
XXX TBD工具BlueZ为调试和与蓝牙子系统通信提供很多设置命令行工具,包含下面这些:hciconfighcitoolhcidumpsdptooldbus-senddbus-monitor特性支持这一部分提供在每个android版本中的蓝牙的一些变化,主要是一些性能参数上的东西,就不翻译了。
Android 1.0 releasePlatform features∙Based on Bluez 3.36 and Linux Kernel 2.6.25∙Bluetooth 2.0+EDR host stack∙Headset Profile 1.0 in Audio Gateway role∙Handsfree Profile 1.5 in Audio Gateway roleo Three-way callingo Phonebook over AT commandsQualifications∙QDID B014524: Host stack (SDP, L2CAP, GAP, RFCOMM, SPP)∙QDID B014624: EPL for HTC Dream (HSP, HFP)Example products∙HTC Dream / T-Mobile G1Android 1.1 releaseNo Bluetooth changes since 1.0Android 1.5 release (cupcake)Platform features∙Based on Bluez 3.36 with Linux Kernel 2.6.27∙Bluetooth 2.0+EDR host stacko Support for auto-pairing with '0000' devices∙Headset Profile 1.1 in Audio Gateway role∙Handsfree Profile 1.5 in Audio Gateway roleo Three-way callingo Phonebook over AT commandso Volume synchronizationo eSCOo Extensive bug fixes and compatibility improvements∙Stereo Bluetooth (A2DP 1.2) in Source roleo AVDTP 1.2 in Acceptor and Initiator roleso GAVDTP 1.0 in Acceptor and Initiator roleso44.1 khz, stereo, software SBC codec∙Remote Control (AVRCP 1.0) in Target roleo AVCTP 1.3 in Target roleo play/pause/stop/prev/nextQualifications∙QDID B015261: Host stack (SDP, L2CAP, GAP, RFCOMM, SPP, AVCTP, AVRCP, GAVDP, AVDTP, A2DP) ∙QDID B015262: EPL for HTC Sapphire (HSP, HFP)Android 2.0/2.1 release (eclair)Platform features∙Based on Bluez 4.47 with Linux Kernel 2.6.29∙Bluetooth 2.1+EDR host stacko Support for auto-pairing with '0000' deviceso Support for Simple Secure Pairing∙Headset Profile 1.1 in Audio Gateway role∙Handsfree Profile 1.5 in Audio Gateway roleo Three-way callingo Phonebook over AT commandso Volume synchronizationo eSCOo Extensive bug fixes and compatibility improvements∙Stereo Bluetooth (A2DP 1.2) in Source roleo AVDTP 1.2 in Acceptor and Initiator roleso GAVDTP 1.0 in Acceptor and Initiator roleso44.1 khz, stereo, software SBC codec∙Remote Control (AVRCP 1.0) in Target roleo AVCTP 1.3 in Target roleo play/pause/stop/prev/next∙Object Push Profile version 1.1o Adds ability to transfer pictures, videoso Transfer of contacts using vCard is not supported in this release.∙Phone Book Address Profile version 1.0o Phone Book Server Equipment (PSE) role supported∙Using Java Bluetooth APIs, an Android application can peform the following:o Scan for other Bluetooth deviceso Query the local Bluetooth adapter for paired Bluetooth deviceso Establish RFCOMM channelso Connect to other devices through service discoveryo Transfer data to and from other deviceso Manage multiple connections∙Support for Bluetooth enabled car and desk dockso Framework support for routing Phone Call Audio and A2DP streaming using car and desk docks. Android 2.2 release (Froyo)Platform features∙Based on Bluez 4.47 with Linux Kernel 2.6.32∙No new profiles added.∙Added ability to share contacts using vCard∙Added ability to export all contacts - useful to transfer contacts to car kits∙Improved compatibility with headsets and car kits.Future releasesThis section offers a rough guide of which features the team is developing for the next release. This feature list may change without notice. It isn't possible to post scheduling advice to the mailing lists.∙More profiles...∙Improved compatibility with headsets and car kits∙Bluetooth emulator support∙Bluetooth Low Energy译者注:这里请大家注意一下红色部分,难道将来模拟器可以使用BT?开发须知HID支持Tethering - DUN and PAN 支持最后把官方链接附上:/porting/bluetooth.html。