Skip to content
fengqiao57Public

About

免登录、无广告、专注收听的第三方 B 站有声小说播放器

Resources

Stars

186 stars

Watchers

1 watching

Forks

Latest commit

 

History

26 Commits

Folders and files

Repository files navigation

阿B听书

阿B听书

免登录、无广告、专注收听的第三方 B 站有声小说播放器

Flutter · Android · 永久免费 · 开源


简介

阿B听书是一个基于 Flutter 的 Android 听书播放器:把 B 站当作有声书库,搜索、分类浏览有声小说、评书、相声、广播剧,点开即听。

  • 🔓 免登录:不登录即可搜索、收听、收藏、记录进度;扫码登录仅用于同步昵称头像与提升搜索稳定性。
  • 🚫 无广告:没有广告、没有会员、没有弹窗,打开就能听。
  • 🎧 专注收听:分P连播、断点续播精确到秒、睡眠定时、后台播放与锁屏控制,为长时间听书优化。
  • 📥 真能离线:选集批量缓存后后台下,通知栏看得见进度,中途退出也不丢、无网照听。

非官方项目,与哔哩哔哩无任何官方关联或背书;内容来自哔哩哔哩公开视频的音频轨道,应用本身不存储、不修改、不二次分发任何内容。

功能特性

发现与搜索

  • 分类浏览:热门推荐 / 广播剧 / 评书 / 相声 / 悬疑 / 玄幻仙侠 / 名著悦读
  • 精选主播:单田芳、刘兰芳、郭德纲、周建龙、紫襟、王明军、光合积木、729声工场 等,一点直达 TA 的作品
  • 搜索自动限定在「有声小说」范围,过滤解说、漫推、短视频等无关内容
  • 搜索分「听书 / UP主」两个标签(搜索出结果后才出现,切换时先加载完再切换不闪屏):UP主标签可搜主播、关注后进入 TA 的主页只看他的投稿内容
  • 书籍详情页点 UP 主名可直达 TA 的主页
  • 搜索结果上拉分页加载,失败会提示并可一键重试
  • 分类结果本地缓存,减少重复请求

播放

  • 分P 即章节:自动连播、上/下一章、±15 秒快进退
  • 倍速播放:0.5x / 0.75x / 1.0x / 1.25x / 1.5x / 1.75x / 2.0x / 2.25x / 2.5x / 2.75x / 3.0x 共 11 档预设,点一下即切换,自动记住上次的倍速
  • 播完本集自动暂停:本集播完即停,不自动连下一集(可一键开关)
  • 断点续播精确到秒(退到后台、切换章节、退出应用都会保存进度)
  • 断流自动重连:长音频播放中断自动换备用线路重连并回到原位置,不再出现「莫名其妙停了」
  • 章节列表:标题自带序号时不重复编号;已听章节打 ✓ 并置灰,支持正序/倒序
  • 睡眠定时:预设 10/15/30/45/60 分钟、2 小时,也可自定义 1~720 分钟
  • 音频焦点:来电或其它应用播放时自动暂停,打断结束后自动续播;拔耳机自动暂停;提示音只压低音量不打断
  • 后台播放:前台服务 + 系统媒体会话,通知栏与锁屏可控制,暂停后通知不消失

离线缓存

  • 详情页每集可单独缓存,播放页 / 详情页可勾选多集批量缓存
  • 后台缓存:开始后可立刻离开页面,回桌面、切页面都不中断下载
  • 通知栏进度:显示正在缓存的集名与百分比,全部完成后自动消失
  • 断了能续:App 被系统回收或你手动划掉重进,下次启动自动接着下完剩余队列
  • 失败可见可重试:某一集失败不会悄悄消失,会列出失败原因并支持一键重试
  • 离线缓存管理(我的 → 离线缓存):按书分组、查看已缓存章节、单个/批量删除、可直接播放
  • 缓存文件按作品原本的章节顺序展示(不是按缓存先后)
  • 缓存保存在应用内部私有目录,与索引同分区,覆盖升级不丢
  • 下载前预估所需空间,空间不足会提前提示而不是下到一半失败

其它

  • 书架收藏、继续收听、最近收听(均显示整本书的进度百分比)
  • 书架右上角续播角标:显示上次在听那本的圆形封面,点一下续播;正在播放时角标随封面旋转,点一下直接回到播放页
  • 书架点一下直接续播进播放页;播放页点书名回到书籍详情
  • 我的页面统计(书架 / 在听 / 已缓存 / 关注)可点击直达对应页面
  • 关注的 UP 主(我的 → 关注的 UP 主)
  • 关于页:官网、开源仓库、Issue 反馈、协议与免责声明入口
  • 扫码登录(二维码可保存到相册)
  • 外观模式:跟随系统 / 浅色 / 深色
  • 后台留存保护(电池优化豁免引导)
  • 检查更新:一键比对 GitHub Releases,有新版本直接提示下载
  • 分享原作品链接

更新日志

v1.2.0

新增

  • 书架右上角续播角标:以「上次在听」那本的圆形封面做底、叠加播放图标,点一下直接续播; 正在播放时角标换成当前播放封面并像唱片一样旋转(与底部悬浮条一致),此时点一下直接进播放页,不再重新加载
  • 离线缓存体系
    • 批量选集缓存,开始后可离开页面,下载在后台继续
    • 通知栏实时显示缓存集名与百分比
    • 未完成的队列落盘,App 被杀后重启自动续传
    • 失败集单独列出原因并支持一键重试(不再静默丢弃)
    • 缓存按作品原始章节顺序展示
  • 离线与在线统一:无论从哪进,目录、上下章、断点续播、进度保存都是同一套逻辑; 没网时会自动退回已缓存的章节,发现页无网时会列出已缓存书籍
  • 书架显示整本书的播放进度(不再是某一章的百分比),并显示每章收听进度
  • 倍速 0.5x~3.0x 共 11 档预设(去掉滑块,点一下即切)
  • ±15 秒快进退、播完本集自动暂停、已听章节 ✓ 标记
  • UP 主搜索 / 关注 / 投稿合集与上拉分页
  • 关于页与启动加载页

修复

  • 点开就退会丢进度:刚起播时媒体时长还没解析出来,进度会被整条丢弃;现改用章节时长兜底
  • 长音频断流自动重连,长书不再「莫名停止」
  • B 站 412 风控阶梯退避与 buvid 预激活,游客态请求限速
  • 缓存文件误删(两处):迁移改「复制→校验大小→删源」,且文件完好时不再因为播放打开失败就删缓存
  • 批量缓存「少一集」:B 站返回空音频地址被当成成功,现改为重试并把失败暴露给用户
  • 缓存条目顺序错乱:原按缓存先后展示,现按作品章节顺序
  • 空间预检按 16kbps 低估 8 倍导致下到一半失败,改为按真实码率估算
  • 缓存「已失效」误报:同一文件被两处代码判断出相反结论,已合并为单一判断入口
  • 通知栏与系统媒体状态漂移、来电打断恢复、拔耳机暂停
  • 首页/搜索/我的多处交互与跳转问题

截图

书架(精确进度 / 继续收听) 发现(分类 / 精选主播) 我的(收藏 / 设置入口)
书架 发现 我的
书籍详情(分P目录 / 已听置灰) 播放(连播 / 睡眠定时入口) 睡眠定时(自定义 1~720 分钟)
书籍详情 播放 睡眠定时

下载

前往 Releases 下载 APK,安装即可(Android 7.0+,已签名、包名 dev.pages.abts,安装包彼此可覆盖升级)。

安装包 体积 适用设备
abts-v1.2.0-arm64-v8a.apk ~26 MB 绝大多数手机都选它(2017 年后的主流安卓机基本都是 arm64)
abts-v1.2.0-armeabi-v7a.apk ~23 MB 较老的 32 位手机 / 低端设备(armv7)
abts-v1.2.0-x86_64.apk ~28 MB x86_64 模拟器 / 平板 / 部分盒子
abts-v1.2.0-universal.apk ~73 MB 不确定 CPU 架构时选它,一个包兼容所有架构(体积最大)

怎么确认架构:设置 → 我的设备 → 处理器型号;或用 CPU-Z / AIDA64 查看 ABI 一栏。

从源码构建

# 环境:Flutter 3.38.x(Dart 3.10+)、JDK 17、Android SDK
flutter pub get
flutter build apk --release            # 通用包
flutter build apk --release --split-per-abi   # 按架构分包(体积更小)
# 产物:build/app/outputs/flutter-apk/

签名说明:若存在 android/key.properties 则用其中的证书签名,否则回退 debug 签名(便于他人直接构建)。配置格式:

storePassword=你的密码
keyPassword=你的密码
keyAlias=你的别名
storeFile=abitingshu.keystore   # 相对 android/app/ 目录

项目结构

lib/
├── core/
│   ├── network/        # BiliClient(Cookie 预热 / WBI 签名 / 限速重试)、CookieJar、端点常量
│   ├── storage/        # 书架与进度、离线缓存(CacheStore:队列/对账/迁移)、关注、搜索历史
│   ├── theme/          # 主题与配色(跟随系统 / 浅色 / 深色)
│   └── nav/            # 底部 Tab 全局切换
├── data/               # 分类与精选主播种子数据
├── models/             # Book / Chapter / AudioTrack / UpUser
├── player/             # BookPlayer(连播、断点续播、睡眠定时、音频焦点)+ 系统媒体会话桥接
├── services/           # BiliApi 数据层、缓存通知桥、登录态、音频焦点、外链跳转、相册保存
├── pages/              # 书架 / 发现 / 搜索 / 详情 / 播放 / 离线缓存 / 我的 / 关于 / 登录 / 睡眠定时 …
└── widgets/            # 迷你播放条、书籍卡片、封面 …
android/app/src/main/kotlin/dev/pages/abts/MainActivity.kt   # 音频焦点、电池优化、保存图片、缓存通知等原生通道
tool/                  # 接口探针脚本(调试用,可独立 dart run)

免责声明

  1. 本应用为第三方个人开发的播放工具,与哔哩哔哩官方无任何关联,不代表、也不受哔哩哔哩官方授权或认可。
  2. 应用内所有音频、封面、文字等内容均来自第三方平台的公开链接,版权归原作者及相关权利人所有。本应用不存储、不修改、不二次分发任何内容。
  3. 内容仅供个人学习、研究与试听交流使用,请勿用于任何商业用途;请勿下载、录制或传播相关内容。
  4. 请在试听后支持正版:如喜欢某部作品,建议前往官方平台购买、订阅或支持作者。
  5. 若权利人认为本应用侵犯其合法权益,请告知开发者,我们将在核实后及时处理(包括但不限于移除相关入口)。
  6. 因使用本应用产生的任何直接或间接后果,由使用者自行承担。

开源协议

MIT

致谢

参考与借鉴了以下开源项目的思路:PiliPlus、biu、bbplayer、bili-music、BiliPai 等。

About

免登录、无广告、专注收听的第三方 B 站有声小说播放器

Resources

Stars

186 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages