编注:本期内容为少数派 Matrix 社区应用自荐文章合集。文章代表作者个人观点,作者与文中产品有直接的利益相关(开发者、自家产品等),少数派仅对标题和排版略作修改。
本期目录
ShotClean:Android 自动化管理截图
☎️ Pixel Telo:给「类原生」用户的来电拦截工具
Memosly:Memos 第三方 Android 原生客户端
ShotClean
烧饼 | Android | 应用下载
装上它、然后忘掉它:用 ShotClean 自动化管理截图
▍为什么我要做这个应用
得益于高效优秀的图像分类模型,手机相册在 GPT 和大模型流行起来之前,就已经具备了让 AI 按旅行、人像、宠物类别自动整理,用关键词快速搜索出二维码、账单、甚至特定菜肴等分类和检索特性。
但很多社交媒体应用的图片选择器,往往会把照片、「屏幕截图」以及其他应用保存的图片混合在同一条时间线上供你选择,这当中又以「屏幕截图」最为烦人:它们常作为临时分享的内容,例如文章片段、点餐订单、地图导航、软件 Bug 截图等……我们并不会多次使用,所以过了三五天,这些截图就会变成相册里的「噪声」。
大多数人应对这些「噪声」的方式是攒够了再清或者干脆不管,我甚至听说有人在漫长的飞行时间中无聊没事干也会清理相册来打发时间。在开发这个应用之前我也是干脆不管的那群人,如果某天发现存储塞满了,我才会试着删截图看看能腾出多少空间来。
但现在有了 ShotClean,混乱的相册、无用的截图和存储告急亡羊补牢的体验,从此都可以消失不见。
▍给你的截图「搬个家」
ShotClean 是一款 Android 截图整理工具,它做的事情很简单:把截图从你的系统相册里「搬走」,放到一个你指定好的独立目录中「归档」。如此一来让相册恢复清爽。在设定的保留期之后,ShotClean 才会自动清理掉归档区里的截图。
「隐藏」和「删除」是两种不同的处理方式,ShotClean 把两者结合起来作为「归档」——截图离开了系统相册的时间线、也不会出现在第三方应用的图片选取当中。但这些截图并没有消失,它们在你选定的文件夹里暂存,过期之前可以随时找回来。
我把工作原理总结成了三点:定时自动归档、到期提醒与审查、安全归档存储。
▍整理有序,灵活处理
现代很多 Android 系统截图交互都会在截图后弹出一个悬浮预览,你可以在预览界面中快速分享到微信、微博或者其它社交通讯软件,分享完如果可以快速或自动删除,那截图清理问题本身其实并不存在,我们本不必再另外安装清理工具。
但我们都知道 Android 分享界面使用效率实在低下,在 App 图标海洋快速寻找到目标应用,跳转到目标应用后还要找到联系人发送,有时候还可能会被 Android 原生特性「快速分享」糟糕的延迟更新交互干扰一下——至少对于我来说,我是不太愿意使用悬浮预览截图里的「分享」功能。截图完毕后,我只需要切回刚刚的聊天界面,就能快速、准确地发送出去。
以 Pixel 为例,使用截图预览操作中的分享功能后,这张截图其实并不会被删除
更重要的是,有时候我们分享完截图可能并不会再返回到截图预览或编辑界面。截图就这样留在了相册里。
在截图清理的时间窗口上,ShotClean 换了一种节奏,你不需要在分享后马上就删除截图,所有截图默认保留 30 天,并且刚截好的图不会被立刻处理,它们放在待归档区域内,默认情况下次日深夜才会进入归档队列。归档后当截图真正「过期」时,ShotClean 才会安静地帮你搬走。
可以手动长按将特定图片加入排除范围
所以如果某张截图你实在想多留一阵,也可以手动加入「排除名单」,ShotClean 就不会再碰它;觉得某些截图已经没用了不想等,也可以直接点「提前执行」立刻归档。
▍放心归档,也能随时反悔
点进「归档区」,被搬走的截图按日期排列,缩略图一目了然。这些截图已经从系统相册里移除了——打开 Google 相册或者系统图库不会再看到它们——但它们还在手机里,只是换了个地方。
归档后的截图保存在你自己选定的外部目录中,不依赖 ShotClean 的私有存储。也就是说,即使卸载了这个 App,归档过的文件依然存在,不会因为 App 本身的变化而丢失。在归档区里,你可以恢复任意截图恢复(放回系统相册)或永久删除。如果归档后突然想起某张截图还有用,几秒钟就能找回来。
▍一目了然,但也可以装完即忘
ShotClean 首页直接把几个核心数字摆出来:待归档数量、归档区数量、已排除数量、已发现截图总数、可释放空间大小,底部还有「已清理」和「最近动作」的入口。
同时也显示权限授予状态——媒体访问、媒体管理、通知权限是否已授权一目了然,首次设置时按提示逐项授权,之后就可以让它按天自动运行了。
主页界面
▍让人安心的小设计
用自动化工具管理文件,多少会有点不踏实,考虑到可靠性我加了一些小设计:
每次归档完成后,通知栏会弹出提示,比如「有 21 张截图已归档,点击打开归档区,快速恢复或删除」。不需要打开 App 也能知道刚刚发生了什么。
归档前会先复制再移除,而不是直接删除,即使中途意外中断,原文件也不会丢。
归档结果通知
归档后的截图还有一段保存期(默认 30 天后彻底删除),到期前同样会有通知提醒,让你有机会再看一眼。如果 30 天太短,可以在设置里调整至多 60 天;如果你觉得太长,也可以调整至最短 7 天。
除此以外,设置内还增加了一个日志功能,让你知道 ShotClean 在什么时间点干了什么事情。
▍适合谁、不适合谁
截图量比较大、又不想靠「每周手动清理相册」来维持秩序的人,应该会觉得它有用。如果你打开相册、图片选择器时只想看到照片和视频,它能帮你把截图这块理清楚。
但它专注于截图管理这一个场景,不是大而全的文件清理工具,清理缓存、管理下载文件这些它帮不上忙。
ShotClean 现已上线 Google Play应用商店,欢迎下载体验~
▍写在最后
截图作为一种「临时性内容」,一直有点尴尬——不值得精心管理,但也不该被粗暴删除,大多数相册工具也没有专门对它做什么。ShotClean 的思路是帮它找个合适的落脚点:离开相册的时间线,但还在你能找到的地方。
Pixel Telo
Mystery0 | Android | 下载链接
给「类原生」用户的来电拦截工具:Pixel Telo
▍Pixel 用户的来电拦截问题
在之前,我写过一篇为了在 Pixel 上优雅地看网速,我让 Gemini 帮我写了 90% 的代码 向大家自荐了我开发的Pixel Meter。在那篇文章里我们聊到过,Pixel 与类原生系统在国内常被称为「毛坯房」。
如果说 Pixel Meter 解决的是状态栏的信息焦虑,那么今天我要自荐的新应用 Pixel Telo,解决的则是另一个更让人头疼的本地化缺失——来电识别与骚扰拦截。
在这个信息泄露防不胜防的时代,贷款、房产中介、AI 语音推销的电话总能在你最忙的时候打进来。国内的深度定制 ROM 早已将骚扰拦截做成了系统标配,而 Pixel 虽然有官方的 Screen Call,但在国内由于种种原因基本处于不可用状态。
老一辈的 Pixel 玩家一定都用过 CC 来电拦截 N+(少数派也曾推荐过)。那是一款真正意义上的神器,它简单、纯粹,陪伴了无数类原生用户。但遗憾的是,随着酷安生态的变化和服务器的关停,这款神器如今已无法更新离线数据,甚至连下载都颇为费劲。
每一次接到骚扰电话,都让我无比怀念 CC。既然找不到好用的替代品,作为独立开发者,我决定自己动手,在向 CC 致敬的同时,为 Pixel 补齐这最后一块短板。在某种程度上,你可以将 Pixel Telo 视为 CC 来电拦截精神的继任者。
▍为现代体验重新设计
Pixel Telo 的定位很明确:一款专为 Pixel 和类原生系统打造的、极度轻量且隐私优先的来电辅助工具。 相较于老旧的工具或臃肿的互联网大厂管家,我为它设计了以下核心体验:
拒绝丑陋悬浮窗:系统级静默拦截
在国内 App 普遍喜欢用悬浮窗「刷存在感」的今天,Pixel Telo 选择了克制。它使用了 Android 官方推荐的CallScreeningServiceAPI。这意味着当骚扰电话打进来时,你的屏幕甚至都不会亮起,它会在系统底层直接被静默掐断,把清净还给你的耳朵。
原生拨号盘融合:Directory API
对于那些不确定是否该拦截的电话(比如外卖、快递),Pixel Telo 同样不会弹窗。它通过Directory API,将识别到的标签信息直接注入到系统自带的 Google 拨号器中。
来电界面的体验,就像是 Google 官方原生自带的功能一样自然。
经典传承:自定义黑白名单与号段拦截
和 CC 来电拦截一样,Pixel Telo 同样支持强大的自定义黑白名单功能。除了云端下发的 38 万多条基础骚扰库,你可以根据自己的需求进行精确号码匹配,更支持前缀匹配。
烦透了以95或400开头的营销号?只需要在 App 中添加一个前缀规则,世界瞬间清净。
联网兜底,但不泄露隐私
Pixel Telo 坚持「本地优先」。日常拦截完全依靠本地数据库,即便断网也能秒级响应。
同时 App 也预留了联网查询的口子。目前由于个人难以申请到优质的商业 API,我借鉴了前辈们的思路实现了一个逻辑:通过静默请求搜狗搜索,解析搜索结果中的「电话邦」数据来获取标记。(需要说明的是,这个巧妙的方案并非我的首创,而是社区智慧的结晶)。
在我的实测中,这种方式能非常精准地识别出外卖骑手等动态号码。当然,所有查询动作都不涉及你的本地通讯录,隐私零泄露。
现代化设计与数据备份
作为一款 Pixel 专属应用,全面适配 Material Design 3 (Monet) 动态取色是必须的,它的界面会随你的壁纸优雅变色。此外,考虑到未来可能的换机需求(虽然大家换机不频繁,但有备无患),App 内置了拦截记录的 ZIP 备份与恢复功能,数据永远掌握在你自己手里。
首页拦截记录和设置界面
▍AI 再次赋能:Pixel Telo 的诞生
我在上一篇文章中提到过,AI 时代的到来彻底改变了个人开发的门槛。
完成 Pixel Meter 的开发之后,我列出了几个我想要自己写 APP 来实现的想法,Pixel Telo 就是其中之一。与之前开发 Pixel Meter 时完全依赖 Antigravity 不同,这一次,我频繁穿梭在 Gemini 和 Claude Code 之间,我发现 Claude Code 在编码场景下确实比 Gemini 更胜一筹,因此我决定「压榨」它们各自的优势:
构思阶段:我依然使用 Gemini 网页版和我讨论 APP 的需求和构思。在这个阶段,Gemini 会尽可能地发散思维提出一些有趣的建议或者方案,在讨论得差不多之后,我让 Gemini 输出了一份 PRD 文档。
基建搭建:我先使用 Android Studio 创建了一个空项目,然后在 Claude Code 中打开这个项目,让 Claude 按照 PRD 文档帮我执行一些基础的初始化和大部分代码的生成,在这个过程中我会问它有没有理解项目的需求,如果没有理解以咨询的形式向我提问。
功能打磨:接下来继续在终端使用 Claude Code,让它帮我继续完善剩下的功能细节,比如对接网络搜索的解析、数据库升级的逻辑等等,涉及到调试的步骤都切换到 Android Studio 进行编译和运行。
UI 设计:在设计图标的时候,我最初尝试直接在 Antigravity 中让 Gemini 生成图片,但效果相较于网页版很差。于是我果断切回 Gemini 网页版,让它帮我修改 SVG 图标,甚至让它给我配色建议。
为了让大家更直观地了解这种「多模型协作」的模式,我画了一张简单的流程图:
一点个人的 AI 结对编程感悟:在我的体验中,Claude Code 适合做编码工作,而 Gemini 适合做秘书。
Claude Code 生成的代码会很完善,基本上不会留下一些Stub或者TODO标识让你去补全。而 Gemini 在面对复杂需求时,经常会写一些空实现,然后留个TODO让你自己写(这也许是 Claude Code 拥有superpower skills直接读写文件的功劳)。
但是,到了实现 UI 界面、生成图片场景,或者需要提供设计建议时,Claude Code 就明显不如 Gemini 聪明了。甚至在 App 图标的配色上,我都在让 Gemini 给我出谋划策。
▍如何获取
为了保证离线数据库的更新,我部署了一个服务端,未来也规划允许高级用户自建服务端的功能,避免重蹈旧时代工具停服的覆辙。
Pixel Telo 现已正式上架 Google Play,你可以直接搜索 Pixel Telo 下载。
同时,我也建立了一个公开的 GitHub 仓库 用于发布 APK 安装包以及接收大家的 Issue 反馈。如果你也是国内的 Pixel 或类原生系统用户,正被骚扰电话困扰,不妨试试这款向经典致敬、又融入了现代设计的工具。
欢迎在评论区或 GitHub 留下你的建议,我会持续优化它。
Memosly
whtis | Android | 下载地址
Memosly — 我给 Memos 写了一个 Android 原生客户端
▍为什么要造这个轮子
我用 Memos 几年了。
对于熟悉自托管生态的人来说,Memos 不需要过多介绍——一个开源的、可自部署的轻量备忘录服务,数据完全掌握在自己手里,没有账号体系绑定,没有云端锁定,Docker 一行命令就能跑起来。它解决的问题很简单:快速记下脑子里的东西。服务端功能够用,但是有个问题,更新很快,且不向前兼容,安卓的三方客户端经常会用不了,需要等待升级。
随着 AI 能力的升级,我借助 claude code,写了一个新的安卓客户端,项目叫Memosly,已经开源在 GitHub 上,目前也已经上架 Google Play 内测。
▍核心功能一览 完整的备忘录管理
作为 Memos 客户端,基础功能必须稳:
新建、编辑、归档、删除
可见性设置(公开 / 保护 / 私密)
+ 快速筛选全文搜索
这些在 Web 端能做的事,Memosly 里都能做,而且因为是原生 App,操作体感明显更流畅。
备忘录首页
Markdown 编辑器
编辑器支持完整的 Markdown 语法——标题、列表、代码块、表格、任务清单。底部有一排格式工具栏,不用记语法也能快速排版。
Markdown 编辑
多媒体附件
图片、视频、文件都能上传。图片会在备忘卡片里内联显示,视频支持全屏播放,其他文件类型以附件芯片形式展示,点击即可下载。
编辑已有备忘时,之前上传的附件也会正确显示在预览条里——这个看似理所当然的功能,实现起来其实踩了不少坑。
详情页
社区互动
如果你和朋友共用一个 Memos 实例,「发现」页面可以浏览所有人的公开备忘。支持 Emoji 表情回应和评论。轻量级的社交功能,不喧宾夺主。
发现页
多种登录方式
支持两种登录方式:
- 用户名密码登录:最传统的方式
- Access Token 登录:适合 OIDC/SSO 用户,在 Memos Web 端生成一个 Token 就能登录
登录页可选版本
▍真正的难点:三版本兼容
如果你关注 Memos 的开发,你会知道它的 API 在版本间变化很大。这里「很大」不是客气话——我列几个例子:
连登录流程都完全不一样:v0.24 用 Query 参数 + JWT Cookie,v0.25 用 JSON body + Session Cookie,v0.26 又回到了 JSON body 但改用 Response body 里的 Access Token。
Memosly 同时兼容这三个版本。登录时选择服务器版本,之后所有 API 调用都会自动走对应版本的分支逻辑。不管你的服务端停留在哪个版本,装上就能用。
这也是这个项目最花时间的部分——功能开发可能只占 40%,版本兼容和边界情况处理占了 60%。
▍一些有趣的技术细节
既然是投稿少数派,聊点实现层面的东西,可能对同样在做 Android 开发或对接 REST API 的朋友有参考价值。
gRPC-gateway 的 base64 陷阱
Memos 的后端用的是 gRPC,通过 gRPC-gateway 暴露 REST API。一个容易踩的坑是:文件上传不是 multipart form data,而是 JSON body,文件内容用 base64 编码。因为 gRPC-gateway 会把 protobuf 的bytes字段自动映射成 base64 字符串。
如果你按照常规思路用@Multipart去上传,服务端会直接返回 400。
Android 进程死亡与 Token 恢复
Android 系统会在内存紧张时杀掉后台进程,但 Navigation 组件会恢复回退栈。这导致一个隐蔽的 Bug:App 被杀后重新打开,直接跳到主页面(跳过了登录页),但内存里的 Token 已经丢了,所有 API 请求都会 401。
解决方案:Token 管理器在构造函数里就从持久化存储恢复 Token,而不是等到某个页面触发时才读取。这个模式适用于所有「内存单例 + 认证状态」的场景。
视频附件不走 Markdown
Memos 的 Web 端对图片和视频的处理方式不同:图片用嵌入 Markdown 内容,但视频不嵌入Markdown,而是通过独立的资源关联 API 绑定。
这意味着你不能用正则从 Markdown 内容里解析出视频附件——必须用 API 返回的resources列表。这个坑我踩了一次,希望后来人能绕过去。
▍体验与设计
- Material You 设计语言:支持 Android 12+ 的动态取色
- 深色模式:跟随系统
- 两种导航风格:底部标签栏或 侧边抽屉,设置里切换
- 中英双语:跟随系统或手动指定
下拉刷新、分页加载、相对时间戳
没有花哨的动效,就是一个用起来顺手的工具 App。
▍下载与参与
下载安装:
Google Play(内测中,正在凑人数满足上架条件)
GitHub Releases(APK 直接下载)
加入内测:
如果你愿意帮助我尽快上架,可以私聊我你的 gmail,不甚感激!
反馈问题:
GitHub Issues
GitHub Discussions
反馈时请注明你的 Memos 服务端版本(v0.24 / v0.25 / v0.26),这对排查问题帮助很大。
源码:github.com/whtis/memosly-android
▍写在最后
做这个 App 的初衷很简单:自己用 Memos,手机上需要一个好用的客户端,没找到合适的,就写了一个。开源出来,是因为 Memos 社区本身就是开源精神的产物,我也想把这份便利分享给更多人。
如果你也是 Memos 用户,欢迎试试 Memosly。用得顺手的话,去 GitHub 点个 Star 就是最好的支持。
热门跟贴