Skip to content

Releases: silverpoetry/HyperEars

HyperEars v2.5.0

Choose a tag to compare

@github-actions github-actions released this 25 Aug 18:39
896cf85

本版新增可切换的 Miuix 与 Material 3 应用界面、独立可搜索的兼容性页面,并加入
MOONDROP Pudding 实机适配;同时更新 Android、Kotlin 与 Gradle 构建工具链。

应用界面

  • 新增 Miuix 与 Material 3 两套渲染风格,可在设置页即时切换;没有已保存界面偏好的
    新安装或升级用户默认使用 Miuix,已经明确选择的风格继续保留。
  • 两套界面共用页面导航、设置状态、设备会话模型和控制请求。切换风格不会重建蓝牙或
    MiLink 会话,也不会把界面偏好写入注入进程配置。
  • 按 HyperOS 页面层级重新组织 Miuix 主页、设置和关于页;设置开关、二级页面、快捷控制、
    证据标签和设备会话卡片使用统一的信息层级。Material 3 同步相同的分组、操作和状态语义。
  • Root 快捷控制与日志导出改为整行点击,执行时不再重复弹出操作说明;主页模式值保留明确的
    下拉入口,并继续通过当前会话的标准控制请求切换。

兼容性页面

  • 将品牌与型号矩阵从关于页拆为独立二级页面,关于页只保留“兼容性”入口。
  • 支持按品牌、型号、验证级别、电量类型和噪声能力搜索;多个关键词组合筛选同一条适配记录。
  • Miuix 与 Material 3 使用同一份兼容性数据和筛选逻辑,只分别渲染对应主题组件。

MOONDROP Pudding

  • 新增 MOONDROP Pudding 实机适配。精确名称只用于选择候选,收到完整合法握手响应后才进入
    私有协议会话并分别开放组件电量与降噪、关闭、通透三态控制。
  • 解析左右耳与充电盒电量,合并连接初期的分侧回报,并使用有界单次查询补齐缺失组件;协议
    未确认或三个组件均不可读时继续保留 Android 系统整机电量回退。
  • 模式写入成功后先发布目标状态,再按设备实测时序执行有界只读回查;回包达到目标后立即停止,
    超过边界则接受最后真实状态,不重复发送设置命令,也不创建常驻轮询。
  • 水月雨控制 App 已接入“更多设置”和运行时退避;厂商 App 不可用或未进入作用域时不增加
    后台进程监控或控制通道开销。

构建与验证

  • 更新至 Gradle 9.5.0、Android Gradle Plugin 9.3.1、Kotlin 2.4.10、AndroidX Core 1.19.0
    与 Lifecycle 2.11.0,并保持 Android 15 最低版本和现有模块作用域不变。
  • 增加 Pudding 名称边界、流式解帧、握手、电量、三态控制、写后回查,以及界面风格恢复和
    兼容性多关键词搜索测试;Release 流程继续执行完整单元测试、Android Lint、R8、APK
    签名验证和 SHA-256 生成。

HyperEars v2.4.1

Choose a tag to compare

@github-actions github-actions released this 22 Aug 18:10
32317a0

本版新增 Edifier FitClip Ultra 与华为 FreeBuds 系列适配,并修复部分旧版 MiLink 耳机
卡片缺少标题区域时抗风噪开关无法正确集成的问题。

设备支持

  • 新增 Edifier FitClip Ultra 实机适配。精确识别该型号,并在收到合法 0xF2 响应后
    提供左右耳私有电量;该型号未验证降噪协议,因此不展示或发送私有模式控制,协议不可用时
    保留系统整机电量、音量与设备流转。
  • 新增 HUAWEI FreeBuds Pro 3 实机适配:支持组件电量、降噪、关闭、通透,以及已验证的
    降噪四档和透传两档;耳机侧状态变化能够通过协议通知同步至模块。
  • 新增 HUAWEI FreeBuds 4 公开协议适配,并为 FreeBuds、FreeClip、FreeLace 产品线提供
    家族协议探测。只有合法协议响应确认后才开放对应的私有电量与模式能力,其他华为音频设备
    不会被家族规则接管。
  • 华为家族候选在同一个会话中依次尝试已知 RFCOMM 端点;端点失败、协议未确认或厂商 App
    接管时均回退到标准耳机能力。华为智慧音频已接入现有“更多设置”与运行时退避机制。

MiLink 卡片兼容

  • 兼容没有独立标题区域的旧版 MiLink ANC 卡片:在原生三态控件内部增加紧凑的“抗风噪”
    开关行,保留系统原有降噪、关闭、通透按钮的完整宽度、层级与点击处理。
  • 有标题区域的旧版卡片与 HyperOS 4 新版卡片继续使用原来的稳定集成路径;布局选择只依据
    已确认的资源标识和原生 View 类型,不依赖系统版本号、混淆方法、布局扫描或延时重试。
  • 修正同时存在多个候选 ANC 容器时的宿主选择,仅绑定当前可见且属于目标卡片的原生控件,
    避免开关缺失或插入错误布局。

架构与验证

  • FitClip Ultra 与华为适配均遵循“身份选择候选、合法协议响应解锁能力”的统一门禁;私有
    电量与模式分别确认,不会因型号名称或端点可连接而提前开放未验证功能。
  • 华为 FreeBuds 使用配置化 ProtocolSession 复用协议对话,CRC16/XMODEM 校验通过后才
    接受握手、电量和模式状态;Pro 3 的型号专属档位通过类型化状态与控制扩展接入。
  • 增加型号边界、协议确认、组件电量、噪声状态、档位控制、端点回退和卡片布局测试;Release
    流程继续执行完整单元测试、Android Lint、R8、APK 签名验证和 SHA-256 生成。

HyperEars v2.4.0

Choose a tag to compare

@github-actions github-actions released this 21 Aug 02:19
c676921

本版适配 HyperOS 4 的新版耳机详情卡片,并统一带抗风噪能力设备的系统卡片呈现;同时
收紧厂商控制 App 退避与私有协议重连期间的能力生命周期。

HyperOS 4 卡片兼容

  • 适配 HyperOS 4 新增的原生三态选择卡片,同时保留旧版 HyperOS 的原生 ANC 卡片路径。
    两种布局按稳定资源标识和原生 View 类型识别,不依赖系统版本号、混淆方法、布局遍历、
    轮询或延时重试。
  • Edifier、StarRing、ROSESELSA 和 NiceHCK 的已确认抗风噪能力统一使用“系统原生三态 +
    抗风噪开关”。降噪、关闭和通透继续由 MiLink 原生控件处理,抗风噪仅作为降噪分支的型号
    扩展,不再替换或复制原生模式按钮。
  • 卡片扩展仍只在卡片绑定时创建一次,只消费统一设备状态并发送标准模式请求,不参与蓝牙
    通信、状态轮询或协议解码。

会话与诊断

  • 私有通道断开、厂商控制 App 接管或连接重试时,撤销上一轮协议会话确认的私有电量、模式
    和专属卡片能力;Android 系统电量立即恢复为保守回退,重新握手成功后再开放真实能力,避免
    恢复窗口出现可见但不可操作的旧模式。
  • 详细日志开启时记录私有通道收到的原始字节,便于分析尚未映射的状态字段;关闭详细日志时
    不构造或输出这些记录。

文档与验证

  • 更新 Edifier BES 协议说明、HyperOS 平台范围和卡片扩展边界,明确花再 Evo Pro 当前仅确认
    左右耳电量,充电盒字段仍保持未知。
  • 增加协议会话重置、系统电量回退、原生三态与抗风噪开关控制策略测试;Release 流程继续执行
    完整单元测试、Android Lint、R8、APK 签名验证和 SHA-256 生成。

HyperEars v2.3.2

Choose a tag to compare

@github-actions github-actions released this 13 Aug 16:48

本版修复 ROSE Ceramics Ultra(琉璃 Ultra)的模式识别与组件电量,并为未知 MiLink
版本补充严格、低开销的“更多设置”入口兼容。

ROSE Ceramics Ultra

  • 根据实机完整状态帧补齐 BudsFeel 的自适应降噪 0x05 与极致降噪 0x06 状态解码;
    两者作为已确认的降噪状态接入现有标准四态卡片,不新增私有控件,卡片重新选择降噪时仍发送
    标准 0x01 命令。
  • 按 BudsFeel 组件电量格式从每个字节的低七位读取百分比。实测 E4 E4 5E 现在显示为
    左右耳 100%、充电盒 94%;尚未确认语义的高位不会被推测为充电状态。
  • 合法模式回报现在能够完成协议确认并开放降噪、关闭、通透和抗风噪;未知模式或无效电量仍不
    会提前开放私有能力。

MiLink 兼容

  • “更多设置”入口继续优先使用稳定公开类和已验证的 17.2.017.2.2 精确版本表;常规入口
    均不可用时,增加一次性的 DEX 语义指纹兜底。
  • 兜底同时校验 headset 包范围、单个 CirculateServiceInfo 参数、CompletableFuture 返回值、
    两个精确语义常量和 CompletableFuture.supplyAsync 调用。只有唯一结果才安装 Hook,零结果或
    多结果均保持系统原行为。
  • DEX 查询结果按当前 APK 路径缓存,每个 MiLink 进程最多解析一次;已支持版本不会加载解析器,
    卡片创建、点击和蓝牙协议会话均不参与扫描。

文档与验证

  • 补充 ROSE Ceramics Ultra 扩展模式、电量高位和 MiLink 语义入口的实现边界,并登记 DexKit
    许可证与实际使用范围。
  • 增加实机完整帧、扩展降噪值、组件电量和 Adapter 标准状态投影测试;Release 流程继续
    执行完整单元测试、Android Lint、R8、APK 签名验证和 SHA-256 生成。

HyperEars v2.3.1

Choose a tag to compare

@github-actions github-actions released this 12 Aug 18:48

本版修正漫步者四态控制与花再 Evo Pro 电量解析,并整理主页模式切换和卡片“更多设置”
选择方式。

漫步者兼容

  • 漫步者协议确认后的四态卡片统一使用 MiLink 原生控件展示降噪、通透、关闭和抗风噪,
    四项保持互斥;选择抗风噪时不再同时点亮降噪。
  • 修正花再 Evo Pro 0xF2 复合状态帧解析:首字节是元数据,不再误报为 3%;按照实机回包
    分别显示左右耳电量,不再把未确认字段当作充电盒电量或充电状态。
  • 四态卡片只在漫步者协议确认并开放对应模式后启用;未确认私有协议时仍保留标准流转、
    音量和 Android 整机电量回退。

应用交互

  • 主页不再额外增加一组模式按钮;原有“模式”指标在设备开放多个模式后可以直接点击,
    通过下拉列表切换,当前模式由统一会话状态更新。
  • 设置页将卡片入口标为“点击卡片‘更多设置’”,当前动作显示在设置项右侧;点击后可直接
    选择“打开系统设置”“打开厂商 App”或“打开 HyperEars”。

构建、文档与验证

  • 新增维护者手动签名构建流程:使用正式发布证书完成测试、Lint、Release 构建、签名验证和
    SHA-256 生成,只上传短期 Actions Artifact,不创建版本标签或 GitHub Release。
  • 同步中英文 README、兼容性矩阵、漫步者协议说明和应用内兼容性信息;增加花再 Evo Pro
    复合电量帧、漫步者能力映射及四态卡片策略测试。

HyperEars v2.3.0

Choose a tag to compare

@github-actions github-actions released this 12 Aug 09:37

本版统一所有私有协议适配器的能力确认规则,并补充 ROSE Ceramics Ultra 与荣耀 X5s Pro
连接兼容;应用新增主页模式控制、可选择的“更多设置”目标和 GitHub Release 更新检查。

能力确认与回退

  • 具体型号和家族 Adapter 现在遵循同一初始门禁:名称、服务 UUID、设备形态和型号配置只用于
    选择候选协议,初始状态仅发布 MiLink 流转、系统音量和 Android 整机电量,不再提前发布
    私有电量、噪声模式或型号专属卡片。
  • 合法电量与模式响应分别开放对应能力;仅收到电量时保留系统卡片且不出现无效模式按钮,收到
    合法模式状态后才开放该协议确认的模式集合和专属呈现。协议失败时继续保留标准耳机能力。
  • 所有直接注册且需要私有协议的 Adapter 统一要求协议确认。Registry 在进程初始化时验证初始
    能力门禁,防止新增型号把身份匹配误当成能力证明;Bose 等通过线端产品 ID 确认后创建的
    替换 Adapter 仍可原子发布已确认配置。

设备与系统兼容

  • 新增 ROSE Ceramics Ultra(琉璃 Ultra)实机适配。该型号复用 BudsFeel RFCOMM 通道,状态
    响应在首个数据块后追加无长度头的扩展 TLV;解码器支持扩展流、分片、连续多帧、坏帧重同步
    和紧凑帧兼容,并开放组件电量及降噪、关闭、通透、抗风噪。
  • protocol-test 新增 ROSE BudsFeel 探测目标,可尝试 0cf12d31、标准 SPP 及通道 1/5,
    自动查询并解析电量与噪声模式。
  • 荣耀亲选耳机 X5s Pro 在 SPP 建立后执行经实机抓取的初始化与状态查询序列,单耳独立连接时
    无需等待后续主动上报即可确认模式能力;电量查询和原有类型化降噪深度控制保持不变。
  • 增加 MiLink 17.2.2 (170020200) 严格版本限定的“更多设置”语义入口兼容,保持未知版本
    不 Hook;补齐 QCYpods 公开协议来源、QYCC50S 标识和资料贡献记录。

应用与系统集成

  • 已确认并开放噪声控制的设备,可在 HyperEars 主页会话卡片中直接切换 Adapter 声明的模式;
    控件只消费通用状态快照,点击当前模式不会重复发送,控制请求仍由当前设备会话和 Adapter
    完成会话令牌、控制权、能力与目标模式校验。
  • 原“打开厂商设置”布尔开关升级为“更多设置”目标,可选择系统设置、厂商 App 或 HyperEars;
    厂商 App 与 HyperEars 无法启动时均回退到真实蓝牙设备详情。旧配置会自动迁移,并保留降级
    兼容写入。
  • “关于”页新增 GitHub Release 手动检查;“自动检查更新”默认开启,只在应用打开时运行且每天
    最多一次,也可关闭。更新检查仅解析受信任仓库的 HTTPS Release 跳转,网络访问与 Bluetooth、
    MiLink 及厂商控制 App 注入进程完全隔离。

构建、文档与验证

  • kotlinx-coroutines-android 更新至 1.11.0;GitHub Actions 的 checkout、Node、Java、
    Gradle 和 artifact 运行时更新至当前主版本,保留标签版本校验、Release 签名验证和 SHA-256
    产物流程。
  • 兼容性矩阵、系统架构、主页投影、控制 App、安装、排障、隐私和中英文 README 已同步新的
    能力确认、页面跳转与联网边界;新增主页控制、配置迁移、版本比较、受信任 Release 地址、
    私有能力门禁、ROSE 流式解码和荣耀初始化序列测试。
  • 发布前验证覆盖全部 Debug 单元测试、协议测试工具编译、Android Release Lint、R8 Release
    构建、MarkdownLint、文档结构与站内链接检查。

HyperEars v2.2.1

Choose a tag to compare

@github-actions github-actions released this 09 Aug 16:51

本版完善状态刷新时机,并修复详细日志和适配器开关在应用重启后可能恢复默认值的问题。

状态刷新

  • 打开 MiLink 耳机详情卡片或进入 HyperEars 主页时,现在会为每个活动设备执行一次完整状态
    刷新。卡片仍先使用现有快照完成首帧,模式和电量等真实协议回报随后通过统一状态链更新。
  • 同一设备会话在 1.5 秒内收到的重复刷新会合并为一次协议事务;关闭卡片不会触发查询,也不
    增加常驻轮询。刷新门禁与用户控制节流相互独立,不会阻止紧随其后的模式切换。

设置可靠性

  • 修复没有禁用任何适配器时,空的适配器集合无法由 LSPosed 守护进程反序列化,进而导致整次
    设置写入失败的问题。详细日志、模块暂停、厂商设置和运行时退避等设置现在能够在应用或作用域
    进程重启后保持。
  • 跨进程集合统一转换为 Java 平台集合,避免 LSPosed 守护进程依赖模块内的 Kotlin 集合实现。

验证

  • 增加刷新合并、系统时钟重置和 RemotePreferences 集合类型测试。
  • 已在 vivo TWS Air3 Pro 上验证主页打开、卡片打开、卡片关闭与重新打开的刷新时序;每次可见
    事件只建立一次刷新事务,模式控制仍只发送一次设置帧,并在耳机真实回报后更新卡片。

HyperEars v2.2.0

Choose a tag to compare

@github-actions github-actions released this 09 Aug 14:25

本版在 2.0.0 确立的 Adapter、ProtocolSession 与 Android 会话边界上,重构设备状态确认与
延迟查询机制。水月雨知更鸟的电量启动确认和模式写后确认保持原有用户行为,同时移除通用会话
对具体型号状态机的承担。

架构调整

  • 新增事件局部的 AdapterEventScope。Adapter 处理协议回报时只决定接受或暂缓状态,并按顺序
    声明一次性状态查询或取消请求;回调本身不启动协程、不访问 Socket,也不反向调用 Android
    运行时。
  • Android 会话改用通用 StateRequestDispatcher,仅按设备和 featureId 去重、延时并串行
    执行查询。目标值、接受条件、尝试次数和间隔全部由具体 Adapter 管理,运行时不包含水月雨或
    其他型号分支。
  • ProtocolSession 继续只把特性查询转换为当前协议字节;WireCodec 继续只处理流式帧边界与
    字节语义。新增型号不需要修改会话调度器或 MiLink Hook。
  • Adapter 产生的 Effect 保持事件内顺序。同一批数据先出现旧状态、后出现目标状态时,会先
    记录查询、再取消查询,最终不会遗留一次过期任务。

水月雨知更鸟

  • 模式设置继续在完整写帧成功后乐观更新卡片;第一次模式查询改由 onControlWritten() 声明,
    后续旧状态回报由 Robin Adapter 自行暂缓并安排下一次有界查询。
  • 双耳电量启动确认迁移到相同的事件机制。连接初期不完整值不会覆盖 Android 整机电量回退;
    获得完整双耳值或达到型号上限后,再由统一状态链接受真实结果。
  • 通道断开、Adapter 替换、厂商控制 App 接管或设备会话结束时,待执行查询由会话生命周期统一
    取消;协议重置同时清除 Robin 自己的临时目标和计数。

验证

  • 覆盖电量暂态确认、真实零电量、模式乐观发布、旧状态暂缓、目标到达、次数上限、新控制替换、
    同批多状态顺序和协议重置。
  • 完整单元测试、Android Lint、Markdown 与文档链接检查、R8 Release 构建及 GitHub 签名发布
    由 CI 执行。

HyperEars v2.1.2

Choose a tag to compare

@github-actions github-actions released this 09 Aug 11:56

本版修复 MOONDROP Robin 模式指令已经生效、但卡片可能被过早回读的旧状态覆盖的问题。

修复

  • Robin 模式设置成功后仍立即发布用户选择的目标状态;第一次回读尚未达到目标时,型号
    Adapter 现在保留该乐观状态,并按 500/700/900/1200 ms 的有界序列继续执行只读模式
    查询。耳机回报目标模式后立即结束确认;达到上限仍未切换时接受最后真实回报并自然矫正卡片。
  • 后续确认只发送模式查询,不重复发送模式设置帧,避免重复控制和连续模式提示音。新的模式
    请求会替换旧确认目标,私有通道重置时会清除尚未完成的型号临时状态。

架构与验证

  • 保留单一 executeControl()、现有 AdapterControlResult 和统一 FeatureStateChanged 状态
    链路;只增加默认空实现的控制接受与协议重置扩展点。其他 Adapter 继续直接接受合法观测,
    不需要修改适配代码,也不会产生延迟查询任务。
  • Robin 电量启动确认与模式写后确认共用按会话、稳定 key 去重的延迟遥测调度;接受条件、
    查询间隔和次数上限均由型号 Adapter 管理,ProtocolSession 只负责编码只读查询。
  • 增加旧状态暂缓、目标确认、查询上限回退、新控制替换、协议重置及模式单项查询测试;完整
    integration 与 system-module 单元测试和 Release Kotlin 编译通过。

HyperEars v2.1.0

Choose a tag to compare

@github-actions github-actions released this 09 Aug 07:51

相较于 2.0.0,本版新增荣耀、水月雨和 QCY 设备适配,并加入可按品牌与具体适配器管理
接管范围的调试功能;同时收紧私有能力确认与失败回退,避免未验证的控制项提前出现在卡片中。

新增功能

  • 适配器管理:在“调试 > 适配器”中按品牌查看具体型号、协议家族和标准回退。每个品牌
    提供总开关,也可以单独停用某个适配器;设置变化会重新评估当前已连接设备,无需重启模块。
  • 荣耀亲选耳机 X5s Pro(BTV-ME10):新增实机验证适配,协议确认后提供左右耳、充电盒
    电量以及降噪、关闭、通透三态控制。协议层同时记录智能、轻度、中度、深度四档降噪深度,
    供型号专属卡片扩展使用;当前 MiLink 原生卡片仍使用三态控制。
  • MOONDROP Robin / 水月雨知更鸟:根据公开协议实现左右耳电量和降噪、关闭、通透三态
    控制。已知完整名称或同时包含品牌与型号的名称才会进入协议确认。
  • QCY Crossky C50S / QYCC50S:根据公开协议实现左右耳、充电盒电量和原生三态降噪;
    名称符合 QCY / Crossky 规则的其他设备可以进行同协议家族探测,失败后保留标准能力。
  • QCY 控制 App 协同:卡片“更多设置”可以打开已安装的 QCY App;将该 App 加入 LSPosed
    可选作用域后,也可以参与现有的运行时退避和“停止厂商应用”快捷操作。

兼容性与修复

  • 家族和公开协议适配器默认只发布流转、音量和 Android 系统整机电量。左右耳/充电盒电量、
    降噪和通透等私有能力现在分别等待合法协议响应确认;某项未确认时不会显示对应控制。
  • 初始协议探测增加明确截止时间。候选端点不可用、握手超时或声明的回退适配器已被用户停用时,
    会按当前设置退回可用的保守适配,不会保留失效私有通道或不可点击按钮。
  • Robin 设置噪声模式后主动查询耳机状态,卡片只使用设备回读结果,修复控制生效但界面长期
    停留在旧模式的问题。
  • 标准 SPP UUID、通用 GATT 服务和单独的厂商广播数据不再作为品牌判定依据,降低无关耳机
    被错误接管的风险。

架构与性能

  • 适配器目录成为连接匹配和设置界面的统一数据源;界面只读取品牌、名称、层级和启用状态,
    不包含具体耳机的判型或协议逻辑。展开较长品牌列表时使用按需构建的惰性列表,减少首帧工作。
  • 为音频端点与控制端点分离的设备增加通用伴生 GATT 端点机制。QCY 会先检查当前设备和已配对
    端点,必要时执行一次带厂商过滤条件、最长 8 秒的定向扫描;不会持续扫描或影响无关设备。
  • QCY 协议仍通过系统原生电量与三态卡片呈现,不增加自定义卡片、布局扫描或混淆方法 Hook。

文档与质量

  • 新增荣耀 X5s Pro、MOONDROP Robin 和 QCY 标准 GATT 协议文档,更新中英文 README、兼容性
    矩阵、控制 App 目录、架构说明、第三方来源与许可证记录。
  • 增加能力确认、失败回退、适配器开关、协议流式解码、设备状态回读和伴生端点关联测试。
  • Markdown、站内链接、控制 App 目录、单元测试、Android Lint、R8 Release 构建和签名发布
    均由 CI 校验。