文档知识库教程OpenHarmony【免费下载链接】CangjieCorpus本仓库为仓颉编程语言语料库聚焦 仓颉编程语言 核心知识体系整合官方开发指南、API 文档、典型代码示例及语法规范等多维度资源经结构化处理与专业标注构建为支持 RAG检索增强生成技术 的高质量知识基座适配智能编码助手、学习辅助工具等应用开发需求。 欢迎开发者基于本语料库构建仓颉语言智能应用推动鸿蒙开发生态智能化升级项目地址https://gitcode.com/Cangjie/CangjieCorpus点击查看免费下载本指南聚焦 OpenHarmony 蓝牙开发中ohos.bluetooth.constant蓝牙 constant 模块的核心内容系统讲解ProfileConnectionState连接状态枚举的四个取值、判等与字符串化运算符并结合本仓库中 cj-apis-bluetooth-base_profile.md、cj-apis-bluetooth-a2dp.md、cj-apis-bluetooth-ble.md 与 GATT 开发指南中的实际用法说明如何在仓颉工程中订阅连接状态变化事件、用状态枚举做连接判断以及处理蓝牙服务子系统错误码。读完本文你将能够在仓颉应用中准确识别蓝牙 profile 的连接生命周期并写出状态机正确的蓝牙连接逻辑。模块定位与导入方式constant模块是蓝牙能力中专门承载常量定义的模块ProfileConnectionState即用于描述蓝牙设备 profile如 A2DP 音频、HFP 通话等的连接状态。在仓颉工程中通过以下方式导入import kit.ConnectivityKit.*该模块下所有接口均要求系统能力SystemCapability.Communication.Bluetooth.Core起始版本为22即仅在支持该系统能力的 OpenHarmony 设备上可用。导入后即可直接使用ProfileConnectionState类型及其成员。ProfileConnectionState 枚举四个状态成员枚举完整声明如下...表示当前文档版本中未展开的预留成员public enum ProfileConnectionState : EquatableProfileConnectionState ToString { | StateDisconnected | StateConnecting | StateConnected | StateDisconnecting | ... }该枚举同时实现EquatableProfileConnectionState可判等与ToString可转字符串两个父类型因此可直接参与、!比较也可调用toString()输出可读文本。四个成员语义如下枚举成员含义典型场景StateDisconnectedprofile 已断连初始状态、断开完成后的稳定状态StateConnectingprofile 正在连接已发起连接请求、等待握手完成StateConnectedprofile 已连接连接建立成功可进行数据传输StateDisconnectingprofile 正在断开连接已发起断开请求、等待连接释放从连接生命周期看状态一般按StateDisconnected → StateConnecting → StateConnected → StateDisconnecting → StateDisconnected循环跃迁。在 cj-gatt-development-guide.md 中官方明确指出整个连接过程会涉及多种状态的跃迁其中StateConnected表示已连接、StateDisconnected表示已断连这为状态判断提供了直接依据。运算符与字符串化方法ProfileConnectionState除枚举成员外还提供三个实例方法用于状态比较与日志输出。判等运算符public operator func (other: ProfileConnectionState): Bool对两个 profile 连接状态判等状态相同返回true否则返回false。参数参数名类型必填默认值说明otherProfileConnectionState是-蓝牙设备的 profile 连接状态返回值Bool状态相同返回true否则返回false。判不等运算符!public operator func !(other: ProfileConnectionState): Bool对两个 profile 连接状态判不等状态不同返回true否则返回false。参数参数名类型必填默认值说明otherProfileConnectionState是-蓝牙设备的 profile 连接状态返回值Bool状态不同返回true否则返回false。字符串化方法toString()public func toString(): String返回 profile 连接状态的字符串表示常用于日志输出例如回调中打印profile connection state has change to ${connectionState}。返回值Stringprofile 连接状态的字符串表示。在 BaseProfile 中的实际应用ProfileConnectionState是 BaseProfile 接口体系中的核心返回类型public interface BaseProfile { func getConnectedDevices(): ArrayString func getConnectionState(deviceId: String): ProfileConnectionState func on(eventType: ProfileCallbackType, callback: Callback1ArgumentStateChangeParam): Unit func off(eventType: ProfileCallbackType, callback: CallbackObject): Unit func off(eventType: ProfileCallbackType): Unit }其中getConnectionState(deviceId)返回指定设备的ProfileConnectionState调用方据此判断设备当前所处的连接阶段// index.cj import ohos.business_exception.* import kit.ConnectivityKit.* import kit.PerformanceAnalysisKit.Hilog try { let a2dpSrc createA2dpSrcProfile() let retArray a2dpSrc.getConnectionState(XX:XX:XX:XX:XX:XX) } catch (e: BusinessException) { Hilog.info(0, Bluetooth, errCode: ${e.code}, errMessage: ${e.message}) }同时连接状态变化通过on(ProfileCallbackType.ConnectionStateChange, callback)以异步回调方式通知回调入参StateChangeParam中即包含state: ProfileConnectionState字段该类的完整定义见 cj-apis-bluetooth-base_profile.md。完整订阅与取消订阅示例// index.cj import ohos.callback_invoke.* import ohos.business_exception.* import kit.ConnectivityKit.* import kit.PerformanceAnalysisKit.Hilog class StateChangeCallback : Callback1ArgumentStateChangeParam { public func invoke(err: ?BusinessException, arg: StateChangeParam): Unit { let connectionState arg.state.toString() Hilog.info(0, Bluetooth, profile connection state has change to ${connectionState}) } } let changeCallBack StateChangeCallback() let a2dp createA2dpSrcProfile() try { a2dp.on(ProfileCallbackType.ConnectionStateChange, changeCallBack) a2dp.off(ProfileCallbackType.ConnectionStateChange) } catch (e: BusinessException) { Hilog.info(0, Bluetooth, errCode: ${e.code}, errMessage: ${e.message}) }A2DP、HFP 等具体 profile 类均继承自BaseProfile因此这些订阅、查询连接状态的模式在 cj-apis-bluetooth-a2dp.md 与 cj-apis-bluetooth-hfp.md 中保持一致。用状态枚举构建 GATT 连接状态机在 cj-gatt-development-guide.md 的完整示例中客户端管理器用ProfileConnectionState作为内部状态字段初始化为StateDisconnectedclass GattClientManager { var device: ?String NoneString var gattClient: ?GattClientDevice NoneGattClientDevice var connectState: ProfileConnectionState ProfileConnectionState.StateDisconnected ... }其核心逻辑体现了状态枚举的两大典型用法1. 订阅回调中更新状态连接状态变化回调将stateInfo.state写入connectState字段保持本地状态与真实连接一致let onGattClientStateChange BLEConnectionStateChangeCallback(){ err, stateInfo Hilog.info(0, TAG, onGattServerStateChange: device stateInfo.deviceId , state stateInfo.state.toString()) if (stateInfo.deviceId this.device.getOrThrow()) { this.connectState stateInfo.state } }2. 通过!/校验前置条件发起连接前仅当当前状态为StateDisconnected才允许执行避免重复发起连接if (this.connectState ! ProfileConnectionState.StateDisconnected) { Hilog.error(1, TAG, startConnect failed) return }而所有需要已连接前提的操作如读写特征值、收发数据均以StateConnected为门槛进行守卫例如if (this.gattClient.isNone() || this.connectState ! ProfileConnectionState.StateConnected) { Hilog.error(1, TAG, gattClient does not exist or state not connected) }类似的初始化与守卫写法也出现在 cj-apis-bluetooth-ble.md 的客户端示例中var connectState ProfileConnectionState.StateDisconnected。可见将ProfileConnectionState与回调事件结合是构建可靠蓝牙连接状态机、避免在未连接状态下误操作的标准做法。异常处理与错误码对照涉及连接状态查询与订阅的 API 均可能抛出BusinessException需结合通用错误码与蓝牙服务子系统错误码定位问题错误码 ID错误信息说明与处理201Permission denied.权限校验失败需在工程中声明ohos.permission.ACCESS_BLUETOOTH801Capability not supported.设备不支持此 API需确认系统能力2900001Service stopped.蓝牙服务已停止重新执行打开或关闭蓝牙2900003Bluetooth disabled.蓝牙开关已关闭重新打开蓝牙开关2900004Profile not supported.当前设备环境不支持该配置文件检查设备能力后停止调用2900099Operation failed.操作失败请重试该操作标准捕获写法try { // 查询或订阅连接状态 } catch (e: BusinessException) { Hilog.info(0, Bluetooth, errCode: ${e.code}, errMessage: ${e.message}) }权限与系统能力约束权限ohos.permission.ACCESS_BLUETOOTH。凡涉及查询已连接设备、读取连接状态、订阅/取消订阅状态变化事件的 API 均要求此权限未授权时抛出 201 错误。系统能力SystemCapability.Communication.Bluetooth.Core缺失时抛出 801 错误。版本ProfileConnectionState及其全部成员、运算符方法起始版本均为22开发前需确认目标设备系统版本与系统能力声明。小结ohos.bluetooth.constant模块的ProfileConnectionState通过StateDisconnected、StateConnecting、StateConnected、StateDisconnecting四个成员完整刻画了蓝牙 profile 的连接生命周期并依托Equatable与ToString父类型提供、!、toString()三个实用方法。在实战中它与BaseProfile.getConnectionState()配合可主动查询连接状态与on/off订阅机制结合可被动感知状态跃迁配合 GATT 客户端/服务端的连接状态机模式是仓颉蓝牙应用中不可绕过的核心类型。相关 API 详情可继续查阅 cj-apis-bluetooth-base_profile.md、cj-apis-bluetooth-a2dp.md、cj-apis-bluetooth-hfp.md 与 cj-gatt-development-guide.md。赞分享文档知识库教程OpenHarmony【免费下载链接】CangjieCorpus本仓库为仓颉编程语言语料库聚焦 仓颉编程语言 核心知识体系整合官方开发指南、API 文档、典型代码示例及语法规范等多维度资源经结构化处理与专业标注构建为支持 RAG检索增强生成技术 的高质量知识基座适配智能编码助手、学习辅助工具等应用开发需求。 欢迎开发者基于本语料库构建仓颉语言智能应用推动鸿蒙开发生态智能化升级项目地址https://gitcode.com/Cangjie/CangjieCorpus点击查看免费下载相关推荐仓颉 database_sql 包枚举详解ConnectionState 连接状态与事务模式配置实战仓颉 database_sql 包枚举详解ConnectionState 连接状态与事务模式配置实战 本篇技术指南以 std.database.sql 包中的人工智能AI 技能文档开发工具仓颉 OpenHarmony 蓝牙 A2DP 开发指南ohos.bluetooth.a2dp 模块 API 全解析仓颉 OpenHarmony 蓝牙 A2DP 开发指南ohos.bluetooth.a2dp 模块 API 全解析 本篇技术指南围绕 OpenHarmony文档知识库教程OpenHarmony仓颉 std.database.sql 连接状态枚举 ConnectionState 全解析连接生命周期与状态机实践仓颉 std.database.sql 连接状态枚举 ConnectionState 全解析连接生命周期与状态机实践 ConnectionState 是仓颉标人工智能AI 技能文档开发工具上一篇RSpec与Ruby 1.9兼容性解决方案避免踩坑的完整教程下一篇阿里Wan2.2-Animate开源数字人视频创作的革命性突破创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考