android设置title_所见即所得的 Android 自动化神器,用 Automate 一键收藏文章
試想一下這樣的情景:
第一次見(jiàn)到上述流程,很多人可能都會(huì)覺(jué)得看上去「很酷」。自動(dòng)化一直是玩機(jī)社區(qū)樂(lè)此不疲的話題,在 iOS 上我們有捷徑和捷徑社區(qū),在 Android 上很多人也許會(huì)想到 Tasker —— 那個(gè)每每下載安裝決定大干一場(chǎng),卻往往都無(wú)疾而終「從入門到放棄」的傳奇應(yīng)用。
其實(shí) Android 上的自動(dòng)化可以不用這么難,選擇也遠(yuǎn)非 Tasker 這一種。
Automate:流程可視化,所見(jiàn)即所得
Automate 是我自己在用的方案,功能方面它不輸 Tasker,可視化流程則有效降低了自己動(dòng)手操作的門檻。
誠(chéng)如它的名字所言,Automate 想要讓你的 Android 設(shè)備「自動(dòng)化」地完成任務(wù)。為了實(shí)現(xiàn)這個(gè)小目標(biāo),Automate 擁有各種各樣的能力,它既可以充分調(diào)用 Android 設(shè)備的傳感器和其他硬件,也可以直接監(jiān)聽(tīng)并控制系統(tǒng)中的設(shè)置與事件。
上面左圖展示了 Automate 中的一些模塊,中圖是「調(diào)整音量」模塊的配置,右圖則是流程的表現(xiàn)形式。
Automate 采用類似「流程圖」的編寫(xiě)方式,可謂「所見(jiàn)即所得」。根據(jù)自己構(gòu)想,選取合適的功能模塊,按順序排好,并進(jìn)行簡(jiǎn)單的配置,一個(gè)自動(dòng)化流程就完成了。
下圖展示了前面所說(shuō)的第 5 種情景,使用短信來(lái)尋找手機(jī)。可以看到,我一共使用了 6 個(gè)模塊就完成了這項(xiàng)工作。這個(gè)流程非常便于理解:首先接收 SMS 短信,如果包含「你在哪里」就取消靜音、調(diào)高音量到 100、播放聲音文件。就這么簡(jiǎn)單。
最佳實(shí)踐——快速收藏文章
為了進(jìn)一步展示 Automate 的實(shí)力,除了上面提到的「找手機(jī)」,這里我們不妨再思考另一個(gè)需求:如何收納你曾閱讀的網(wǎng)頁(yè)、文章,如何更加方便地「點(diǎn)擊即收藏」,把它們歸于一處?
作為 Android 上最好用的自動(dòng)化工具之一,Automate 以十分清晰的「流程圖」方式,為我們方便而快速地「收藏文章」提供了極好的解決方案。
挑選書(shū)簽托管服務(wù)
首先我們要解決的「收藏放哪里」的問(wèn)題。
書(shū)簽管理的方式有很多,用 IE 的時(shí)候,我們就有「收藏夾」的說(shuō)法;但我要是想換一臺(tái)電腦,收藏夾遷移就變得很麻煩,于是許多瀏覽器又有了「賬戶同步」的功能。不過(guò)說(shuō)來(lái)說(shuō)去,瀏覽器書(shū)簽操作方便,在同步、展示、整理等方面還是比較局限。
我們不妨看看現(xiàn)目前比較流行的幾個(gè)在線書(shū)簽服務(wù):成都的 Diigo 一直面向海外客戶,年費(fèi) 40 刀,不僅可以存檔網(wǎng)頁(yè),還可以進(jìn)行批注;Pinboard 極簡(jiǎn)的網(wǎng)頁(yè)設(shè)計(jì)吸引了非常多的用戶,目前基礎(chǔ)年費(fèi) 11 刀,也可以花 20 刀來(lái)保存網(wǎng)頁(yè)正文。
一眾「稍后閱讀」服務(wù)則從另一個(gè)角度提供了解決方案。
Pocket 和 Instapaper 都支持自動(dòng)獲取網(wǎng)頁(yè)全文,并可以在手機(jī)上離線下載,這一方面在流量費(fèi)用昂貴的當(dāng)年為「刷手機(jī)」提供了便利,另一方面由于讀過(guò)的網(wǎng)頁(yè)會(huì)一直保留,它們也逐漸成為許多人保存網(wǎng)頁(yè)的工具,而更多的人把網(wǎng)頁(yè)丟進(jìn)「稍后閱讀」,結(jié)果就「再也不讀」了。
而 Evernote、Onenote 等筆記服務(wù)似乎可以算作獨(dú)辟蹊徑了,它們紛紛推出了全平臺(tái)的瀏覽器插件,剪輯網(wǎng)頁(yè)正文并保存下來(lái),這件事反而成為了很多人使用筆記服務(wù)的最大用途。
準(zhǔn)備基于 HTTP 的 API 接口
要實(shí)現(xiàn)自動(dòng)化,一套可供調(diào)用的 API 也是必不可少的。Diigo、Pinboard、Pocket 和 Instapaper 都有比較完善的 API 可供調(diào)用,并且都只需要借助 HTTP 來(lái)實(shí)現(xiàn),非常方便。
我們今天以 Instapaper 為例:它的 API 分成 簡(jiǎn)單版 和 完整版 兩套,如果只是需要「添加書(shū)簽」,使用簡(jiǎn)單版足矣。具體而言,當(dāng)需要收藏一個(gè)書(shū)簽時(shí),我們可以直接調(diào)用如下的 URL:
https://www.instapaper.com/api/add這個(gè) API 通過(guò) POST 方法使用,消息體包含兩個(gè)參數(shù):
同時(shí),為了表明身份,我們會(huì)加入一段驗(yàn)證,通過(guò) HTTP 頭傳入我們的賬戶名稱和密碼。
總體設(shè)計(jì):三縱合一
在 Automate 中最終編輯完成的工作流大概長(zhǎng)這樣:
這里一共有三個(gè)入口,也就是三個(gè)「Flow beginning」,不過(guò)經(jīng)過(guò)處理之后,最終匯集到同一個(gè)分支流中,這個(gè)分支流的主要功能是向服務(wù)器發(fā)出請(qǐng)求并處理應(yīng)答。
這三個(gè)入口分別處理:
新建一個(gè)工作流
安裝好 Automate 后,點(diǎn)擊主界面右上角的加號(hào),新建一個(gè)工作流。在工作流編輯界面,點(diǎn)擊左上角的菜單可以打開(kāi)所有結(jié)點(diǎn)的列表來(lái)供選擇,
當(dāng)然,一般使用「搜索」的方式來(lái)找結(jié)點(diǎn)……結(jié)點(diǎn)歸類很迷,不大好找。
第一縱:復(fù)制即保存
這個(gè)入口我在 Android 上用得非常頻繁。在 iPhone 上使用 Workflow 時(shí),由于不能后臺(tái)監(jiān)控剪貼板,所以無(wú)法實(shí)現(xiàn)。
而在 Android 這里最終實(shí)現(xiàn)的效果是,當(dāng)我在少數(shù)派 App 的分享中選擇「復(fù)制鏈接」之后,文章就直接保存了。
主要的入口部分代碼是:
結(jié)點(diǎn) 17 指示了當(dāng)前工作流的一個(gè)入口。為了便于后面代碼的復(fù)用,入口是可以設(shè)置多個(gè)的,啟動(dòng)時(shí)可以選擇其中一個(gè)或者多個(gè)入口。
每一個(gè)入口都可以設(shè)置名稱,方便識(shí)別,也可以指定桌面快捷方式直接啟動(dòng)。
結(jié)點(diǎn) 18 用于等待剪貼板的修改事件。
在 Automate 中,結(jié)點(diǎn)一般分為兩類,一類是立即執(zhí)行的,一類是由監(jiān)聽(tīng)事件觸發(fā)的。事實(shí)上,同一個(gè)結(jié)點(diǎn)往往兼具了這兩種形式。比如這個(gè)剪貼板的結(jié)點(diǎn),既可以立即獲取當(dāng)前剪貼板內(nèi)容并執(zhí)行下去,也可以設(shè)定成在剪貼板發(fā)生變化的時(shí)候才執(zhí)行。
涉及到輸出時(shí),我們可以直接指定一個(gè)變量,輸出會(huì)自動(dòng)賦值給這個(gè)變量。
這里我們啟動(dòng)名為「copy」的入口之后,就開(kāi)啟對(duì)剪貼板修改時(shí)間的監(jiān)聽(tīng)。如果剪貼板發(fā)生了改變,那么把修改后的剪貼板內(nèi)容放入到名為「shared_text」的變量中,并啟動(dòng)一個(gè)新的分支流,來(lái)判斷是否需要保存這個(gè)書(shū)簽。
結(jié)點(diǎn) 20 啟動(dòng)了一個(gè)新的分支流,NEW 出來(lái)的分支流會(huì)獨(dú)立執(zhí)行,OK 引出的線條會(huì)在啟動(dòng)分支流之后立即執(zhí)行下去,這樣相當(dāng)于開(kāi)啟了同時(shí)執(zhí)行的父子兩個(gè)流。
結(jié)點(diǎn) 21 采用正則表達(dá)式判斷剪貼板中是否包含了我們所需的網(wǎng)址。我這里以少數(shù)派、知乎和微信公眾號(hào)為例,具體的格式可以先查看每個(gè)應(yīng)用分享出來(lái)的網(wǎng)址。
在結(jié)點(diǎn) 21 中,我使用了 match 函數(shù) 來(lái)判斷字符串是否匹配。這個(gè)函數(shù)的原型為:
array matches(value, regex)在正則式的開(kāi)頭可以設(shè)置標(biāo)識(shí)位,來(lái)指定正則式的執(zhí)行方式。這里 (?ms) 可以理解成對(duì)多行文本的適應(yīng),因?yàn)楹芏鄳?yīng)用復(fù)制出來(lái)的鏈接并不只是一個(gè)網(wǎng)址,而會(huì)帶著文章的摘要。
具體標(biāo)識(shí)位的用法可以看 官網(wǎng)文檔。
至此,通過(guò)復(fù)制直接保存書(shū)簽的前置工作就完成了,現(xiàn)在書(shū)簽地址保存在 shared_text 變量中,供之后的網(wǎng)絡(luò)請(qǐng)求來(lái)調(diào)用。
第二縱:靈活的下拉菜單按鈕
由于不可能對(duì)剪貼板中的所有地址都直接保存,這時(shí)我們就需要好好利用下拉菜單中的快捷開(kāi)關(guān)了。基本的原理是:先把網(wǎng)址復(fù)制到剪貼板中,然后觸發(fā)這個(gè)工作流,令其讀取剪貼板并保存書(shū)簽。
入口部分的代碼是:
結(jié)點(diǎn) 8 是入口結(jié)點(diǎn),取名為「clipboard」。結(jié)點(diǎn) 16 配置了一個(gè)下拉菜單按鈕。
自定義下拉菜單按鈕的功能是在 Android 7 的時(shí)候引入的,不過(guò)時(shí)至今日也沒(méi)有多少應(yīng)用支持。配置完之后,需要手動(dòng)去下拉菜單的「編輯」選項(xiàng)中把這個(gè)按鈕激活。
結(jié)點(diǎn) 9 選擇了「立即」獲取剪貼板內(nèi)容,并同樣把網(wǎng)址放到 shared_text 變量中。
結(jié)點(diǎn) 10 創(chuàng)建了一個(gè)新的分支流,并循環(huán)回結(jié)點(diǎn) 16,等待下拉菜單按鈕點(diǎn)擊事件再次觸發(fā)。
和前面一個(gè)入口一樣,這里也為下一步網(wǎng)絡(luò)請(qǐng)求提供了保存于 shared_text 變量中的一個(gè)地址。
第三縱:直接走系統(tǒng)分享菜單
最后,系統(tǒng)分享菜單其實(shí)也是一個(gè)不可或缺的入口。
不過(guò)需要注意的是,現(xiàn)在 Android 應(yīng)用很多都會(huì)采用一套自己的分享菜單實(shí)現(xiàn),比如少數(shù)派的 App 會(huì)在點(diǎn)擊「更多」后觸發(fā)系統(tǒng)分享菜單,而像微信公眾號(hào)則根本不允許調(diào)用系統(tǒng)分享菜單,只能在它自己適配的幾個(gè)分享選項(xiàng)中選擇。
系統(tǒng)分享的效果如下:
入口代碼也非常簡(jiǎn)單:
結(jié)點(diǎn) 1 和 7 自不必說(shuō),結(jié)點(diǎn) 2 配置了一個(gè)系統(tǒng)分享菜單的選項(xiàng),并指定了在分享內(nèi)容為文本時(shí)顯示。
系統(tǒng)分享的第一個(gè)選項(xiàng) TITLE 可以指定在分享時(shí)的菜單中顯示的提示語(yǔ)。同樣的,分享獲得的文本內(nèi)容會(huì)保存到 shared_text 變量中。
合一:網(wǎng)絡(luò)請(qǐng)求和應(yīng)答處理
現(xiàn)在前面三個(gè)入口都使用了一個(gè) shared_text 變量,并都通過(guò)「Fork」結(jié)點(diǎn)引出了一個(gè)新的分支流。
網(wǎng)絡(luò)請(qǐng)求是所有分支都合用的部分,代碼如下:
別看我排成了 3 列,其他它可以看成一個(gè)非常簡(jiǎn)潔的單線順序結(jié)構(gòu)。入口是中間的 22 號(hào)結(jié)點(diǎn),為了可能出現(xiàn)的網(wǎng)絡(luò)異常,我這里做了個(gè)異常捕獲,
要是拋出異常,可以自動(dòng)重試三次。失敗了會(huì)在結(jié)點(diǎn) 23 中打印信息,然后在結(jié)點(diǎn) 3 中重新發(fā)起網(wǎng)絡(luò)請(qǐng)求。
結(jié)點(diǎn) 23 用于調(diào)用系統(tǒng)的 Toast 接口來(lái)顯示信息,Automate 中字符串的組合符號(hào)用的是 ++ 兩個(gè)加號(hào)。
結(jié)點(diǎn) 3 用于網(wǎng)絡(luò)請(qǐng)求,網(wǎng)址、請(qǐng)求方法和請(qǐng)求體都根據(jù) API 來(lái)填。這個(gè)結(jié)點(diǎn)支持 HTTP BASIC AUTH,添加用戶名和密碼后會(huì)保存到系統(tǒng)賬戶中,并可以在多個(gè) Automate 腳本中共享。
最后輸出的是應(yīng)答碼和應(yīng)答體,分別保存到一個(gè)變量中。
收到的數(shù)據(jù)類似這樣:
{"bookmark_id": 1209375694}結(jié)果顯示了一個(gè)書(shū)簽編號(hào),通過(guò) https://www.instapaper.com/read/1209375694 可以直接訪問(wèn)到所保存的頁(yè)面。
把結(jié)果使用 jsonDecode 函數(shù) 進(jìn)行解析,并把 bookmark_id 的值保存下來(lái),分別用于日志記錄和屏幕提示。
結(jié)點(diǎn) 5 用于設(shè)置變量,這個(gè)結(jié)點(diǎn)比較有趣,輸出在前,輸入在后,大概是為了滿足「賦值」這個(gè)概念,與一般的編程語(yǔ)言相仿。
結(jié)點(diǎn) 6 會(huì)調(diào)用 Automate 的日志,記錄后方便查閱。結(jié)點(diǎn) 4 依然是一個(gè) Toast 結(jié)點(diǎn),用于在屏幕上顯示簡(jiǎn)單的提示文本。
大功告成
好,現(xiàn)在可以保存編輯后的流,回退一步到流的設(shè)置頁(yè)面,點(diǎn)擊「Start」按鈕。
如果沒(méi)有獲取到全部結(jié)點(diǎn)所需的權(quán)限,那么此時(shí)會(huì)彈出請(qǐng)求,選擇「Grant」后,應(yīng)用會(huì)喚起 Google Play 來(lái)安裝相應(yīng)的權(quán)限插件(Automate 的權(quán)限以插件的形式提供,一個(gè)新的權(quán)限就是安裝一個(gè)應(yīng)用,移除一個(gè)權(quán)限就是把它卸載掉)。
安裝完成后再回來(lái)點(diǎn)擊「Start」按鈕,就可以看到入口的選擇菜單了,這時(shí)我們可以選擇需要激活的入口,或者直接點(diǎn)擊「All」激活全部入口。
現(xiàn)在,就可以使用前面所說(shuō)的三種入口,分別來(lái)試一試?yán)病?/p>
小結(jié)
Automate 作為一款功能強(qiáng)大的自動(dòng)化工具,需要的權(quán)限較多,并且需要我們?cè)谙到y(tǒng)中進(jìn)行設(shè)置來(lái)讓它們保持運(yùn)行,如果你在國(guó)內(nèi)廠商的定制 ROM 上遇到問(wèn)題,不妨按照少數(shù)派的 文章 進(jìn)行排查。
Automate 提供免費(fèi)下載使用、沒(méi)有廣告,我非常建議從 Google Play 上下載 官方版本的應(yīng)用,如果你覺(jué)得好用,還可以通過(guò) 2.99 美元的內(nèi)購(gòu)移除 30 個(gè)結(jié)點(diǎn)的限制。
總結(jié)
以上是生活随笔為你收集整理的android设置title_所见即所得的 Android 自动化神器,用 Automate 一键收藏文章的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 如何分析k线 怎样分析k线
- 下一篇: 当前版本与卡刷包android_Z2 A