java 创建日程到期提醒_苹果“快捷指令”日程播报完美版
日程播報是一個常見于“快捷指令”中“早安/晚安”場景中的一項功能。通過與Win10日歷時刻同步,可以非常方便的安排未來行程,避免遺忘重要事項。比如這樣
每天早上關掉鬧鐘后,SIRI將你今日的全部行程、生日提醒、節氣、課表等等挨個念出來,絕對是一件心曠神怡的事情。
然而,目前網上能找到的教程,以及“捷徑盒”中所能下載到的版本都存在一個嚴重的問題,既SIRI不會斷句,她會一口氣把當天日歷上的所有文字全部逐個念出來,導致體驗感大打折扣。
通過瞎貓碰死耗子的鉆研精神,在這里分享完美版日程播報核心,并提供一套自用的設置。該版本可以實現的功能有:
運行演示如下
知乎視頻?www.zhihu.com這是一個簡單的目錄
對于只關心使用該功能的朋友請直接看第一部分
對于進階玩家可以在第二部分交流
對于想了解,為了實現完美版前期經歷過什么失敗版本的朋友可以繼續看第三部分,作為拋磚引玉。
需要事先說明的是 我的系統版本為IOS14.2
對于更低系統版本不一定保證兼容性,當然很遺憾也沒有條件去驗證了。
首先點右上角?添加一個新的快捷指令
點擊添加操作,來加入整個程序的第一條指令。完整程序大致可分為三節,首先來創建第一節,既準備工作
搜索重復,點擊“重復”
將重復次數設定為10
添加文本
每次添加新指令會默認添加到最底部,輕輕按住指令可以上下移動位置,這里咱們給移動到重復結束之間
輕點一下文本,這里輸入一個空格,非常重要!!!!!這里輸入了一個空格,如果忘記輸入,最后會失敗!!!!
程序第一節結束,第一節用于將來給列表補充循環次數,同時不影響正確的播報。會在文章第二部分詳細解釋
下面開始第二節設置
添加獲取臨近日程
在折疊里面選擇今天,同時自定義獲取日程數量,這個取決于各位自己的最大日程數量,以及自己想聽到的數量,建議將第一節重復次數與這里設置一致。
添加計數,這里使用它默認添加結果即可
添加從輸入中獲取文本
這里進行一個比較重要的操作,變量修改,在之后的操作中會經常使用,可以看到文稿指令中有一個“數量”選項,并且可以編輯,這條指令的作用就是某項內容轉化為字符串并存儲,這里說他是字符串并不準確,但是可以簡單這么理解。
點擊數量,再點擊清除,咱們需要把日程內容轉化為文本用于后續語音播報與判斷條件
清除后的樣子,點擊輸入會出現下圖
點擊選擇魔法變量,記住前面這個圖標的樣子,在后續設置操作中,點擊這個圖標,即添加魔法變量。
點擊魔法變量后之前添加過的指令會變灰,并且下面會引出一個小尾巴,這個小尾巴就是前面指令的執行結果,這里咱們選臨近日程,這時會將當天全部日程通過換行創建為一個文本
至此第二節結束。下面第三節是程序主體,都包在同一個“如果”指令中,即if else 語句。最外面一層用來判斷當天是否有日程。添加“如果”指令
清除 如果中的 文本條件
添加魔法變量,選擇數量
需要判斷日程數量是否為0,所以點擊條件,選擇“是”
緊接著輸入數字0,完成判斷條件的設置
添加文本指令
將添加文本框拖到否則上面,并輸入如上信息。
添加朗讀文本文件指令
將添加的朗讀指令拖到文本下面,會自動鏈接到“沒有特殊日程安排”并朗讀這段話
添加一個新文本,放到否則下面
這里添加魔法變量,沒錯,需要調用前面某些執行結果并轉為同一個文本。
依次添加臨近日程,以及重復結果。注意!!!!添加的順序!!!!以及要有換行!!!!不然會出錯
添加拆分文本,需要將前面的一個文本拆成X+10個文本,X是當天日程數量,10是第一節添加的空格循環次數
將添加的指令拖到結束條件之前,會自動關聯
添加為每個項目重復指令
拖上去,自動將上述拆分的X+10個文本創建為一個X+10維列表
添加新文本,放在結束重復之后
輸入如上內容
添加朗讀文本,并拖到文本之后
添加重復指令
拖到朗讀文本之后,重復次數設定與所獲取的日程數量一致,這里將進行循環播報,逐條念出日程安排
添加從列表中獲取項目,即提取列表中的元素
拖到重復下面,清除默認的文本
單擊,灰色的列表,并選擇魔法變量
選擇重復結果
下面選擇提取列表中的哪個元素,選擇索引處的項目
下面需要輸入索引標號,咱們希望逐條播報,因此這里的索引編號是個變量,每次循環后+1
左滑選擇重復索引
到這里,每次循環就可以獲得列表中的每一項了,我們希望播報日程,對于空格內容直接跳過,所以這里添加一個判斷條件
添加如果指令
拖到上面
判斷條件為“是”
第三個輸入框輸入一個空格,一定要有空格!!!!,于第一節文本中輸入內容一致,如果外層循環內容為空格,則直接跳過,如果不為空格,則進行播報
添加一個文本,放到否則下面
文本中添加 重復索引,敲一個冒號,點擊魔法變量
選擇來自列表的項目
需要播報的內容創建完畢
添加朗讀,語音播報上述文本。
至此,全部添加完畢,點擊下一步,保存快捷指令
點擊完成,創建全部完成,整個流程可見下圖
下面添加自動化流程,即早上關掉鬧鐘后自動語音播報
點擊自動化,并點擊右上角?,這里已經存在的是我自己使用的自動化流程。
創建個人自動化
選擇鬧鐘
如上設置
選擇快捷指令
選擇運行快捷指令
選擇剛剛添加的快捷指令
選擇運行前不詢問
至此,第一部分全部結束。下面進入交流環節
2. 第二部分
上來先把核心設置放出來
這里可以看到,循環播報過程中遇到的最大問題是,循環次數只能設定為固定值,但每天播報的項目數為變量,這就意味著循環次數與列表維數不匹配,當循環到超過列表維數后就會報錯(可以運行,只在最后報錯中斷)。
經過幾個版本的試驗,最終解決方案是用偽空元素擴充列表維數,使之大于循環次數。
那么上面的指令就很好理解了
運行測試,發現確實生成了6個新文本,目標達成?
至此完成最核心的設置部分,剩下的事就是把這些文本輸入到同一個列表,建立6個新元素,然后再循環播報即可。為了參與觀看,將核心設置與最終版本利用方框標注,便于觀看。
核心部分
在完整流程中對應的位置。
3. 第三部分
其實對于這個問題的解決思路無非兩種。
3.1第一種為順序模式,中間沒有任何循環結構,即目前能見到的所有殘血版語音播報。
解決方法就是想辦法在每一個日程中間讓SIRI有停頓。
目前可行方案是在每一項日程結尾添加逗號,但對于生日、節氣這種系統自動添加的內容會失效。
只能期待將來在SIRI更聰明,知道什么時候該停頓。
3.2第二種方式為循環結構,一次循環只播報一項,通過循環運算引入停頓。好處是不需要對現有日程進行任何修改。
當前循環結構有兩個嚴重問題。其一是循環次數不能自定義,也就是for循環中的i只能是固定值,但每天日程項目數不是固定值,最理想情況是把i設定為日程項目數,目前不支持這項功能。如果循環次數為10,項目數為3,那么在第四次循環時候會報錯,但是不影響聽到今天的所有日程,也算是一種解決方法。
其二是沒有break指令,雖然可以獲取當前循環次數,與項目數進行比對,超過設定值直接中斷程序,無奈沒找到該指令,目前只能通過報錯強行中斷。
曾經試圖在循環中補充新元素添加到列表中,從而滿足循環10次的維度,但是失敗了。沒搞通在已有的列表中添加新元素,倒是可以通過循環的方式創建一個新列表。這種方法有興趣的朋友可以研究下。
如果不能在每次循環中添加新元素,從而讓總元素數剛好等于循環次數,那么就只能在最一開始補充元素數,使之大于循環次數了,也就是第二部分介紹的解決方案。
也許有人要問,問什么不能讓補充后的列表元素數剛好等于循環次數呢?答案是補充文本的生成也要靠一個循環語句,但是這里的循環變量是最開始設定好的固定值。
綜上所述,筆者經歷的方案如下
?一口氣全念完
?添加句號引入停頓
?循環次數大于項目數,通過報錯中斷
?找到break指令中斷
?在每次循環中添加新元素擴充列表
?最開始擴充列表元素
目前提供教程的方案可能存在以下問題
由于需要進行循環、判斷計算,因此播報等待時間可能不夠理想。
從完美主義出發,列表元素數最好等于循環次數,但是還不知道該如何解決。
最后要感謝 @和浦 ,在這位大佬文章的介紹下,打開了快捷指令的大門,現在已經成為每天必備的實用app了。
https://zhuanlan.zhihu.com/p/93421926
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的java 创建日程到期提醒_苹果“快捷指令”日程播报完美版的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 字段定义_两大高招逐浪CMS中定义省地市
- 下一篇: 技校毕业是什么学历_技校毕业是什么学历