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分享 + 请给于存储权限 + 上一个 + 下一个 + 音乐 + 音频 + 启用 + 全部书源 + 输入不能为空 + 清空发现缓存 + 编辑发现 + 切换软件显示在桌面的图标