当前位置: 首页 > news >正文

公司企业网站程序湛江建站价格

公司企业网站程序,湛江建站价格,学校网站搭建,免费素材库app图片1. AbstractionLayer 介绍 我们在阅读 native 和 java 层 蓝牙服务代码时#xff0c;会发现很多 AbstractionLayer.xxxxx 的字段。 这些字段 虽然很容易理解是干什么的。 但是 大家有没有考虑过#xff0c; 为啥要专门定义一个类来存放他们。 这样设计的意义是什么#xff…1. AbstractionLayer 介绍 我们在阅读 native 和 java 层 蓝牙服务代码时会发现很多 AbstractionLayer.xxxxx 的字段。 这些字段 虽然很容易理解是干什么的。 但是 大家有没有考虑过 为啥要专门定义一个类来存放他们。 这样设计的意义是什么 1.字段解释 packages/modules/Bluetooth/android/app/src/com/android/bluetooth/btservice/AbstractionLayer.java package com.android.bluetooth.btservice;/** hide*/public final class AbstractionLayer {// Do not modify without upating the HAL files.// TODO: Some of the constants are repeated from BluetoothAdapter.java.// Get rid of them and maintain just one.static final int BT_STATE_OFF 0x00;static final int BT_STATE_ON 0x01;static final int BT_SCAN_MODE_NONE 0x00;static final int BT_SCAN_MODE_CONNECTABLE 0x01;static final int BT_SCAN_MODE_CONNECTABLE_DISCOVERABLE 0x02;static final int BT_PROPERTY_BDNAME 0x01;static final int BT_PROPERTY_BDADDR 0x02;static final int BT_PROPERTY_UUIDS 0x03;static final int BT_PROPERTY_CLASS_OF_DEVICE 0x04;static final int BT_PROPERTY_TYPE_OF_DEVICE 0x05;static final int BT_PROPERTY_SERVICE_RECORD 0x06;static final int BT_PROPERTY_ADAPTER_SCAN_MODE 0x07;static final int BT_PROPERTY_ADAPTER_BONDED_DEVICES 0x08;static final int BT_PROPERTY_ADAPTER_DISCOVERABLE_TIMEOUT 0x09;static final int BT_PROPERTY_REMOTE_FRIENDLY_NAME 0x0A;static final int BT_PROPERTY_REMOTE_RSSI 0x0B;static final int BT_PROPERTY_REMOTE_VERSION_INFO 0x0C;static final int BT_PROPERTY_LOCAL_LE_FEATURES 0x0D;static final int BT_PROPERTY_DYNAMIC_AUDIO_BUFFER 0x10;static final int BT_PROPERTY_REMOTE_IS_COORDINATED_SET_MEMBER 0x11;public static final int BT_DEVICE_TYPE_BREDR 0x01;public static final int BT_DEVICE_TYPE_BLE 0x02;public static final int BT_DEVICE_TYPE_DUAL 0x03;static final int BT_PROPERTY_LOCAL_IO_CAPS 0x0e;static final int BT_PROPERTY_LOCAL_IO_CAPS_BLE 0x0f;static final int BT_BOND_STATE_NONE 0x00;static final int BT_BOND_STATE_BONDING 0x01;static final int BT_BOND_STATE_BONDED 0x02;static final int BT_SSP_VARIANT_PASSKEY_CONFIRMATION 0x00;static final int BT_SSP_VARIANT_PASSKEY_ENTRY 0x01;static final int BT_SSP_VARIANT_CONSENT 0x02;static final int BT_SSP_VARIANT_PASSKEY_NOTIFICATION 0x03;static final int BT_DISCOVERY_STOPPED 0x00;static final int BT_DISCOVERY_STARTED 0x01;static final int BT_ACL_STATE_CONNECTED 0x00;static final int BT_ACL_STATE_DISCONNECTED 0x01;static final int BT_UUID_SIZE 16; // bytespublic static final int BT_STATUS_SUCCESS 0;public static final int BT_STATUS_FAIL 1;public static final int BT_STATUS_NOT_READY 2;public static final int BT_STATUS_NOMEM 3;public static final int BT_STATUS_BUSY 4;public static final int BT_STATUS_DONE 5;public static final int BT_STATUS_UNSUPPORTED 6;public static final int BT_STATUS_PARM_INVALID 7;public static final int BT_STATUS_UNHANDLED 8;public static final int BT_STATUS_AUTH_FAILURE 9;public static final int BT_STATUS_RMT_DEV_DOWN 10;public static final int BT_STATUS_AUTH_REJECTED 11;public static final int BT_STATUS_AUTH_TIMEOUT 12; } 这段代码 用于定义蓝牙 HAL 与上层服务之间的通用常量状态、属性、错误码等。这些常量的设计目的是提供一个统一的“抽象层接口”便于 Bluetooth HALC/C 层与 Java 层进行交互时传递标准化信息。 下面用表格的方式对这些常量的用途和适用场景进行整理说明 类别常量名数值含义/用途说明使用场景示例蓝牙状态BT_STATE_OFF0x00蓝牙关闭状态通知 Java 层当前蓝牙关闭BT_STATE_ON0x01蓝牙开启状态通知 Java 层当前蓝牙开启扫描模式BT_SCAN_MODE_NONE0x00不可连接也不可被发现设置蓝牙扫描策略时BT_SCAN_MODE_CONNECTABLE0x01可被连接但不可被发现广播连接状态变化BT_SCAN_MODE_CONNECTABLE_DISCOVERABLE0x02可被连接也可被发现配对时开启可发现属性类型BT_PROPERTY_BDNAME0x01本地设备名称设置/获取本地蓝牙名称BT_PROPERTY_BDADDR0x02本地设备地址获取本地地址BT_PROPERTY_UUIDS0x03支持的服务 UUID 列表SDP 结果上报BT_PROPERTY_CLASS_OF_DEVICE0x04设备类型编码配对时判断设备类别BT_PROPERTY_TYPE_OF_DEVICE0x05蓝牙设备类型BR/EDR、BLE、Dual设置设备属性时BT_PROPERTY_SERVICE_RECORD0x06远端设备服务记录SDP服务搜索时返回BT_PROPERTY_ADAPTER_SCAN_MODE0x07当前扫描模式获取当前适配器属性BT_PROPERTY_ADAPTER_BONDED_DEVICES0x08获取已配对设备列表启动时获取已配对设备BT_PROPERTY_ADAPTER_DISCOVERABLE_TIMEOUT0x09可被发现模式的超时时长设置发现超时BT_PROPERTY_REMOTE_FRIENDLY_NAME0x0A远程设备名称获取远端名称BT_PROPERTY_REMOTE_RSSI0x0B远程设备信号强度BLE 扫描中上报BT_PROPERTY_REMOTE_VERSION_INFO0x0C协议版本号HCI/LMP配对成功后回调BT_PROPERTY_LOCAL_LE_FEATURES0x0D本地 LE 特性初始化时上报BT_PROPERTY_DYNAMIC_AUDIO_BUFFER0x10音频缓冲设置Audio streaming 配置BT_PROPERTY_REMOTE_IS_COORDINATED_SET_MEMBER0x11是否为协调播放组成员如多设备音频LE Audio 使用设备类型BT_DEVICE_TYPE_BREDR0x01传统蓝牙设备设置设备属性BT_DEVICE_TYPE_BLE0x02低功耗蓝牙设备BLE 配对等场景BT_DEVICE_TYPE_DUAL0x03同时支持 BR/EDR 与 BLE 的双模设备常见手机本地 I/O 能力BT_PROPERTY_LOCAL_IO_CAPS0x0e本地 IO 能力配对时使用SSP 配对时BT_PROPERTY_LOCAL_IO_CAPS_BLE0x0f本地 BLE IO 能力BLE 设备配对时配对状态BT_BOND_STATE_NONE0x00未配对配对流程中状态变化BT_BOND_STATE_BONDING0x01正在配对显示进度BT_BOND_STATE_BONDED0x02配对完成保存设备记录SSP 配对类型BT_SSP_VARIANT_PASSKEY_CONFIRMATION0x00确认配对码人机交互确认界面BT_SSP_VARIANT_PASSKEY_ENTRY0x01输入配对码输入框场景BT_SSP_VARIANT_CONSENT0x02用户授权同意弹窗授权BT_SSP_VARIANT_PASSKEY_NOTIFICATION0x03显示配对码显示数字码发现流程状态BT_DISCOVERY_STOPPED0x00发现已停止搜索过程BT_DISCOVERY_STARTED0x01发现已开始搜索开始时广播ACL 链接状态BT_ACL_STATE_CONNECTED0x00ACL 已连接ACL 连接建立后通知BT_ACL_STATE_DISCONNECTED0x01ACL 已断开ACL 断开后通知UUID 尺寸BT_UUID_SIZE16UUID 长度为 16 字节128 bitUUID 检查或转换时使用状态码返回值BT_STATUS_SUCCESS0操作成功HAL 接口返回BT_STATUS_FAIL1操作失败错误处理BT_STATUS_NOT_READY2适配器未准备好蓝牙未初始化时返回BT_STATUS_NOMEM3内存不足动态分配失败BT_STATUS_BUSY4当前操作繁忙多任务冲突时BT_STATUS_DONE5操作已完成异步操作结束BT_STATUS_UNSUPPORTED6不支持的功能某些设备不支持特性BT_STATUS_PARM_INVALID7参数无效参数检查失败BT_STATUS_UNHANDLED8没有处理该情况框架遗漏处理逻辑BT_STATUS_AUTH_FAILURE9认证失败配对失败BT_STATUS_RMT_DEV_DOWN10远程设备断开状态同步失败BT_STATUS_AUTH_REJECTED11认证被拒绝用户取消BT_STATUS_AUTH_TIMEOUT12认证超时蓝牙连接不响应 当 HAL 层通过 JNI 通知 Java 蓝牙服务状态时会使用这些常量进行信息编码。 例如 bt_property_type 用于表示 Bluetooth HAL 上报的属性类型 BT_DISCOVERY_STARTED 会在 onDiscoveryStateChanged() 中通过广播发送 BT_STATUS_SUCCESS 是很多 native 回调函数中的返回码表示调用成功。 2. 设计的意义 这个 AbstractionLayer 类的设计在 AOSP 蓝牙服务中提供了一个“抽象层常量集中地”它本身不包含行为逻辑而是定义了一批与蓝牙 HALHardware Abstraction Layer通信的核心常量。这样的设计有以下几个 重要好处 1. 设计好处汇总表 设计目的/优势说明统一管理常量避免魔法数字所有关键状态、属性、错误码、设备类型等都使用命名常量避免代码中出现“0x03”、“0x0C”这类不可读的“魔法数字”。代码可读性提升例如 BT_STATUS_AUTH_TIMEOUT 比 12 更清晰表达“认证超时”的语义使维护者无需查表也能读懂逻辑。易于维护和扩展如果底层 HAL 接口更新例如新增属性只需在这里添加新常量其他代码不需修改多处。确保与 HAL 保持同步HAL 和 Java 层可能用 AIDL 或 JNI 通信必须确保状态码一致集中定义可减少错漏风险。注释中也明确写道“Do not modify without updating the HAL files”。方便封装抽象该类名为 AbstractionLayer意图明确它作为 Bluetooth native 层与 framework 层的桥梁封装底层值定义避免上层代码直接接触 native 细节。跨模块复用性强同一套常量可以在多个模块中共享比如 BluetoothAdapter、BluetoothService、JNI 等模块都能引用这组常量避免重复定义。支持双向通信常量可用于 Java → native 下发请求如 scan mode 设置也可用于 native → Java 回调如 discovery started 通知有助于状态映射和协议一致性。 3. 典型使用场景 这些常量通常用于以下几个场景 场景举例涉及常量设备属性设置与读取读取本地设备名、地址等BT_PROPERTY_BDNAME, BT_PROPERTY_BDADDR状态通知与回调蓝牙开关、扫描模式变化通知BT_STATE_ON, BT_SCAN_MODE_CONNECTABLE配对与绑定流程显示绑定状态或配对方式提示BT_BOND_STATE_BONDING, BT_SSP_VARIANT_PASSKEY_ENTRY错误处理与状态返回蓝牙操作失败时给上层状态反馈BT_STATUS_FAIL, BT_STATUS_AUTH_TIMEOUT连接状态监控连接建立或断开通知BT_ACL_STATE_CONNECTED, BT_ACL_STATE_DISCONNECTED设备类型识别判断是 BLE 还是 BR/EDR 设备BT_DEVICE_TYPE_BLE, BT_DEVICE_TYPE_DUAL 4. 总结 AbstractionLayer 的设计是面向 HAL 与 Framework 解耦的一种“常量协议集中定义”模式既提升了可读性和维护性也为不同层间通信提供了统一语言符合 AOSP 架构的一贯风格尤其在 HAL / JNI 层交互中非常常见。
http://www.zqtcl.cn/news/408181/

相关文章:

  • 唐山地区网站开发公司郑州市哪里有网站建设
  • ps做汽车网站下载网络推广专员招聘
  • 荥阳网站开发WordPress 采集文章 图片
  • 网站域名登记证明文件音乐网站开发需要什么语言工具
  • 贵州域网网站建设东莞做外贸网站的公司
  • ps怎么做华为网站界面怎样做网站步骤
  • 免费做试卷的网站或试卷seo 培训教程
  • 创意网站建设价格多少最新新闻热点事件2022年8月
  • wordpress用户登录界面插件重庆网站排名优化公司
  • 网站整体建设方案设计wordpress 插件升级慢
  • 淄博网站制作升级优化青岛品牌网站建设价格
  • 网站后台管理系统模块星星wordpress模板
  • 网站统计 中文域名优化英语
  • 自己做视频的网站吗怎么建设维护学校的网站
  • 广州网站建设好公司鲁权屯网站建设
  • 网站多数关键词网站使用mip后效果怎么样
  • 如何介绍自己做的网站建设三库一平台
  • 郑州网站商城建设iframe 一直网站底部
  • 1688网站怎么样百度一下你知道
  • 做电商图的设计网站蚌埠网页设计培训
  • 江苏省建设工程质量监督站网站手机网站 案例
  • 优而思 网站科技自立自强是国家强盛之基
  • 去哪里购买网站空间专门做家居的网站
  • 网站信息安全建设方案公众号网站建设
  • 网站的设计方案淘宝大数据查询平台
  • 深圳营销型网站建设 龙华信科网站项目有需要什么技术支持
  • 开源网站模板cms网店推广实训总结
  • 常见的电子商务网站有哪些建设校园门户网站信息意义
  • 象山经济开发区建设有限公司网站足球比赛直播app
  • 国外做mg动画的网站大全网站打不开 别的电脑能打开