Android 蓝牙
文章平均质量分 71
介绍Android车载蓝牙App开发
一个学渣的自我救赎
这个作者很懒,什么都没留下…
展开
-
Android13 BluetoothA2dpSink connect流程分析
到这里A2dpSinkService的connet流程就分析完了。在之后就是蓝牙协议栈相关内容,在这里就不再分析了。原创 2024-05-10 20:40:16 · 322 阅读 · 0 评论 -
Android BluetoothSdp
服务发现协议,服务发现协议(SDP)为应用程序提供了一种方法来发现哪些服务可用,并确定这些可用服务的特征。SDP提供了应用发现可用服务以及确定可用服务特点的方法。1. 为客户提供搜索所需要服务的能力.2. 允许基于服务类型搜索服务3. 可抑执行服务浏览,而不需预先知道服务特征.4. 提供一种新的方法来搜索新的服务.5. 提供一种机制来确定在设备离开客户设备邻频时,设备在何时变为不可用.6. 提供对服务、服务类型和属性的唯一标识。原创 2024-05-11 21:12:30 · 119 阅读 · 0 评论 -
Android BluetoothObex
OBEX全称为Object Exchange,中文对象交换,所以称之为对象交换协议。它在此软件当中有着核心地位,文件传输和IrMC同步都会使用到它。OBEX v2.0蓝牙协议层次结构图:OBEX可以用来传输vCard(电话本),vCalendar(电子日历),vMessage(短信和email)和vNotes(电子笔记)。原创 2024-05-11 21:11:37 · 929 阅读 · 0 评论 -
Android BluetoothGatt
蓝牙分为经典蓝牙和低功耗蓝牙(BLE),我们常用的蓝牙遥控器就是低功耗蓝牙。低功耗蓝牙(BLE)连接都是建立在 GATT (Generic Attribute Profile) 协议之上。GATT全称Generic Attribute Profile(直译即:通用属性协议),是一个在蓝牙连接之上的发送和接收较短的数据段的通用规范,这些很短的数据段被称为属性(Attribute)。原创 2024-05-11 21:00:29 · 598 阅读 · 0 评论 -
Android13 BluetoothSocket connect流程分析
BluetoothSocket是一个用于在Android设备之间进行蓝牙通信的类。原创 2024-05-11 20:56:02 · 209 阅读 · 0 评论 -
Android BluetoothSocket
BluetoothSocket是Android中用于在蓝牙设备之间进行数据传输的一种Socket。它提供了一种类似于TCP/IP协议的数据传输方式,可以在两个设备之间建立一个虚拟的通信管道,使得两个设备之间可以进行数据的传输和接收。BluetoothSocket可以用于客户端和服务端之间的通信,通过BluetoothSocket可以实现数据的双向传输。原创 2024-05-11 20:53:55 · 658 阅读 · 0 评论 -
Android13 BluetoothPbapClient disconnect流程分析
到这里BluetoothPbapClient的disconnect流程就分析完了。原创 2024-05-11 20:50:04 · 274 阅读 · 0 评论 -
Android13 BluetoothPbapClient connect流程分析
5、创建PbapClientConnectionHandler对象,PbapClientConnectionHandler的作用是将线程设置为消息处理的Looper线程,用于处理Pbap客户端的连接。2、创建内部类SDPBroadcastReceiver对象,用于接收SDP广播,SDP_RECORD 是一个 BluetoothDevice 类型的广播意图,它表示设备在 Service Discovery Protocol(SDP)记录中返回了一个值。当远程设备公开服务时,可以使用 SDP 记录来描述服务。原创 2024-05-11 20:45:24 · 584 阅读 · 0 评论 -
Android BluetoothPbap
Phone Book Access Profile的简称,电话本访问协议,是一种基于OBEX的上层协议,该协议可以同步手机这些具有电话本功能设备上的通讯录和通话记录等信息。PBAP协议规定两种角色:PSE:Phone Book Server Equipment,拥有电话本源数据的设备,作为服务端,比如手机。PCE:Phone Book Client Equipment,向PSE端请求电话本信息的设备,作为客户端,比如车载蓝牙。原创 2024-05-11 20:40:39 · 930 阅读 · 0 评论 -
Android13 BluetoothAvrcp disconnect流程
BluetoothAvrcpController,没有提供协议连接断开的接口,A2DP断开成功后,BT协议栈(BT Stack)会主动发起AVRCP的断开,具体可以查看android部分源码。原创 2024-05-11 20:30:34 · 806 阅读 · 0 评论 -
Android13 BluetoothAvrcp connect流程
BluetoothAvrcpController,没有提供协议连接和断开的接口,那AVRCP协议是如何连接的呢?因为AVRCP和A2DP协议通常都是一起使用的,A2DP连接成功后,蓝牙协议栈(BT Stack)会主动发起AVRCP的连接,具体可以查看android部分源码。AVRCP的连接也涉及到了两条通道的建立:控制通道 + 浏览通道(双方都支持浏览功能),那次协议的连接流程主要是建立两条L2CAP链路的过程,但第一步还是发起SDP服务,这是蓝牙连接中必不可少的一环。原创 2024-05-10 21:16:00 · 829 阅读 · 0 评论 -
Android BluetoothAvrcp
VCTP(Audio/Video Control Transport Protocol Specification)音频/视频控制传输协议是一个框架协议,描述蓝牙设备间Audio/Video的控制信号交换的传输机制,具体的控制信息(编码和格式)由其指定的协议(如AVRCP)实现,AVCTP本身只指定控制command和response的总体的格式,AVCTP是建立在L2CAP上的。原创 2024-05-10 21:06:27 · 873 阅读 · 0 评论 -
Android13 BluetoothA2dpSink disconnect流程分析
调用btav_sink_interface_t的disconnect方法,,btav_sink_interface_t是一个结构体,在bt_av.h中定义,a2dp_sink.cc中实。调用A2dpSinkService的removeStateMachine方法,删除状态机。到这里A2dpSinkService的disconnet流程就分析完了。在之后就是蓝牙协议栈相关内容,在这里就不再分析了。原创 2024-05-10 20:52:08 · 290 阅读 · 0 评论 -
Android13 BluetoothA2dp disconnect流程分析
到这里BluetoothA2dp的disconnet流程就分析完了。在之后就是蓝牙协议栈相关内容,在这里就不再分析了。原创 2024-05-10 20:33:51 · 243 阅读 · 0 评论 -
Android13 BluetoothA2dp connect流程分析
这部分为可选解码器相关,我们可以先不关注,到这里BluetoothA2dp的disconnet流程就分析完了。在之后就是蓝牙协议栈相关内容,在这里就不再分析了。原创 2024-05-10 20:28:08 · 234 阅读 · 0 评论 -
Android BluetoothA2dp
高级音频分发规范 (A2DP) 定义了实现以单声道(mono)、立体声(stereo)或多声道(multi-channel)模式分发高质量音频内容的协议和程序。因此,术语“高级音频(advanced audio)”应与“蓝牙音频(Bluetooth audio)”区分开来,后者表示在蓝牙核心规范第 2 卷 B 部分第 9 节中定义的 SCO 通道上的窄带语音分布。一个典型的用例是将音乐内容从立体声音乐播放器流式传输到耳机或扬声器。音频数据以适当的格式压缩,以有效利用有限的带宽。原创 2024-05-10 20:20:55 · 1020 阅读 · 0 评论 -
Android13 BluetoothHeadset disconnectAudio流程分析
BluetoothHeadsetClient disconnectAudio用于断开音频通道,若音频通道断开,则通话时发声端为手机端。原创 2024-05-10 20:10:19 · 454 阅读 · 0 评论 -
Android13 BluetoothHeadset connectAudio流程分析
BluetoothHeadsetClient connectAudio用于连接音频通道,若音频通道连接,则通话时发声端为车机端。原创 2024-05-09 21:45:48 · 878 阅读 · 0 评论 -
Android13 BluetoothHeadsetClient terminateCall流程分析
调用bthf_client_interface_t的handle_call_action函数,bthf_client_interface_t是个结构体,在bt_hf_client.h中定义,在bt_hf_client.cc中实。在之后就是蓝牙协议栈相关内容,在这里就不再分析了。原创 2024-05-09 21:39:37 · 148 阅读 · 0 评论 -
Android13 BluetoothHeadsetClient rejectCall流程分析
在之后就是蓝牙协议栈相关内容,在这里就不再分析了。原创 2024-05-09 21:36:39 · 204 阅读 · 0 评论 -
Android13 BluetoothHeadsetClient acceptCall流程分析
在之后就是蓝牙协议栈相关内容,在这里就不再分析了。原创 2024-05-09 21:25:32 · 164 阅读 · 0 评论 -
Android13 BluetoothHeadsetClient dial流程分析
上面方法主要处理如下:1、创建HfpClientCall对象,HfpClientCall是一个电话实体类信息。该类包含了电话的各种信息,例如电话号码、呼叫状态、通话时间等等。2、发送DIAL_NUMBER消息到HeadsetClientStateMachine状态机。原创 2024-05-09 21:20:39 · 763 阅读 · 0 评论 -
Android13 BluetoothHeadsetClient disconnect流程分析
到这里BluetoothHeadsetClient的disconnection流程就介绍完了。在之后就是蓝牙协议栈相关内容,在这里就不再分析了。原创 2024-05-09 21:13:35 · 242 阅读 · 0 评论 -
Android13 BluetoothHeadsetClient connect流程分析
BluetoothHeadsetClient connect用于连接HFP,流程图如下:调用IBluetoothHeadsetClient的connect,IBluetoothHeadsetClient是一个接口由HeadsetClientService的内部类BluetoothHeadsetClientBinder实。原创 2024-05-09 21:00:04 · 785 阅读 · 0 评论 -
Android BluetoothHeadset
用于控制蓝牙头戴式耳机服务。这包括蓝牙耳机和免提(HFP),主要实现拨打、接听、挂断电话(AG侧、HF侧)、切换声道功能。AG(Audio Gate)音频网关—音频设备输入输出网关。HF(Hands Free)免提—该设备作为音频网关的远程音频输入/输出机制,并可提供若干遥控功能。在车载蓝牙中,手机侧是AG,车载蓝牙侧是HF,在android源代码中,将AG侧称为HFP/AG,将HF侧称为HFPClient/HF。原创 2024-05-09 19:58:31 · 994 阅读 · 0 评论 -
Android13 BluetoothDevice createBond流程分析
调用BondStateMachine的sendMessage方法,发送CREATE_BOND消息,发送的消息会在BondStateMachine类的内部类StableState的processMessage中处理,这时由于在BondStateMachine的构造方法中调用setInitialState(mStableState);在之后就是蓝牙协议栈相关内容,在这里就不再分析了。原创 2024-05-09 19:47:12 · 398 阅读 · 0 评论 -
Android13 BluetoothDevice 创建流程分析
上面方法主要处理如下:1、调用BluetoothDevice 的getService方法2、调用AttributionSource的myAttributionSource方法。原创 2024-05-09 13:12:29 · 247 阅读 · 0 评论 -
Android BluetoothDevice
BluetoothDevice是Android中用于表示蓝牙设备的类,它包含了蓝牙设备的名称、地址、类型等信息,并提供了一些方法用于连接、配对、获取设备信息等操作。在Android中,我们可以通过BluetoothAdapter来获取BluetoothDevice对象,然后进行相关操作。原创 2024-05-09 13:07:52 · 626 阅读 · 0 评论 -
Android13 ACTION_PAIRING_REQUEST广播发送流程
当蓝牙配对后会发送ACTION_PAIRING_REQUEST广播,通知APP蓝牙配对信息(配对码),具体流程如下:蓝牙芯片通过UART到BT Driver然后再到BT 协议栈,蓝牙协议栈由BTIF、BTIF AV、BTU、BTA、BTE、BTM、HCI组成,我们直接从BTA开始:bta_dm_cb p_sec_cback调用bta_dm_cb的p_sec_cback函数发送BTA_DM_PIN_REQ_EVT消息,消息在btif_dm_upstreams_evt中处理:btif_dm bt原创 2024-05-09 13:04:39 · 247 阅读 · 0 评论 -
Android13 BluetoothAdapter getDefaultAdapter流程分析
【代码】Android13 BluetoothAdapter getDefaultAdapter流程分析。原创 2024-05-08 22:16:18 · 157 阅读 · 0 评论 -
Android13 BluetoothAdapter getRemoteDevice流程分析
上面方法主要处理如下:1、创建BluetoothDevice对象2、调用BluetoothDevice的setAttributionSource方法。原创 2024-05-08 22:13:19 · 284 阅读 · 0 评论 -
Android13 BluetoothAdapter getProfileProxy流程分析
BluetoothAdapter的getProfileProxy获取与配置文件关联的配置文件代理对象,设置BluetoothProfile.ServiceListener。该listener通知BluetoothProfile IPC客户端,当客户端连接或断连服务器的时候。在android.bluetooth.BluetoothProfile) onServiceConnected()内,得到一个profile协议对象的句柄。原创 2024-05-08 22:11:17 · 803 阅读 · 0 评论 -
Android13 BluetoothAdapter startDiscovery流程分析
BluetoothAdapter的startDiscovery方法用于开始蓝牙设备搜索,如下是BluetoothAdapter的startDiscovery方法: 调用IBluetooth的startDiscovery方法,IBluetooth是一个接口,由AdapterService的内部类AdapterServiceBinder实现:调用重载方法:AdapterService startDiscovery调用startDiscovery方法:调用startDiscovery原创 2024-05-08 22:05:38 · 313 阅读 · 0 评论 -
Android13 BluetoothAdapter enable流程分析
4、调用JniCallbacks的init方法,初始JniCallbacks,记录mBondStateMachine和mRemoteDevices。3、调用BondStateMachine的make方法,创建BondStateMachine对象,用于处理蓝牙设备之间的配对和绑定过程。6、调用setProfileServiceState方法,设置ProfileService状态。1、调用RemoteDevices的reset,重启RemoteDevices。原创 2024-05-08 22:03:03 · 622 阅读 · 0 评论 -
Android13 BluetoothAdapter
BluetoothAdapter是Android平台上的一个类,它提供了一些方法来管理本地蓝牙适配器的状态和连接。在Android应用程序中,可以使用BluetoothAdapter来执行以下操作:检查设备是否支持蓝牙打开或关闭本地蓝牙适配器扫描可用的蓝牙设备获取已配对的蓝牙设备列表建立与其他蓝牙设备的连接发现其他蓝牙设备的服务// 检查设备是否支持蓝牙// 设备不支持蓝牙return;// 打开蓝牙适配器if (!获取远端设备实例:可使用getRemoteDevice方法。原创 2024-05-08 21:54:38 · 1013 阅读 · 0 评论 -
Android13 BluetoothManager openGattServer流程分析
调用btgatt_server_interface_t的register_server函数,btgatt_server_interface_t是一个结构体,在bt_gatt_server.h定义,由蓝牙协议栈(BT Stack)实现。原创 2024-05-08 21:40:31 · 275 阅读 · 0 评论 -
Android13 BluetoothManager getConnectedDevices流程分析
【代码】Android13 BluetoothManager getConnectedDevices流程分析。原创 2024-05-08 21:36:46 · 170 阅读 · 0 评论 -
Android13 BluetoothManager getAdapter流程分析
【代码】Android13 BluetoothManager getAdapter流程分析。原创 2024-05-08 21:31:35 · 162 阅读 · 0 评论 -
Android BluetoothManager
BluetoothManager是Android 4.3(API Level 18)中引入的一个类,它是蓝牙架构的一部分,用于管理蓝牙连接。它提供了一个接口,允许应用程序检查蓝牙是否启用,并获取蓝牙适配器。在蓝牙开发中,BluetoothManager和BluetoothAdapter是两个主要的对象,BluetoothManager用于获取BluetoothAdapter对象,而BluetoothAdapter则用于执行蓝牙操作,例如搜索设备和建立连接。原创 2024-05-08 21:29:31 · 672 阅读 · 0 评论 -
Android 蓝牙
蓝牙,是一种支持设备短距离通信(一般10m内)的无线电技术,能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换。利用“蓝牙”技术,能够有效地简化移动通信终端设备之间的通信,也能够成功地简化设备与因特网Internet之间的通信,从而数据传输变得更加迅速高效,为无线通信拓宽道路。蓝牙作为一种小范围无线连接技术,能在设备间实现方便快捷、灵活安全、低成本、低功耗的数据通信和语音通信,因此它是目前实现无线个域网通信的主流技术之一。与其他网络相连接可以带来更广泛的应用。原创 2024-05-08 21:24:52 · 331 阅读 · 0 评论