Aniyomi:功能强大的动漫影视播放阅读器
Aniyomi
全功能播放器和阅读器,基于Mihon开发
在Android设备上比以往更轻松地发现和观看动漫、卡通、剧集等内容。
功能特性
- 本地内容管理:支持本地阅读和观看内容
- 高度可配置的阅读器:提供多种阅读器视图、阅读方向和其他设置选项
- 强大的播放器:基于mpv-android构建,提供多种配置选项和设置
- 追番跟踪支持:集成MyAnimeList、AniList、Kitsu、MangaUpdates、Shikimori、Simkl和Bangumi等主流追番平台
- 智能内容组织:使用分类管理您的媒体库
- 主题个性化:支持浅色和深色主题
- 自动更新:定时检查媒体库中的新章节和剧集
- 备份功能:支持本地备份和云端服务备份,便于离线观看
- 丰富的扩展功能:持续更新,提供更多实用特性
安装指南
系统要求:Android 8.0 或更高版本
下载方式
从官方发布页面下载最新版本的APK文件进行安装。
开发环境搭建
如需参与开发,需要准备以下工具:
- Android Studio
- 模拟器或已开启开发者选项的测试设备
- 基本的Android开发和Kotlin编程知识
使用说明
基础使用
安装完成后,您可以:
- 添加内容源并浏览动漫、剧集
- 将感兴趣的内容添加到媒体库
- 配置个性化的阅读和观看设置
- 使用追番功能同步观看进度
播放器设置
最新版本(v0.18.1.0)已将播放器设置整合到主设置界面,方便用户快速调整播放参数。
季节支持
新增季节分类功能,更好地组织和管理系列内容。
核心代码
播放器配置集成
/**
* 将播放器设置集成到主设置界面
* 版本v0.18.1.0新增功能
*/
class PlayerSettingsFragment : PreferenceFragmentCompat() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.player_preferences, rootKey)
// 配置MPV播放器参数
setupMpvPreferences()
}
private fun setupMpvPreferences() {
// 设置媒体标题属性
findPreference<Preference>("media_title")?.let {
it.setOnPreferenceChangeListener { _, newValue ->
// 更新MPV的media-title属性
updateMpvConfiguration("media-title", newValue.toString())
true
}
}
}
}
剧集解析优化
/**
* 修复剧集编号解析问题
* 版本v0.18.1.0修复内容
*/
object EpisodeParser {
/**
* 从多种格式中解析剧集编号
* 支持: "EP 12", "第12话", "Episode 12" 等格式
*/
fun parseEpisodeNumber(title: String): Int? {
val patterns = listOf(
Regex("""EP?\s*(\d+)""", RegexOption.IGNORE_CASE),
Regex("""第\s*(\d+)\s*话"""),
Regex("""Episode\s*(\d+)""", RegexOption.IGNORE_CASE),
Regex("""\b(\d+)\b""")
)
patterns.forEach { pattern ->
pattern.find(title)?.groups?.get(1)?.value?.toIntOrNull()?.let {
return it
}
}
return null
}
}
列表视图滚动状态保持
/**
* 修复子页面退出时列表视图滚动位置重置问题
* 版本v0.18.1.0修复内容
*/
class LibraryListFragment : Fragment() {
private var scrollState: Int = 0
override fun onPause() {
super.onPause()
// 保存当前滚动位置
recyclerView?.layoutManager?.let {
if (it is LinearLayoutManager) {
scrollState = it.findFirstVisibleItemPosition()
}
}
}
override fun onResume() {
super.onResume()
// 恢复保存的滚动位置
if (scrollState > 0) {
recyclerView?.layoutManager?.scrollToPosition(scrollState)
}
}
}
备份系统兼容性
/**
* 修复Aniyomi与Mihon之间的备份创建和恢复兼容性问题
* 版本v0.18.1.0修复内容
*/
object BackupManager {
/**
* 创建跨平台兼容的备份文件
*/
fun createCompatibleBackup(context: Context): File {
val backupFile = createBackupFile(context)
// 添加版本兼容性信息
addCompatibilityHeaders(backupFile)
// 转换数据格式以确保跨平台兼容
convertDataForCrossPlatform(backupFile)
return backupFile
}
private fun addCompatibilityHeaders(file: File) {
// 添加识别头信息,确保Mihon和Aniyomi都能正确识别备份文件
file.appendText("backup_format: aniyomi_mihon_compatible_v2\n")
}
}
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)
公众号二维码
公众号二维码