好吧,其实这是一个可以没有用户体系的单机 APP 所以没有码这种东西,只是我让 V2 的 AIChat 帮我参考站内的热帖起一个标题,它建议我用送码当前缀而已。 遥想当年在 V2 上看见 @ HairShort 大佬开源了 WebViewTV ,当时我就惊呼:人才啊,我从来没想过 webview 还能这么玩。 这么多年过去了,我仍然认为 WebViewTV 是我在 V2 看到的最实用、最能解决实际问题的 APP 没有之一。 转眼到了今年暑假,发生了两件事情触动了我。 1 、我去看望我那有轻度阿尔茨海默的舅舅,他儿女在外地得过年才回来,是个独居老人,我到的时候他正在发呆,然后我就发现他的电视已经很长时间没开了,遥控器都找不着了,问他为什么日常没看电视,答太复杂了操作不来。 2 、暑假丈母娘帮忙带我儿子,其实老人也管不了什么,孩子就每天大量看电视。但是电视的那些 APP 正经适合孩子看的内容没几个,各种乱七八糟算法推的短视频一个接一个,老人没什么文化无法管控这事。甚至更离谱的爱奇艺家有一个奇巴布 APP 是专门的儿童 APP ,但里面不少辣眼睛内容简直了。 于是我要解决我这两个痛点:操作足够简单,以及内容足够可控。 于是就有了这个「节目单」 APP 。 它还是 WebViewTV 的路子 依然是:WebView 打开网页 → 找到网页中的视频 → 自动进入全屏播放。 但在这个基础上,我希望再扩展得方便一些。 首先是可以设成真正的极简模式。 首次运行把需要看的节目 URL 导进去之后,电视就可以直接进入播放。 比如老人平时只看中央台和几个本市的台,那就只给他导入这几个。 例如我家老人我就只导中央台跟本地台,其它直播类 APP 从中央台跳到本地台老人家根本理解不了一级一级的菜单逻辑。 然后是内容完全由用户自己(监护人)决定,本质上就是一个电视机的浏览器/播放器,所以没有算法推荐。 你想让电视上出现什么,就自己加什么。 不想看的就删掉。 还可以通过小程序远程增删改查电视上的节目 URL ,例如我日常工作摸鱼的时候可以顺手把我发现的好视频加到我绑定的电视机列表里(不管电视当前有没有在线)。 所以电视最终呈现出来的东西,就是自己整理出来的那一小撮内容。 顺便还解决了一个我自己一直觉得很别扭的问题,电视上的视频网站账号登录。 例如手机和电视处于同一个局域网时,我弄了一个辅助登录的功能,可以用手机操作电视上的 WebView ,打开对应视频网站的登录页面。 例如我就直接在电视上的登录了我自己的 B 站账号。 登录之后,电视就可以播放这个账号本身能够观看的内容。 也就是说 让电视上的浏览器也能够正常使用你自己的视频网站账号。 当然如果你对隐私比较注重也可以彻底单机化 在设置里开启单机模式后,APP 不会再跟我的服务器产生任何联系。 所以即使哪天我跑路了,服务器没了,依然能用,因为本质就仅仅是一个单机的电视浏览器/播放器而已。 然后说一下槽点,就是安装包四舍五入 300M , 因为国内安卓电视这个生态实在太碎片化了。 我目前真机测试过的设备,从 5.1 一直到 13 ,发现了各种各样的问题。 所以为了尽可能提高兼容性,我直接在安装包里塞了 3 套 WebView 内核。 不过不用担心它浪费空间。 APP 第一次运行时会判断当前设备到底哪套内核能用,然后会自动删除不需要的内核。 最理想的情况是: 系统自带 WebView 版本足够高(>119 ),第一次播放成功后,外带的内核全部删掉。我自己实测最后 APP 占用不到 3M 。 当然确实 webview 性能相对差一些,不过我在十几年前购置 1G 运存双核 A53 的微鲸 W43F 实测也勉强能流畅播放也就还能接受。 还有就是目前这个扫码-粘贴导入节目单 URL 的操作逻辑还是有点繁琐(尤其在手机端操作的时候),我也还在思考还能不能有更简单同时兼顾自由方便的方法,大家有什么好的思路也欢迎一起讨论一下。 接下来介绍一下我定义的文本格式(下面简称为协议): 其实就是一个类 md 文本协议,以及 `#JMD` / `#JMD+` 两种链接形式。 最基本的节目单就是这样: ```节目单开始``` /ai-market-guide/ /ai-market-guide/ /ai-market-guide/ ```节目单结束``` 电视端拿到以后自己解析。 最简单的情况下,开始标记 + URL 列表 + 结束标记 就够了。 标题什么的不用自己写,电视端会自己抓网页标题。 当然也可以进一步增加分类、标题、时间等字段。 具体可以参考我的协议演示站: /ai-market-guide/ 还有,举一个我自己实际遇到的例子。 比如我比较喜欢一个旅游 UP 主“杨旭游记”,我觉得他的视频也比较适合推荐给老人家看, 他的视频是有连贯性的,正常我们是希望: 第 1 集 → 第 2 集 → 第 3 集 →…… 这样一直看下去。 但是我在 B 站官方小电视 APP 难以按他的旅行顺序看,每次都是最新更新的在前面导致在电视上播放顺序是倒过来的, 于是播放顺序就变成: 第 100 集 → 第 99 集 → 第 98 集…… 特别别扭。 所以协议里可以加入时间字段。有时间字段的节目,进入列表会按照从老到新的顺序排序。 这样电视端就可以按照: 1 → 2 → 3 → 4…… 顺序播放。 中途退出也没关系,下次重新进入列表,会自动回到上次看到的位置。 明显我无法教会我舅舅怎么去操作云视听小电视 APP ,但是我算折中能让我舅舅也能一起追更一些合适的 UP 主。 可以直接把整段协议的文本推给电视,也可以把这段协议文本放在一个网页里,直接把这个网页的 URL 推给电视都行。 然后就衍生了两种 URL 的标识:`#JMD` 和 `#JMD+` 只要在包含协议的网页 URL 最后带上这标识就行,电视端拿到这个 URL 标识就会直接尝试解析里面包不包含协议,两者唯一的核心区别就是:要不要持续追更。 `#JMD` 一次性导入。 导入完成以后,这个链接就没有后续任务了。 `#JMD+` 订阅更新。 电视端保存这个地址,之后每次启动 APP ,在合适的时候自动检查一下有没有新的节目 URL 。 如果有,就追加到电视上的节目列表。 比如我这里做了一个电视直播的演示: /ai-market-guide/ 目前这个电视直播频道大全是从 webviewtv 项目里挖到的,安装后手机扫码导入粘贴这个地址就可以把各种电视台都导到电视上了,当然你也可以自己删减,把日常不看的台都删了。 最后其实就是想看看这个东西能不能玩起来 我的想法比较简单:造一个电视端的网页地址管理工具。 至于节目单里面有什么,可以由用户自己添加,也可以由其他人分享制作自己的节目单。 所以也就定义了这个比较简单的格式。 以后如果有人自己 Vibe 转换器,或者做一个自己的节目单生成器,甚至是发个帖子,只要最后输出的内容里包含这个协议格式,就可以直接推送到电视让电视解析出节目单列表。 不需要申请接口,也不需要加入什么官方资源库。 大家能各自管理自己的电视就行。 如果有人 Vibe 出来一些好玩的转换器或者 `#JMD+` 订阅地址,也欢迎部署出来分享。 最理想状态下我希望能慢慢形成一个小的生态,例如可以有一个 V2 宝爸联盟,各位宝爸能一起协作持续整理维护适合各年龄段孩子看的节目清单。 好了,基本上该说的也差不多了。还有很多小的细节期待各位去发现。 下载官网: /ai-market-guide/ 这个东西虽然是 Vibe 出来的,但前前后后至少熬有十几个通宵是在死磕各种小细节,近两个月的时间磨了百来个小版本,现在终于觉得: 差不多可以拿出来见人了。 目前我自己家里、亲戚家已经测试了十几个不同品牌和型号的电视/盒子/投影仪,修掉了一堆奇奇怪怪的问题。(我舅舅已经顺利用上了) 但电视设备的安卓生态实在太碎片化了,我也不知道还有多少问题在等着我。 所以请大家有时间的话能帮我试试。 能用、用不了、哪里有问题,都欢迎反馈。 非常感谢~
市场信息
[分享创造] [送码]为了老人孩子不折腾,自己折腾了一个给老人和孩子用的安卓 TVAPP:节目单
好吧,其实这是一个可以没有用户体系的单机 APP 所以没有码这种东西,只是我让 V2 的 AIChat 帮我参考站内的热帖起一个标题,它建议我用送码当前缀而已。 遥想当年在 V2 上看见 @ HairShort 大佬开源了 WebViewTV ,当时我就惊呼:人才啊,我从来没想过 webview 还能这么玩。
来源:v2ex.com