diff --git a/app/src/main/java/io/legado/app/App.kt b/app/src/main/java/io/legado/app/App.kt
index 6ef0e877d..e62d513bc 100644
--- a/app/src/main/java/io/legado/app/App.kt
+++ b/app/src/main/java/io/legado/app/App.kt
@@ -1,7 +1,20 @@
package io.legado.app
import android.app.Application
+import android.app.NotificationChannel
+import android.app.NotificationManager
+import android.content.Context
+import android.os.Build
+import androidx.annotation.RequiresApi
+import androidx.appcompat.app.AppCompatDelegate
+import io.legado.app.constant.AppConst.channelIdDownload
+import io.legado.app.constant.AppConst.channelIdReadAloud
+import io.legado.app.constant.AppConst.channelIdWeb
import io.legado.app.data.AppDatabase
+import io.legado.app.lib.theme.ThemeStore
+import io.legado.app.utils.getPrefBoolean
+import io.legado.app.utils.getPrefInt
+import java.util.*
class App : Application() {
@@ -19,5 +32,74 @@ class App : Application() {
super.onCreate()
INSTANCE = this
db = AppDatabase.createDatabase(INSTANCE)
+ initNightTheme()
+ upThemeStore()
+ }
+
+ fun initNightTheme() {
+ if (getPrefBoolean("isNightTheme", false)) {
+ AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
+ } else {
+ AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
+ }
+ }
+
+ fun upThemeStore() {
+ if (getPrefBoolean("isNightTheme", false)) {
+ ThemeStore.editTheme(this)
+ .primaryColor(getPrefInt("colorPrimaryNight", resources.getColor(R.color.md_grey_800)))
+ .accentColor(getPrefInt("colorAccentNight", resources.getColor(R.color.md_pink_800)))
+ .backgroundColor(getPrefInt("colorBackgroundNight", resources.getColor(R.color.md_grey_800)))
+ .apply()
+ } else {
+ ThemeStore.editTheme(this)
+ .primaryColor(getPrefInt("colorPrimary", resources.getColor(R.color.md_grey_100)))
+ .accentColor(getPrefInt("colorAccent", resources.getColor(R.color.md_pink_600)))
+ .backgroundColor(getPrefInt("colorBackground", resources.getColor(R.color.md_grey_100)))
+ .apply()
+ }
+ }
+
+ /**
+ * 创建通知ID
+ */
+ @RequiresApi(Build.VERSION_CODES.O)
+ private fun createChannelId() {
+ val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
+ //用唯一的ID创建渠道对象
+ val downloadChannel = NotificationChannel(
+ channelIdDownload,
+ getString(R.string.download_offline),
+ NotificationManager.IMPORTANCE_LOW
+ )
+ //初始化channel
+ downloadChannel.enableLights(false)
+ downloadChannel.enableVibration(false)
+ downloadChannel.setSound(null, null)
+
+ //用唯一的ID创建渠道对象
+ val readAloudChannel = NotificationChannel(
+ channelIdReadAloud,
+ getString(R.string.read_aloud),
+ NotificationManager.IMPORTANCE_LOW
+ )
+ //初始化channel
+ readAloudChannel.enableLights(false)
+ readAloudChannel.enableVibration(false)
+ readAloudChannel.setSound(null, null)
+
+ //用唯一的ID创建渠道对象
+ val webChannel = NotificationChannel(
+ channelIdWeb,
+ getString(R.string.web_service),
+ NotificationManager.IMPORTANCE_LOW
+ )
+ //初始化channel
+ webChannel.enableLights(false)
+ webChannel.enableVibration(false)
+ webChannel.setSound(null, null)
+
+ //向notification manager 提交channel
+ notificationManager.createNotificationChannels(Arrays.asList(downloadChannel, readAloudChannel, webChannel))
}
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 104e439e4..aaf582f1a 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -31,4 +31,441 @@
净化替换
暂无
启用
+
+ 书架
+ 最后阅读
+ 让阅读成为一种习惯。
+ 更新日志
+ 阅读·搜索
+ 书架还空着,先去添加吧!
+ 搜索
+ 下载任务
+ 列表视图
+ 网格视图
+ 列表/网格
+ 书城
+ 添加本地
+ 书源管理
+ 设置
+ 主题设置
+ 关于
+ 捐赠
+ 退出
+ 还未保存,是否继续编辑
+ 阅读样式设置
+
+ 本地
+ 搜索
+ 没有网络
+ 网络连接超时
+ 数据解析失败
+ 来源: %s
+ 最近: %s
+ 书名
+ 最新: %s
+ 是否将《%s》放入书架?
+ 共%s个Text文件
+ 加载中…
+ 获取数据失败!
+ 重试
+ web服务
+ web编辑书源
+ http://%s:%d
+ 离线下载
+ 离线下载
+ 下载选择的章节到本地
+ 换源
+
+ \u3000\u3000这是一款开源的阅读软件,你可以fork我们的代码自己编译APK。欢迎提交代码帮助改善应用。\n\u3000\u3000公众号[开源阅读软件]!
+
+ Version %s
+ 自动刷新
+ 打开软件时自动更新书籍
+ 自动下载最新章节
+ 更新书籍时自动下载最新章节
+ 备份
+ 恢复
+ 备份请给与存储权限
+ 恢复请给与存储权限
+ 确认
+ 取消
+ 确认备份吗?
+ 新备份会替换原有备份。\n备份文件夹YueDu
+ 确认恢复吗?
+ 恢复书架会覆盖现有书架。
+ 备份成功
+ 备份失败
+ 正在恢复
+ 恢复成功
+ 恢复失败
+ 屏幕方向
+ 跟随传感器
+ 横向
+ 竖向
+ 跟随系统
+ 免责声明
+ 共%d章
+ 界面
+ 亮度
+ 目录
+ 下一章
+ 上一章
+ 隐藏状态栏
+ 阅读界面隐藏状态栏
+ 阅读行数调整
+ 阅读行数减一行,如阅读界面显示不全可启用
+ 朗读
+ 正在朗读
+ 点击打开阅读界面
+ 返回
+ 重新加载
+ 开始
+ 停止
+ 暂停
+ 继续
+ 定时
+ 朗读暂停
+ 正在朗读(还剩%d分钟)
+ 阅读界面隐藏虚拟按键
+ 隐藏导航栏
+ 导航栏颜色
+ GitHub
+ 评分
+ 发送邮件
+ 无法打开
+ 无章节
+ 添加网址
+ 添加书籍网址
+ 背景
+ 作者
+ 站点暂时不支持解析,请反馈
+ 朗读停止
+ 清除缓存
+ 保存
+ 编辑书源
+ 禁用书源
+ 新建书源
+ 添加书籍
+ 扫描
+ 拷贝书源
+ 粘贴书源
+ 书源规则说明
+ 检查更新
+ 扫描二维码
+ 扫描本地图片
+ 规则说明
+ 分享
+ 软件分享
+ 跟随系统
+ 添加
+ 导入书源
+ 本地导入
+ 网络导入
+ 替换净化
+ 替换规则编辑
+ 替换规则
+ 替换为
+ 封面
+ 书
+ 音量键翻页
+ 点击翻页
+ 点击总是翻下一页
+ 翻页动画
+ 屏幕超时
+ 返回
+ 菜单
+ 调节
+ 滚动条
+ 清除缓存会删除所有已保存章节,是否确认删除?
+ 书源共享
+ 替换规则名称
+ 全选
+ 夜间模式
+ 启动页
+ 开始下载
+ 取消下载
+ 暂无任务
+ 导入选择书籍
+ 更新和搜索线程数,如感觉卡顿请减小线程数,量力而行
+ 切换图标
+ 删除书籍
+ 开始阅读
+ 加载数据中…
+ 加载失败,点击重试
+ 内容简介
+ 打开外部书籍
+ 来源
+ 本地导入
+ 网络导入
+ 书架排序
+ 检查更新间隔
+ 按阅读时间排序
+ 按更新时间排序
+ 手动排序
+ 阅读方式
+ 删除所选
+ 是否确认删除?
+ 默认字体
+ 发现
+ 发现管理
+ 没有内容,去书源里自定义吧!
+ 删除所有
+ 搜索历史
+ 清除
+ 正文显示标题
+ 书源同步
+ 无最新章节信息
+ 显示时间和电量
+ 显示分隔线
+ 深色状态栏图标
+ 内容
+ 拷贝内容
+ 一键缓存
+ 这是一段测试文字\n\u3000\u3000只是让你看看效果的
+ 文字颜色和背景(长按自定义)
+ 沉浸式状态栏
+ 还剩%d章未下载
+ 长按输入颜色值
+ 加载中…
+ 追更区
+ 养肥区
+ 书签
+ 添加书签
+ 删除
+ 加载超时
+ 关注:%s
+ 已拷贝
+ 整理书架
+ 这将会删除所有书籍,请谨慎操作。
+ 搜索书源
+ 搜索(共%d个书源)
+ 目录(%d)
+ 加粗
+ 字体
+ 文字
+ 软件主页
+ 右
+ 左
+ 下
+ 上
+ 边距:
+ 上边距
+ 下边距
+ 左边距
+ 右边距
+ 校验书源
+ 校验所选
+ 进度 %d/%d
+ 请安装并选择中文TTS!
+ TTS初始化失败!
+ 简繁转换
+ 关闭
+ 简转繁
+ 繁转简
+ 翻页模式
+ %1$d 项
+ 存储卡:
+ 加入书架
+ 加入书架(%1$d)
+ 成功添加%1$d本书
+ 请将字体文件放到SD根目录Fonts文件夹下重新选择
+ 默认字体
+ 选择字体
+ 字号
+ 行距
+ 段距
+ 置顶
+ 自动展开发现
+ 默认展开第一组发现
+ 当前线程数 %s
+ 朗读语速
+ 自动翻页
+ 停止自动翻页
+ 自动翻页间隔
+ 书籍信息
+ 默认打开书架
+ 自动跳转最近阅读
+ 替换范围,选填书名或者源名
+ 分组
+ 内容缓存路径
+ 系统文件选择器
+ 新版本
+ 下载更新
+ 朗读时音量键翻页
+ Tip边距跟随边距调整
+ 禁止更新
+ 允许更新
+ 反转选择
+ 搜索书名、作者
+ 书名、作者、URL
+ 常见问题
+ 显示所有发现
+ 关闭则只显示勾选源的发现
+ 更新目录
+ txt目录正则
+ 设置编码
+ 倒序-顺序
+ 排序
+ 智能排序
+ 手动排序
+ 拼音排序
+ 滚动到顶部
+ 滚动到底部
+ 已读: %s
+ 追更
+ 养肥
+ 完结
+ 所有书籍
+ 追更书籍
+ 养肥书籍
+ 完结书籍
+ 本地书籍
+ 状态栏颜色透明
+ 导航栏变色
+ 导航栏根据夜间模式变化
+ 放入书架
+ 继续阅读
+ 封面地址
+ 覆盖
+ 仿真
+ 滑动
+ 滚动
+ 无动画
+ 此书源使用了高级功能,请到捐赠里点击支付宝红包搜索码领取红包开启。
+ 后台更新换源最新章节
+ 开启则会在软件打开1分钟后开始更新
+ 书架ToolBar自动隐藏
+ 滚动书架时ToolBar自动隐藏与显示
+ 登录
+ 登录%s
+ 成功
+ 当前源没有配置登陆地址
+ 书源名称(bookSourceName)
+ 书源URL(bookSourceUrl)
+ 书源分组(bookSourceGroup)
+ 登录URL(loginUrl)
+ 作者规则(ruleBookAuthor)
+ 正文规则(ruleBookContent)
+ 书名规则(ruleBookName)
+ 目录列表规则(ruleChapterList)
+ 章节名称规则(ruleChapterName)
+ 目录URL规则(ruleChapterUrl)
+ 目录下一页规则(ruleChapterUrlNext)
+ 章节URL规则(ruleContentUrl)
+ 封面规则(ruleCoverUrl)
+ 简介规则(ruleIntroduce)
+ 搜索作者规则(ruleSearchAuthor)
+ 发现作者规则(ruleFindAuthor)
+ 搜索封面规则(ruleSearchCoverUrl)
+ 发现封面规则(ruleFindCoverUrl)
+ 搜索分类规则(ruleSearchKind)
+ 发现分类规则(ruleFindKind)
+ 搜索最新章节规则(ruleSearchLastChapter)
+ 发现最新章节规则(ruleFindLastChapter)
+ 搜索列表规则(ruleSearchList)
+ 发现列表规则(ruleFindList)
+ 搜索书名规则(ruleSearchName)
+ 发现书名规则(ruleFindName)
+ 搜索书籍URL规则(ruleSearchNoteUrl)
+ 发现书籍URL规则(ruleFindNoteUrl)
+ 搜索简介规则(ruleSearchIntroduce)
+ 发现简介规则(ruleFindIntroduce)
+ 搜索地址(ruleSearchUrl)
+ 发现规则(ruleFindUrl)
+ 正文下一页URL规则(ruleContentUrlNext)
+ 书籍详情URL正则(ruleBookUrlPattern)
+ 书籍详情预处理规则(ruleBookInfoInit)
+ 分类规则(ruleBookKind)
+ 最新章节规则(ruleBookLastChapter)
+ HttpUserAgent
+ 调试书源
+ 二维码导入
+ 扫描二维码
+ \@
+
+ 选中时点击可弹出菜单
+ 主题
+ 默认主题
+ 恢复主题为默认配色
+ 加入QQ群
+ 文件读取失败
+ 获取背景图片需存储权限
+ 输入书源网址
+ 删除文件
+ 删除文件成功
+ 确定删除文件吗?
+ 手机目录
+ 智能导入
+ 发现
+ 切换显示样式
+ 导入本地书籍需存储权限
+ 点击可切换到白天模式
+ 点击可切换到夜间模式
+ 本软件需要存储权限来存储备份书籍信息
+ 再按一次退出程序
+ 导入本地书籍需存储权限
+ 网络连接不可用
+ 是
+ 否
+ 是否删除全部书籍?
+ 是否同时删除已下载的书籍目录?
+ 扫描二维码需相机权限
+ 朗读正在运行,不能自动翻页
+ 输入编码
+ TXT目录规则
+ 打开外部书籍需获取存储权限
+ 书籍信息获取失败
+ 内容获取失败
+ 目录获取失败
+ 访问网站失败:%s
+ 未获取到书名
+ 输入替换规则网址
+ 搜索列表获取成功%d
+ 书源名称和URL不能为空
+ 图库
+ 领支付宝红包
+ 没有获取到更新地址
+ 正在打开首页,成功自动返回主界面
+ 登录成功后请点击右上角图标进行首页访问测试
+ 章
+ 章节:
+ 至
+ 使用正则表达式
+ 缩进
+ 无缩进
+ 一字符缩进
+ 二字符缩进
+ 三字符缩进
+ 四字符缩进
+ 选择SD卡
+ 没有发现,可以在书源里添加。
+ 恢复默认
+ 自定义缓存路径需要存储权限
+ 黑色
+ 文章内容为空
+ 正在换源请等待…
+ 目录列表为空
+ 加载失败\n%s
+ 正文边距
+ Tip边距
+ 字距
+
+ E-Ink 模式
+ 去除动画,优化电纸书使用体验
+ Web服务
+ web端口
+ 当前端口 %s
+ 二维码分享
+ wifi分享
+ 请给于存储权限
+ 上一个
+ 下一个
+ 音乐
+ 音频
+ 启用
+ 全部书源
+ 输入不能为空
+ 清空发现缓存
+ 编辑发现
+ 切换软件显示在桌面的图标