![]()
編注:本期內(nèi)容為少數(shù)派 Matrix 社區(qū)應(yīng)用自薦文章合集。文章代表作者個人觀點,作者與文中產(chǎn)品有直接的利益相關(guān)(開發(fā)者、自家產(chǎn)品等),少數(shù)派僅對標(biāo)題和排版略作修改。
本期目錄
ShotClean:Android 自動化管理截圖
?? Pixel Telo:給「類原生」用戶的來電攔截工具
Memosly:Memos 第三方 Android 原生客戶端
![]()
ShotClean
? 燒餅 | Android | 應(yīng)用下載
裝上它、然后忘掉它:用 ShotClean 自動化管理截圖
▍為什么我要做這個應(yīng)用
得益于高效優(yōu)秀的圖像分類模型,手機相冊在 GPT 和大模型流行起來之前,就已經(jīng)具備了讓 AI 按旅行、人像、寵物類別自動整理,用關(guān)鍵詞快速搜索出二維碼、賬單、甚至特定菜肴等分類和檢索特性。
但很多社交媒體應(yīng)用的圖片選擇器,往往會把照片、「屏幕截圖」以及其他應(yīng)用保存的圖片混合在同一條時間線上供你選擇,這當(dāng)中又以「屏幕截圖」最為煩人:它們常作為臨時分享的內(nèi)容,例如文章片段、點餐訂單、地圖導(dǎo)航、軟件 Bug 截圖等……我們并不會多次使用,所以過了三五天,這些截圖就會變成相冊里的「噪聲」。
大多數(shù)人應(yīng)對這些「噪聲」的方式是攢夠了再清或者干脆不管,我甚至聽說有人在漫長的飛行時間中無聊沒事干也會清理相冊來打發(fā)時間。在開發(fā)這個應(yīng)用之前我也是干脆不管的那群人,如果某天發(fā)現(xiàn)存儲塞滿了,我才會試著刪截圖看看能騰出多少空間來。
但現(xiàn)在有了 ShotClean,混亂的相冊、無用的截圖和存儲告急亡羊補牢的體驗,從此都可以消失不見。
▍給你的截圖「搬個家」
ShotClean 是一款 Android 截圖整理工具,它做的事情很簡單:把截圖從你的系統(tǒng)相冊里「搬走」,放到一個你指定好的獨立目錄中「歸檔」。如此一來讓相冊恢復(fù)清爽。在設(shè)定的保留期之后,ShotClean 才會自動清理掉歸檔區(qū)里的截圖。
「隱藏」和「刪除」是兩種不同的處理方式,ShotClean 把兩者結(jié)合起來作為「歸檔」——截圖離開了系統(tǒng)相冊的時間線、也不會出現(xiàn)在第三方應(yīng)用的圖片選取當(dāng)中。但這些截圖并沒有消失,它們在你選定的文件夾里暫存,過期之前可以隨時找回來。
我把工作原理總結(jié)成了三點:定時自動歸檔、到期提醒與審查、安全歸檔存儲。
![]()
▍整理有序,靈活處理
現(xiàn)代很多 Android 系統(tǒng)截圖交互都會在截圖后彈出一個懸浮預(yù)覽,你可以在預(yù)覽界面中快速分享到微信、微博或者其它社交通訊軟件,分享完如果可以快速或自動刪除,那截圖清理問題本身其實并不存在,我們本不必再另外安裝清理工具。
但我們都知道 Android 分享界面使用效率實在低下,在 App 圖標(biāo)海洋快速尋找到目標(biāo)應(yīng)用,跳轉(zhuǎn)到目標(biāo)應(yīng)用后還要找到聯(lián)系人發(fā)送,有時候還可能會被 Android 原生特性「快速分享」糟糕的延遲更新交互干擾一下——至少對于我來說,我是不太愿意使用懸浮預(yù)覽截圖里的「分享」功能。截圖完畢后,我只需要切回剛剛的聊天界面,就能快速、準(zhǔn)確地發(fā)送出去。
![]()
以 Pixel 為例,使用截圖預(yù)覽操作中的分享功能后,這張截圖其實并不會被刪除
更重要的是,有時候我們分享完截圖可能并不會再返回到截圖預(yù)覽或編輯界面。截圖就這樣留在了相冊里。
在截圖清理的時間窗口上,ShotClean 換了一種節(jié)奏,你不需要在分享后馬上就刪除截圖,所有截圖默認(rèn)保留 30 天,并且剛截好的圖不會被立刻處理,它們放在待歸檔區(qū)域內(nèi),默認(rèn)情況下次日深夜才會進入歸檔隊列。歸檔后當(dāng)截圖真正「過期」時,ShotClean 才會安靜地幫你搬走。
![]()
可以手動長按將特定圖片加入排除范圍
所以如果某張截圖你實在想多留一陣,也可以手動加入「排除名單」,ShotClean 就不會再碰它;覺得某些截圖已經(jīng)沒用了不想等,也可以直接點「提前執(zhí)行」立刻歸檔。
▍放心歸檔,也能隨時反悔
點進「歸檔區(qū)」,被搬走的截圖按日期排列,縮略圖一目了然。這些截圖已經(jīng)從系統(tǒng)相冊里移除了——打開 Google 相冊或者系統(tǒng)圖庫不會再看到它們——但它們還在手機里,只是換了個地方。
歸檔后的截圖保存在你自己選定的外部目錄中,不依賴 ShotClean 的私有存儲。也就是說,即使卸載了這個 App,歸檔過的文件依然存在,不會因為 App 本身的變化而丟失。在歸檔區(qū)里,你可以恢復(fù)任意截圖恢復(fù)(放回系統(tǒng)相冊)或永久刪除。如果歸檔后突然想起某張截圖還有用,幾秒鐘就能找回來。
![]()
▍一目了然,但也可以裝完即忘
ShotClean 首頁直接把幾個核心數(shù)字?jǐn)[出來:待歸檔數(shù)量、歸檔區(qū)數(shù)量、已排除數(shù)量、已發(fā)現(xiàn)截圖總數(shù)、可釋放空間大小,底部還有「已清理」和「最近動作」的入口。
同時也顯示權(quán)限授予狀態(tài)——媒體訪問、媒體管理、通知權(quán)限是否已授權(quán)一目了然,首次設(shè)置時按提示逐項授權(quán),之后就可以讓它按天自動運行了。
![]()
主頁界面
▍讓人安心的小設(shè)計
用自動化工具管理文件,多少會有點不踏實,考慮到可靠性我加了一些小設(shè)計:
每次歸檔完成后,通知欄會彈出提示,比如「有 21 張截圖已歸檔,點擊打開歸檔區(qū),快速恢復(fù)或刪除」。不需要打開 App 也能知道剛剛發(fā)生了什么。
歸檔前會先復(fù)制再移除,而不是直接刪除,即使中途意外中斷,原文件也不會丟。
![]()
歸檔結(jié)果通知
歸檔后的截圖還有一段保存期(默認(rèn) 30 天后徹底刪除),到期前同樣會有通知提醒,讓你有機會再看一眼。如果 30 天太短,可以在設(shè)置里調(diào)整至多 60 天;如果你覺得太長,也可以調(diào)整至最短 7 天。
除此以外,設(shè)置內(nèi)還增加了一個日志功能,讓你知道 ShotClean 在什么時間點干了什么事情。
▍適合誰、不適合誰
截圖量比較大、又不想靠「每周手動清理相冊」來維持秩序的人,應(yīng)該會覺得它有用。如果你打開相冊、圖片選擇器時只想看到照片和視頻,它能幫你把截圖這塊理清楚。
但它專注于截圖管理這一個場景,不是大而全的文件清理工具,清理緩存、管理下載文件這些它幫不上忙。
ShotClean 現(xiàn)已上線 Google Play應(yīng)用商店,歡迎下載體驗~
▍寫在最后
截圖作為一種「臨時性內(nèi)容」,一直有點尷尬——不值得精心管理,但也不該被粗暴刪除,大多數(shù)相冊工具也沒有專門對它做什么。ShotClean 的思路是幫它找個合適的落腳點:離開相冊的時間線,但還在你能找到的地方。
![]()
Pixel Telo
? Mystery0 | Android | 下載鏈接
給「類原生」用戶的來電攔截工具:Pixel Telo
▍Pixel 用戶的來電攔截問題
在之前,我寫過一篇為了在 Pixel 上優(yōu)雅地看網(wǎng)速,我讓 Gemini 幫我寫了 90% 的代碼 向大家自薦了我開發(fā)的Pixel Meter。在那篇文章里我們聊到過,Pixel 與類原生系統(tǒng)在國內(nèi)常被稱為「毛坯房」。
如果說 Pixel Meter 解決的是狀態(tài)欄的信息焦慮,那么今天我要自薦的新應(yīng)用 Pixel Telo,解決的則是另一個更讓人頭疼的本地化缺失——來電識別與騷擾攔截。
在這個信息泄露防不勝防的時代,貸款、房產(chǎn)中介、AI 語音推銷的電話總能在你最忙的時候打進來。國內(nèi)的深度定制 ROM 早已將騷擾攔截做成了系統(tǒng)標(biāo)配,而 Pixel 雖然有官方的 Screen Call,但在國內(nèi)由于種種原因基本處于不可用狀態(tài)。
老一輩的 Pixel 玩家一定都用過 CC 來電攔截 N+(少數(shù)派也曾推薦過)。那是一款真正意義上的神器,它簡單、純粹,陪伴了無數(shù)類原生用戶。但遺憾的是,隨著酷安生態(tài)的變化和服務(wù)器的關(guān)停,這款神器如今已無法更新離線數(shù)據(jù),甚至連下載都頗為費勁。
每一次接到騷擾電話,都讓我無比懷念 CC。既然找不到好用的替代品,作為獨立開發(fā)者,我決定自己動手,在向 CC 致敬的同時,為 Pixel 補齊這最后一塊短板。在某種程度上,你可以將 Pixel Telo 視為 CC 來電攔截精神的繼任者。
▍為現(xiàn)代體驗重新設(shè)計
Pixel Telo 的定位很明確:一款專為 Pixel 和類原生系統(tǒng)打造的、極度輕量且隱私優(yōu)先的來電輔助工具。 相較于老舊的工具或臃腫的互聯(lián)網(wǎng)大廠管家,我為它設(shè)計了以下核心體驗:
拒絕丑陋懸浮窗:系統(tǒng)級靜默攔截
在國內(nèi) App 普遍喜歡用懸浮窗「刷存在感」的今天,Pixel Telo 選擇了克制。它使用了 Android 官方推薦的CallScreeningServiceAPI。這意味著當(dāng)騷擾電話打進來時,你的屏幕甚至都不會亮起,它會在系統(tǒng)底層直接被靜默掐斷,把清凈還給你的耳朵。
原生撥號盤融合:Directory API
對于那些不確定是否該攔截的電話(比如外賣、快遞),Pixel Telo 同樣不會彈窗。它通過Directory API,將識別到的標(biāo)簽信息直接注入到系統(tǒng)自帶的 Google 撥號器中。
來電界面的體驗,就像是 Google 官方原生自帶的功能一樣自然。
經(jīng)典傳承:自定義黑白名單與號段攔截
和 CC 來電攔截一樣,Pixel Telo 同樣支持強大的自定義黑白名單功能。除了云端下發(fā)的 38 萬多條基礎(chǔ)騷擾庫,你可以根據(jù)自己的需求進行精確號碼匹配,更支持前綴匹配。
煩透了以95或400開頭的營銷號?只需要在 App 中添加一個前綴規(guī)則,世界瞬間清凈。
聯(lián)網(wǎng)兜底,但不泄露隱私
Pixel Telo 堅持「本地優(yōu)先」。日常攔截完全依靠本地數(shù)據(jù)庫,即便斷網(wǎng)也能秒級響應(yīng)。
同時 App 也預(yù)留了聯(lián)網(wǎng)查詢的口子。目前由于個人難以申請到優(yōu)質(zhì)的商業(yè) API,我借鑒了前輩們的思路實現(xiàn)了一個邏輯:通過靜默請求搜狗搜索,解析搜索結(jié)果中的「電話邦」數(shù)據(jù)來獲取標(biāo)記。(需要說明的是,這個巧妙的方案并非我的首創(chuàng),而是社區(qū)智慧的結(jié)晶)。
在我的實測中,這種方式能非常精準(zhǔn)地識別出外賣騎手等動態(tài)號碼。當(dāng)然,所有查詢動作都不涉及你的本地通訊錄,隱私零泄露。
現(xiàn)代化設(shè)計與數(shù)據(jù)備份
作為一款 Pixel 專屬應(yīng)用,全面適配 Material Design 3 (Monet) 動態(tài)取色是必須的,它的界面會隨你的壁紙優(yōu)雅變色。此外,考慮到未來可能的換機需求(雖然大家換機不頻繁,但有備無患),App 內(nèi)置了攔截記錄的 ZIP 備份與恢復(fù)功能,數(shù)據(jù)永遠(yuǎn)掌握在你自己手里。
![]()
首頁攔截記錄和設(shè)置界面
▍AI 再次賦能:Pixel Telo 的誕生
我在上一篇文章中提到過,AI 時代的到來徹底改變了個人開發(fā)的門檻。
完成 Pixel Meter 的開發(fā)之后,我列出了幾個我想要自己寫 APP 來實現(xiàn)的想法,Pixel Telo 就是其中之一。與之前開發(fā) Pixel Meter 時完全依賴 Antigravity 不同,這一次,我頻繁穿梭在 Gemini 和 Claude Code 之間,我發(fā)現(xiàn) Claude Code 在編碼場景下確實比 Gemini 更勝一籌,因此我決定「壓榨」它們各自的優(yōu)勢:
構(gòu)思階段:我依然使用 Gemini 網(wǎng)頁版和我討論 APP 的需求和構(gòu)思。在這個階段,Gemini 會盡可能地發(fā)散思維提出一些有趣的建議或者方案,在討論得差不多之后,我讓 Gemini 輸出了一份 PRD 文檔。
基建搭建:我先使用 Android Studio 創(chuàng)建了一個空項目,然后在 Claude Code 中打開這個項目,讓 Claude 按照 PRD 文檔幫我執(zhí)行一些基礎(chǔ)的初始化和大部分代碼的生成,在這個過程中我會問它有沒有理解項目的需求,如果沒有理解以咨詢的形式向我提問。
功能打磨:接下來繼續(xù)在終端使用 Claude Code,讓它幫我繼續(xù)完善剩下的功能細(xì)節(jié),比如對接網(wǎng)絡(luò)搜索的解析、數(shù)據(jù)庫升級的邏輯等等,涉及到調(diào)試的步驟都切換到 Android Studio 進行編譯和運行。
UI 設(shè)計:在設(shè)計圖標(biāo)的時候,我最初嘗試直接在 Antigravity 中讓 Gemini 生成圖片,但效果相較于網(wǎng)頁版很差。于是我果斷切回 Gemini 網(wǎng)頁版,讓它幫我修改 SVG 圖標(biāo),甚至讓它給我配色建議。
為了讓大家更直觀地了解這種「多模型協(xié)作」的模式,我畫了一張簡單的流程圖:
![]()
一點個人的 AI 結(jié)對編程感悟:在我的體驗中,Claude Code 適合做編碼工作,而 Gemini 適合做秘書。
Claude Code 生成的代碼會很完善,基本上不會留下一些Stub或者TODO標(biāo)識讓你去補全。而 Gemini 在面對復(fù)雜需求時,經(jīng)常會寫一些空實現(xiàn),然后留個TODO讓你自己寫(這也許是 Claude Code 擁有superpower skills直接讀寫文件的功勞)。
但是,到了實現(xiàn) UI 界面、生成圖片場景,或者需要提供設(shè)計建議時,Claude Code 就明顯不如 Gemini 聰明了。甚至在 App 圖標(biāo)的配色上,我都在讓 Gemini 給我出謀劃策。
▍如何獲取
為了保證離線數(shù)據(jù)庫的更新,我部署了一個服務(wù)端,未來也規(guī)劃允許高級用戶自建服務(wù)端的功能,避免重蹈舊時代工具停服的覆轍。
Pixel Telo 現(xiàn)已正式上架 Google Play,你可以直接搜索 Pixel Telo 下載。
同時,我也建立了一個公開的 GitHub 倉庫 用于發(fā)布 APK 安裝包以及接收大家的 Issue 反饋。如果你也是國內(nèi)的 Pixel 或類原生系統(tǒng)用戶,正被騷擾電話困擾,不妨試試這款向經(jīng)典致敬、又融入了現(xiàn)代設(shè)計的工具。
歡迎在評論區(qū)或 GitHub 留下你的建議,我會持續(xù)優(yōu)化它。
![]()
Memosly
? whtis | Android | 下載地址
Memosly — 我給 Memos 寫了一個 Android 原生客戶端
▍為什么要造這個輪子
我用 Memos 幾年了。
對于熟悉自托管生態(tài)的人來說,Memos 不需要過多介紹——一個開源的、可自部署的輕量備忘錄服務(wù),數(shù)據(jù)完全掌握在自己手里,沒有賬號體系綁定,沒有云端鎖定,Docker 一行命令就能跑起來。它解決的問題很簡單:快速記下腦子里的東西。服務(wù)端功能夠用,但是有個問題,更新很快,且不向前兼容,安卓的三方客戶端經(jīng)常會用不了,需要等待升級。
隨著 AI 能力的升級,我借助 claude code,寫了一個新的安卓客戶端,項目叫Memosly,已經(jīng)開源在 GitHub 上,目前也已經(jīng)上架 Google Play 內(nèi)測。
▍核心功能一覽 完整的備忘錄管理
作為 Memos 客戶端,基礎(chǔ)功能必須穩(wěn):
新建、編輯、歸檔、刪除
可見性設(shè)置(公開 / 保護 / 私密)
+ 快速篩選全文搜索
這些在 Web 端能做的事,Memosly 里都能做,而且因為是原生 App,操作體感明顯更流暢。
![]()
備忘錄首頁
Markdown 編輯器
編輯器支持完整的 Markdown 語法——標(biāo)題、列表、代碼塊、表格、任務(wù)清單。底部有一排格式工具欄,不用記語法也能快速排版。
![]()
Markdown 編輯
多媒體附件
圖片、視頻、文件都能上傳。圖片會在備忘卡片里內(nèi)聯(lián)顯示,視頻支持全屏播放,其他文件類型以附件芯片形式展示,點擊即可下載。
編輯已有備忘時,之前上傳的附件也會正確顯示在預(yù)覽條里——這個看似理所當(dāng)然的功能,實現(xiàn)起來其實踩了不少坑。
![]()
詳情頁
社區(qū)互動
如果你和朋友共用一個 Memos 實例,「發(fā)現(xiàn)」頁面可以瀏覽所有人的公開備忘。支持 Emoji 表情回應(yīng)和評論。輕量級的社交功能,不喧賓奪主。
![]()
發(fā)現(xiàn)頁
多種登錄方式
支持兩種登錄方式:
- 用戶名密碼登錄:最傳統(tǒng)的方式
- Access Token 登錄:適合 OIDC/SSO 用戶,在 Memos Web 端生成一個 Token 就能登錄
![]()
登錄頁可選版本
▍真正的難點:三版本兼容
如果你關(guān)注 Memos 的開發(fā),你會知道它的 API 在版本間變化很大。這里「很大」不是客氣話——我列幾個例子:
![]()
連登錄流程都完全不一樣:v0.24 用 Query 參數(shù) + JWT Cookie,v0.25 用 JSON body + Session Cookie,v0.26 又回到了 JSON body 但改用 Response body 里的 Access Token。
Memosly 同時兼容這三個版本。登錄時選擇服務(wù)器版本,之后所有 API 調(diào)用都會自動走對應(yīng)版本的分支邏輯。不管你的服務(wù)端停留在哪個版本,裝上就能用。
這也是這個項目最花時間的部分——功能開發(fā)可能只占 40%,版本兼容和邊界情況處理占了 60%。
▍一些有趣的技術(shù)細(xì)節(jié)
既然是投稿少數(shù)派,聊點實現(xiàn)層面的東西,可能對同樣在做 Android 開發(fā)或?qū)?REST API 的朋友有參考價值。
gRPC-gateway 的 base64 陷阱
Memos 的后端用的是 gRPC,通過 gRPC-gateway 暴露 REST API。一個容易踩的坑是:文件上傳不是 multipart form data,而是 JSON body,文件內(nèi)容用 base64 編碼。因為 gRPC-gateway 會把 protobuf 的bytes字段自動映射成 base64 字符串。
如果你按照常規(guī)思路用@Multipart去上傳,服務(wù)端會直接返回 400。
Android 進程死亡與 Token 恢復(fù)
Android 系統(tǒng)會在內(nèi)存緊張時殺掉后臺進程,但 Navigation 組件會恢復(fù)回退棧。這導(dǎo)致一個隱蔽的 Bug:App 被殺后重新打開,直接跳到主頁面(跳過了登錄頁),但內(nèi)存里的 Token 已經(jīng)丟了,所有 API 請求都會 401。
解決方案:Token 管理器在構(gòu)造函數(shù)里就從持久化存儲恢復(fù) Token,而不是等到某個頁面觸發(fā)時才讀取。這個模式適用于所有「內(nèi)存單例 + 認(rèn)證狀態(tài)」的場景。
視頻附件不走 Markdown
Memos 的 Web 端對圖片和視頻的處理方式不同:圖片用嵌入 Markdown 內(nèi)容,但視頻不嵌入Markdown,而是通過獨立的資源關(guān)聯(lián) API 綁定。
這意味著你不能用正則從 Markdown 內(nèi)容里解析出視頻附件——必須用 API 返回的resources列表。這個坑我踩了一次,希望后來人能繞過去。
▍體驗與設(shè)計
- Material You 設(shè)計語言:支持 Android 12+ 的動態(tài)取色
- 深色模式:跟隨系統(tǒng)
- 兩種導(dǎo)航風(fēng)格:底部標(biāo)簽欄或 側(cè)邊抽屜,設(shè)置里切換
- 中英雙語:跟隨系統(tǒng)或手動指定
下拉刷新、分頁加載、相對時間戳
沒有花哨的動效,就是一個用起來順手的工具 App。
![]()
![]()
▍下載與參與
下載安裝:
Google Play(內(nèi)測中,正在湊人數(shù)滿足上架條件)
GitHub Releases(APK 直接下載)
加入內(nèi)測:
如果你愿意幫助我盡快上架,可以私聊我你的 gmail,不甚感激!
反饋問題:
GitHub Issues
GitHub Discussions
反饋時請注明你的 Memos 服務(wù)端版本(v0.24 / v0.25 / v0.26),這對排查問題幫助很大。
源碼:github.com/whtis/memosly-android
▍寫在最后
做這個 App 的初衷很簡單:自己用 Memos,手機上需要一個好用的客戶端,沒找到合適的,就寫了一個。開源出來,是因為 Memos 社區(qū)本身就是開源精神的產(chǎn)物,我也想把這份便利分享給更多人。
如果你也是 Memos 用戶,歡迎試試 Memosly。用得順手的話,去 GitHub 點個 Star 就是最好的支持。
![]()
![]()
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.