分享无限之书的听书方案!
一直听书一直爽,但安卓不容易啊,很难保活,即使保活,也常停止,很不靠谱。
几番尝试,终于总结出一套“无限听书”方案!
如果用来听小说,需修改翻页脚本,然后打开“亮屏循环”来保活。
➤ 功能入口
“朗读控制”按钮.png
有人反映点击“朗读”没有反应,大概率不是兼容性问题(android4.4都可以读起来),可能是有所误解吧,这个按钮是用来打开控制界面,然后切换引擎、各种调节的,可调节音量、音调、和语速。语速可以每个tts引擎不一样。比如multitts,比别的引擎慢,就要调快。
可以前进下一句。(后退/上一句还没做好)
另外在右上菜单,新增有“全文朗读”按钮,有选中文本时,则从选择处开始。
当标签页处于“全文朗读”状态时,底部工具栏前两个按钮会变成“暂停”、“朗读控制”。长按触发更多功能!
同时,对返回键添加了一个保护,避免误触导致停止朗读。
➤ 『无限听书』方案!
㊀ 修改翻页脚本
还是用“自动无缝翻页”这个脚本,但需稍作修改,需在开头插入以下一段代码:
代码作用解释:将页面滚动监听器替换为计时器。为什么呢?因为“页面滚动监听器”是个战五渣,一熄屏就罢工,活不过5纳秒。计时器也属于战五渣,不过好歹能有五分钟。
㊁ 五分钟亮一次屏 —— 亮屏循环
webview里的计时器,会在熄屏后变慢、五分钟后被挂起,强制暂停,不再运行。好在安卓还有一些奇怪的API,可以让app主动点亮屏幕,然后再“尽快”地熄屏。不能有锁屏,否则,即使点亮,也对web计时器无效。
亮屏循环.png
(“尽快”熄屏:通过修改系统的屏幕超时,缩短,再改回来,模拟熄屏。注:须手动赋予相应权限,实则不必开启,因为当自动亮屏后,假如没有用户操作,很快就会重新熄屏)
(注:开启后,仅当 app 处于前台然后熄屏,才会触发“亮屏循环”。
㊂ 更多屏幕设置
“亮屏循环”也许会失效,也许过于怪异、不那么好用。还不如直接修改系统的屏幕超时,改成1小时、两小时。可在“浏览选项”-“屏幕常亮”中修改,退出或切走应用后,会自动改回去。
修改系统的屏幕超时.png
(这些功能可能有BUG,改来改去的,有可能将初始值丢失。如果真的发生了,需要点“前往系统显示设置”,将锁屏时间改回你想要的值)
㊃ 使朗读行居中
同时开启 “保持朗读行可见”、“总是定位朗读行”,可使朗读行居中。当手指按下,或选择文本时,将暂停居中。
不过像zhihu这种有大量折叠内容的,经常会定位到意想不到的位置……
开启朗读行居中.png
㊄ 朗读引擎(个人偏好)
推荐MultiTTS,导入离线数据,还可以选择很多种引擎和角色!
我下载的是简版,完整版太大了。选了 MscTTS 里的聆晓琪、刚哥,随机混着听(不开对话合成),还不错,声音有点像番茄。
感觉一个声音太窒息,几个声音太裂脑,两个声音刚刚好,一男一女、混合朗读,令人想起“赤血丹心”的经典合唱,即使念广告词,也不显得一板一眼。
MutliTTS 朗读引擎.png
(为什么有人喜欢御姐音啊,好不自然……)
(其实MIUI的系统tts也挺好的。)
➤ 用于听稿件
改了一晚上,终于支持“听稿”。可以在电脑上编辑文章后,在手机上登录金山文档、今日头条等在线编辑器,然后一键朗读!
听稿件.png
总结
- 听小说:修改翻页脚本,使页面滚动监听器替换为计时器;使用亮屏循环、更多屏幕设置和使朗读行居中等功能,提高使用体验;
- 支持听稿件,在手机上登录在线编辑器并一键朗读;
- 推荐使用MultiTTS朗读引擎,支持离线数据、多种引擎和角色选择。
(本文首发于酷安)