Skip to content
angusdevgoPublic

About

基于喜马拉雅极速版的第三方收听客户端

Resources

Stars

23 stars

Watchers

0 watching

Forks

Latest commit

 

History

78 Commits

Folders and files

Repository files navigation

XMPro

XMPro

喜马拉雅第三方 Android 收听客户端 · Kotlin + Jetpack Compose

Android CI GitHub release GitHub downloads License


项目说明

XMPro 是基于喜马拉雅极速版内容接口的第三方 Android 客户端,使用 Kotlin 与 Jetpack Compose 实现,界面遵循 Material 3 设计规范。

项目仅面向 Android 平台,仅构建 arm64-v8a 单一 ABI。

功能

播放

能力 说明
选集区间 长篇专辑按每 100 集分段,定位到任意区段;播放队列限定在该段内,切集不会越界
待播队列 播放页可展开队列并切换曲目,队列同样支持分段筛选
后台播放 由 Media3 MediaSessionService 承载,通知栏与锁屏显示标题、作者、封面与进度,支持上一集下一集
跳过头尾 智能模式基于音频静音检测跳过首尾空白;手动模式按全集比例设置裁剪点,适配不同时长节目
倍速与定时 播放倍速 0.5×–3.0× 可调,选择会记住;定时关闭到点暂停
音质 默认自动选择最高可用档位,也可手动锁定
评论 播放页可查看当前声音的评论,滚到底自动加载下一页

内容

能力 说明
书单分类 听更新、订阅、历史、收藏四类列表独立维护
书签 在任意播放位置记录,可从记录处继续播放
主播主页 由关注或粉丝列表进入,展示该主播的专辑列表
进度同步 播放进度定期写入云端历史,本地与云端取较新者作为续播位置

听时

能力 说明
余额查询 显示当前设备可用听时;该额度按设备计算,不随账号变化
福利任务 展示各档位时长与最近到账时间,可查看接口返回的完整字段
自动领取 余额低于阈值时自动补充;失败时展示服务端返回的原因

账号与外观

能力 说明
多账号 账号卡或列表点击即切换,无需重新登录;非当前账号仅提供切换入口
凭据迁移 导出已登录账号的 Cookie,可在其他设备导入登录
频道管理 首页频道支持排序、隐藏与恢复默认
外观 Android 12+ 动态取色,内置 7 套预设主题;支持深色与 OLED 纯黑
备份恢复 导出配置与书单,导入即恢复,可选择是否包含登录信息

相对 XMPlus 的取舍

XMPlus 为 Flutter 跨平台实现,覆盖 Windows 与 Android。本项目只面向 Android,实现语言与部分功能范围随之调整。

类别 内容
新增 选集区间按 100 集分段并以网格呈现;待播队列支持同一套区间;应用内更新带 SHA-256 校验;账号免重登切换;Cookie 导出用于跨设备登录;福利任务与听时接口诊断面板
优化 跳过头尾增加静音检测的智能模式,手动模式改按比例设置;播放请求加入序号校验,丢弃过期响应;历史与搜索结果播放改为加载所属专辑队列;时间戳统一按服务端时间校正;领取与请求失败直接展示服务端原因
修复 深色模式切换即时生效;片头跳过在起播时生效;已登录状态下可新增手机号账号;听时较高时切专辑被拒(ret=4);操作按钮不再被压缩换行
去除 下载与离线收听;FFmpeg / FFprobe 原生媒体工具链与转码;Windows 桌面端;多 ABI 构建,仅保留 arm64-v8a

技术栈

项目 版本 / 说明
语言 Kotlin 2.0.20
UI Jetpack Compose,Material 3
播放 AndroidX Media3(ExoPlayer + MediaSessionService)
构建 Gradle 8.9、AGP 8.7.3
SDK compileSdk 35、minSdk 24(Android 7.0)
ABI arm64-v8a

源码组织:

api/       接口封装、签名与协议解析
data/      持久化、多账号与听时账本
model/     数据模型
player/    播放控制与音频处理
ui/        Compose 界面与视图模型
updater/   版本检查、下载与校验

安装

从 Releases 下载:

XMPro-<版本>-android-arm64-v8a.apk
SHA256SUMS

设备需为 arm64-v8a 架构、Android 7.0 及以上。应用内检查更新会下载安装包并与 SHA256SUMS 比对,校验通过后交由系统安装器处理。

构建

./android/gradlew -p android :app:assembleDebug
./android/gradlew -p android :app:testDebugUnitTest

发布构建需提供签名参数,签名材料不入库:

export ANDROID_KEYSTORE_PATH=/path/to/release.jks
export ANDROID_KEYSTORE_PASSWORD=...
export ANDROID_KEY_ALIAS=...
export ANDROID_KEY_PASSWORD=...
./android/gradlew -p android :app:assembleRelease

推送 v* 标签会触发 CI:使用仓库 secrets 签名,校验签名、包名与版本号,随后将安装包与校验文件上传至 Releases。

许可

AGPL-3.0-or-later

本项目与喜马拉雅官方无关,仅供个人学习与自用,请使用自有账号并遵守服务条款。

About

基于喜马拉雅极速版的第三方收听客户端

Resources

Stars

23 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages