自訂錶盤參考文件

此頁面是為設計新錶盤的設計師提供的。 此處將列出所有關鍵字和功能,幫助你建立或動畫化新的錶盤。

  • 在自訂錶盤 V2(Wear apk 3.3.0或以上)中,可用的新功能和鍵位在這裡可查閱

自訂錶盤格式

自訂錶盤是一種為 AAPS 設計的開放格式,與錶上可用的「AAPS(自訂)」錶盤相關聯。

錶盤檔案是一個簡單的 zip 檔案,但要被識別為錶盤檔案,該 zip 檔案必須包含以下檔案:

  • 一個名為 CustomWatchface 的圖片檔案(可以是點陣圖檔案 CustomWatchface.jpgCustomWatchface.png 或向量檔案 CustomWatchface.svg)。 此檔案是用於在你點選「載入錶盤」按鈕時選擇錶盤的圖示,也是在 AAPS Wear 外掛中可見的圖像。

  • 一個名為CustomWatchface.json的檔案(見下方JSON 結構)。 這個第二個檔案是核心檔案,將包含設計錶盤所需的所有資訊。 這個 json 檔案必須是有效的(當用文字編輯器手動編輯這個檔案時,這可能是最棘手的地方,因為缺少或多出一個逗號就會破壞 json 格式)。 這個 JSON 文件必須包括一個"metadata"區塊,內含一個"name"鍵且值不可為空。 這將是你的自定義手錶錶盤的名稱(見下方Metadata設定

  • 此 zip 檔案的大小應盡可能小(不超過約 500KB)。 如果檔案太大,將會被阻擋,無法傳送到手錶。

該 zip 檔案還可以包含一些額外的資源檔案:

  • 將在錶盤中使用的圖像硬編碼檔名,包括標準視圖(如BackgroundCoverChart… 請參見下面的硬編碼資源檔案清單)。 這些檔案可以是 jpgpngsvg 格式。 但對於大多數情況,你需要使用支援透明度的 pngsvg(相較於 png,jpg 檔案較小但不支援透明度)。 請注意,與最小的檔案大小相結合的最佳品質通常是 svg 檔案(向量格式)。

  • 附加資源檔案,名稱可自由命名。 這些額外檔案可以是圖片檔案,也可以是字體檔案(支援的字體格式為 ttfotf)。 請注意,對於這些額外檔案,檔名(不含副檔名)將在 JSON 檔案中用作 keyValue,以指定這些檔案應該在哪裡或何時使用。

    • 圖片檔案通常用作文字視圖的背景或用於動態動畫(如從 0% 到 100% 的電池電量)。

    • 字體檔案允許你在錶盤中使用專用字體。

JSON 結構

JSON 文件可以在 Notepad(或 Notepad++)文本編輯器中編輯(建議使用 Notepad++,因為它可以識別 JSON 並使用顏色格式化)。

  • 他包含文字鍵 "string_key": 和鍵值,這些鍵值可以是文字(如 "key value")、整數、布林值(如 truefalse)或資料區塊。

  • 每個值之間用逗號,分隔。

  • 資料區塊由 { 開始,並以 } 結束。

  • JSON 文件是一個完整區塊,因此以{開始,並以}結束,並且在這個文件中所有嵌套區塊與一個"key"關聯,該鍵在區塊內應唯一。

  • 為了提高 JSON 文件的可讀性,其通常會進行縮排(每個新鍵在新行開始,每個新區塊向右偏移 4 個空格字元)。

Metadata 設定

此區塊是 json 檔案中包含的第一個區塊,且是必需的。 它包含與這個錶盤相關的所有資訊,例如名稱、作者、創建或更新日期、作者版本或外掛版本。

請參閱下方的中繼資料區塊範例:

"metadata": {
    "name": "Default Watchface",
    "author": "myName",
    "created_at": "07\/10\/2023",
    "author_version": "1.0",
    "cwf_version": "1.0",
    "comment": "Default watchface, you can click on EXPORT WATCHFACE button to generate a template"
},

請注意,日期中使用的 / 是特殊字元,因此在 json 檔案中正確識別時,必須在他前面加上「跳脫」字元 \

你可以在某些 json 檔案中看到一個額外的鍵 "filename",當自訂錶盤載入 AAPS 時,這個鍵將自動建立或更新(他將用來向使用者顯示匯出資料夾中的 zip 檔案名),因此你可以在中繼資料區塊中刪除此鍵。

一般參數設定

在第一個包含 metadata 的區塊之後,你將設置一些一般參數(請參見下面的一般參數清單),這使你可以設置圖形顏色(碳水化合物、注射、血糖值…),以及預設的範圍內數值顏色、過高或過低的顏色(血糖值和箭頭的預設顏色)

請參閱下方的一般參數範例:

"highColor": "#FFFF00",
"midColor": "#00FF00",
"lowColor": "#FF0000",
"lowBatColor": "#E53935",
"carbColor": "#FB8C00",
"basalBackgroundColor": "#0000FF",
"basalCenterColor": "#64B5F6",
"gridColor": "#FFFFFF",
"pointSize": 2,
"enableSecond": true,

ImageView 設定

自訂圖片可以使用與自訂錶盤佈局中每個 ImageView 相關的正確檔名進行調整,然後 json 區塊僅用來定義位置、大小、視圖是否可見,並可選擇調整顏色:

請參閱下方的秒針圖像區塊範例(在這種情況下,zip 檔案中沒有包含圖像,因此將使用預設的秒針圖像,但會調整為自訂顏色)。

"second_hand": {
    "width": 400,
    "height": 400,
    "topmargin": 0,
    "leftmargin": 0,
    "visibility": "visible",
    "color": "#BC906A"
}

要將秒針著色為預設的血糖顏色(範圍低、中或高),只需修改最後一行的鍵值 bgColor

    "color": "bgColor"

TextView 設定

TexView 比 ImageView 有更多可用參數:你可以調整旋轉(度數的整數值)、字體大小(以像素為單位的整數值)、重力(用來定義文字值是置中(預設值)、靠左對齊還是靠右對齊)、設置字體、字體樣式和字體顏色,還有 TextView 的背景顏色。

"basalRate": {
    "width": 91,
    "height": 32,
    "topmargin": 133,
    "leftmargin": 249,
    "rotation": 0,
    "visibility": "visible",
    "textsize": 23,
    "gravity": "center",
    "font": "default",
    "fontStyle": "bold",
    "fontColor": "#BDBDBD"
},

請注意,如果你不想在你的錶盤中管理一個視圖,則將"visibility"關鍵字設為"gone",但也要設置大小和位置在可見區域之外,如下所示:

"second": {
    "width": 0,
    "height": 0,
    "topmargin": 0,
    "leftmargin": 0,
    "rotation": 0,
    "visibility": "gone",
    "textsize": 46,
    "gravity": "center",
    "font": "default",
    "fontStyle": "bold",
    "fontColor": "#BDBDBD"
},

如果大小和位置在可見區域內,你可能會在錶盤重新整理期間看到隱藏值的「閃爍」。

如果你想自訂文字視圖的背景圖片,可以使用鍵 "background":,並將包含在 zip 檔案中的圖片檔案名稱作為值,你也可以只使用鍵 "color:" 來更改背景顏色。

"background": "fileName"

你還有 4 個特定的 TextView(名為 freetext1 到 freetext4),他們有一個特定的參數 "textvalue":,可用來設置標籤之類的東西。

ChartView 設定

圖表視圖是一個非常特定的視圖,可以與 ImageView 或 TextView 共享一些參數……

此視圖的標準設定非常簡單:

"chart": {
    "width": 400,
    "height": 170,
    "topmargin": 230,
    "leftmargin": 0,
    "visibility": "visible"
},

此視圖的 2 個額外參數是背景顏色(預設為透明),使用鍵 "color",或使用鍵 "background" 來設定背景圖像。

如何建置/設計你的第一個錶盤

所需工具

  • 文本編輯器:我建議使用 NotePad++(或同類型)這個簡單的文本編輯器,其附加價值在於您可以看到格式化的文本和顏色代碼,因此更容易檢測錯誤。 任何簡單的文本編輯器都可以完成這個工作。 因為目的是調整 JSON 信息。

  • 圖像編輯器(點陣圖和/或向量圖)

    • 如果你使用點陣圖

      • 圖像編輯器應能處理透明度(背景以上的所有圖像都需要透明度),並支援 png 格式(如果你使用點陣圖)。

      • 背景圖像可以是 jpg 格式(比 png 小)。

      • 圖像編輯器應允許您以像素為單位測量圖形對象(可以是一個簡單的方形)(上、左、寬度、高度)。

      • 圖像編輯器應能以十六進制顯示 RRVVBB 顏色代碼。

      • 圖像編輯器應能將圖像調整為 400px x 400px(使用此解析度工作非常重要)。

    • 如果你使用向量圖

      • 向量圖像應以 svg 格式匯出。

獲取範本以免從零開始

當你想設計第一個錶盤時,最好的方法是從預設錶盤開始(這會確保你擁有所有正確排序的可用視圖的最新版本)。

  • 你可以透過在 Wear 外掛中點選「匯出範本」按鈕來獲取 zip 檔案,並在 AAPS/exports 資料夾中找到 zip 檔案。

  • 請注意,你需要將手錶連線到 AAPS 以查看自訂錶盤按鈕(但手錶也需要用來檢查、測試和調整你的自訂錶盤)。

預設錶盤非常簡單,zip 檔案將只包含兩個檔案:

  • CustomWatchface.png(用於選擇預設錶盤的圖像)

  • CustomWatchface.json

在電腦上組織你的檔案

最簡單的工作方式是將手機連線到電腦,並使用兩個特定資料夾工作:

  • 一個檔案總管打開到特定資料夾,該資料夾將包含所有檔案(json、點陣圖圖像、向量圖像、字體),以及 CustomWatchface.zip 檔案。

  • 另一個檔案總管(或已調整的導覽樹)打開到 Phone/AAPS/exports 資料夾。

這樣工作非常簡單:每次使用文字編輯器調整 json 檔案,使用圖像編輯器(點陣圖或向量圖)編輯圖像後,你只需:

  1. 在每個應用程式中儲存你的修改。

  2. 將所有檔案拖放到 CustomWatchface.zip 檔案中。

  3. 將 CustomWatchface.zip 拖放到手機的 AAPS/exports 資料夾中。

  4. 將 CustomWatchface 發送到手錶以檢查結果。

初始化錶盤自訂。

第一步,您將需要定義一個錶盤名稱(為了便於測試),並開始調整 JSON 文件開頭的元資料鍵。

接著,你需要定義要顯示哪些資訊,因此需要設定哪些視圖應該顯示或隱藏。

  • 你是否需要管理秒針?

  • 你想設計一個類比錶盤還是數位錶盤(或兩者兼具…)

現在,你可以開始修改 json 檔案,將每個視圖的 "visibility" 鍵設置為 "visible""gone"(如果你想保留或不保留該視圖)。

您也可以開始調整頂部、左側邊距以及寬度高度值,以便開始組織錶盤(這些值稍後將使用圖像編輯器進行調整)。

注意:所有設計都在 400px x 400px 的矩形 內進行。 因此,所有內容都會在此大小範圍內以絕對座標定位。

當你設計第一個錶盤時,必須知道所有視圖(ImageView 或 TextView)從後到前分層排列,因此每個視圖可以隱藏在其後方的元素。

自訂錶盤圖層

然後在 json 檔案中,所有視圖按從後到前的順序排列(這將幫助你記住哪些元素在後方)。

如果你設計或調整第一個自訂錶盤,請從簡單的事情開始:更改一些視圖的可見性,包含一個專用背景圖像,無需更改 json 檔案。

管理顏色

在 json 檔案中,你將有幾個鍵來指定顏色:"color""fontColor" 用於視圖,還有 "highColor""midColor""lowColor" 等等(請參閱 一般參數列表

顏色透過文本欄位指定,該欄位以 # 開頭,後接 RRGGBB(紅、綠、藍)值的十六進制格式:

  • "#FFFFFF" 是白色,"#000000" 是黑色,"#FF0000" 是紅色。

你還可以包含兩個附加值來指定透明度層級(AARRGGBB):

  • "#00000000"是完全透明的,而"#FF000000"是完全不透明的(因此"#FF000000"相當於"#000000"

你也可以使用特定的鍵值 "bgColor",根據血糖值自動使用 "highColor""midColor""lowColor",這些值已在一般參數中指定:

  • "fontColor": "bgColor", 將自動根據血糖值設置視圖的字體顏色。

  • 請注意,sgv(血糖值)和 direction(趨勢箭頭)視圖會自動應用血糖色彩(這兩個視圖,如果你想要不同顏色,你將需要使用進階的dynData 功能並使用單步顏色)。

有關 ImageViews 和 "color": 鍵的更多資訊,請參閱下方專門章節 調整圖片顏色

包含硬編碼圖像

開始調整你的錶盤的最簡單方法是將一些特定名稱的圖像包含在 zip 檔案中(請參閱硬編碼資源檔案列表)。

  • 圖像應為 .jpg.png.svg 格式。 但要小心,jpg不支持透明度,因此應該僅用於背景層。 對於所有中間層(封面圖、表盤、指針),使用.png.svg圖像。

  • 如果你有向量圖像編輯器(例如 Illustrator),請優先使用此格式,他會產生帶有 .svg 副檔名的小型文本檔案,效果最佳。

  • 你必須注意檔名,務必精準拼寫(包括大小寫)。

現在如果你想要專用的背景圖像,你只需在 zip 檔案中包含一個名為 Background.jpg 的檔案(無需更改其他內容)。 將 zip 檔案發送到手錶並檢查結果!

如果你想為類比錶自訂時針、分針或秒針,只需包含 HourHand.png(或 HourHand.svg)、MinuteHand.pngSecondHand.png

  • 這些圖像將自動繞圖像中心旋轉,因此這些圖像應設置為 00:00:00(對於「全畫幅」類比錶盤,請使用 400 x 400 px 的大小,並定位於 top 0 left 0)。

你還可以在硬編碼資源檔案列表中注意到,對於每個圖像視圖,你有兩個額外的硬編碼檔名 HighLow(例如,你可以在 zip 檔案中包含其他名為 BackgroundHigh.jpgBackgroundLow.jpg 的圖像)。 然後圖像將根據你的血糖數值自動更改(在範圍內、高血糖或低血糖)。 請參閱 AIMICO 錶盤作為範例。

調整圖像顏色

"color" 鍵可用於調整預設的圖像顏色:

  • 應用於背景視圖時,他將設置背景顏色(預設為黑色)。

  • 應用於 cover_plate(簡單錶盤)或指針時,他將根據指定的顏色(包括 "bgColor")更改預設圖像(白色)。

當您在位圖圖像(.jpg.png)上應用"color"鍵時,顏色將對顏色飽和度產生有趣的效果。 因此,你仍然可以識別你的點陣圖圖像。

最後在 .svg 圖片檔案中,"color" 鍵將不會有任何效果,請將向量文件的顏色視為在圖片中硬編碼。 如果你想更改顏色,則需要包含幾個 svg 檔案,並使用進階 dynData 功能來更改它

為 TextViews 使用額外字體

Wear apk 中已經有多個預設字體(請參閱鍵值章節中的字體鍵)。 但如果您想使用其他未作為預設的字體,則可以將其他字體包含在 zip 文件內:

  • 支援的字體格式為 .ttf.otf

  • 如果你在 zip 檔案中包含自訂字體,例如名為 myCustomFont.ttf 的檔案,則你需要使用檔名在 json 檔案中將其用於 TextView:

"font": "myCustomFont",

請記住,一些字體檔案可能很大(而你對 zip 檔案的大小有最大限制)。 因此,如果你只使用很少的字元(數字、.,),你可以使用免費工具來移除未使用的字元(例如 這裡),然後減小字體大小。

進階功能

偏好設定功能

CustomWatchface 可以自動調整一些手錶的偏好設定,以確保正確顯示錶盤(如果使用者在 Wear 偏好設定中授權)。

但是此功能應謹慎使用。 偏好設定是與其他錶盤共用的。 因此,使用此功能時應遵守下列規則:

  • 不要設定隱藏檢視相關的偏好設定

  • 盡量最大化可見的檢視

  • 可以自由調整某些檢視的寬度:

    • TBR 可以以百分比顯示(小寬度,但也可以顯示更寬的絕對值)。

    • delta 或平均 delta 的詳細資訊可以顯示更寬

    • 同樣地,iob2 的檢視可以顯示總 iob,但如果選擇顯示詳細 iob,文字大小可能會變得很長

如果仍然需要某些非常特殊的設定來正確顯示(如下範例所示,如果沒有足夠的空間顯示詳細 iob,你可以將手錶上的此參數強制設為 false,並可在元資料區塊中包含這類設定約束

"metadata": {
    "name": "預設錶盤",
    "author": "myName",
    "created_at": "07\/10\/2023",
    "author_version": "1.0",
    "cwf_version": "1.0",
    "comment": "預設錶盤,你可以點擊匯出錶盤按鈕生成範本",
    "key_show_detailed_iob": false
},

如果使用者授權自訂錶盤修改手錶參數(設定於 Wear 外掛內),那麼顯示詳細 iob 會設為 「停用」,並鎖定為停用(直到在 Wear 外掛參數內取消授權或選擇其他錶盤,否則無法修改此參數)。

  • 請注意,當使用者選擇錶盤時,他可以在選擇過程中看到「必要參數」的數量。

如下範例所示,Gota 錶盤有一個必要參數。 如果未授權,他會以白色顯示;如果授權,則此參數會設置並鎖定於手錶上(此時數字為橙色)。

必要參數

雙視圖功能

雙視圖提供了一種基於可見檢視調整檢視位置的簡便方式。 這不如完全使用 LinearLayout 排版來得強大,但可以處理許多常見情況。

如下範例所示,你可以看到 AAPS(駕駛艙)錶盤中的所有檢視都在設定內可見,而相同錶盤在「隱藏顯示鑽機電池」及「隱藏顯示平均 delta」時的效果。

雙視圖

你可以看到當其中一個雙視圖被隱藏時,另一個會自動居中移動。

在此範例中,你可以看到在 "uploader_battery" 區塊中,添加了 "twinView": 鍵來定義 "rig_battery" 檢視,而在 "rig_battery" 區塊中, "twinView": 鍵定義了 "uploader_battery" 為雙檢視。 隨後,額外的鍵 "leftOffsetTwinHidden": 定義了雙視圖被隱藏時的位移像素數量。

要計算這個數字,你可以看到兩個雙視圖的左邊界差為 50 像素,因此位移量為一個方向的一半。

如果雙視圖是垂直排列的,則需要使用鍵 "topOffsetTwinHidden":

"uploader_battery": {
    "width": 49,
    "height": 30,
    "topmargin": 354,
    "leftmargin": 150,
    "rotation": 0,
    "visibility": "visible",
    "textsize": 23,
    "gravity": "center",
    "font": "roboto_condensed_bold",
    "fontStyle": "bold",
    "fontColor": "#FFFFFF",
    "twinView": "rig_battery",
    "leftOffsetTwinHidden": 25
},
"rig_battery": {
    "width": 49,
    "height": 30,
    "topmargin": 354,
    "leftmargin": 200,
    "rotation": 0,
    "visibility": "visible",
    "textsize": 23,
    "gravity": "center",
    "font": "roboto_condensed_bold",
    "fontStyle": "bold",
    "fontColor": "#FFFFFF",
    "twinView": "uploader_battery",
    "leftOffsetTwinHidden": -25
},

DynData 功能

DynData 是最強大的功能,如果您希望在錶盤中包含一些動畫,根據一些內部值(如血糖值、血糖等級、變化率、電池 % …可查看可用數據列表這裡)。

為了說明此功能,我將以 AAPS(蒸汽龐克)錶盤為例:

CustomWatchface_4

在此錶盤中,我們需要管理 血粒值旋轉(從 30 度到 330 度),avg_delta 的動態範圍(根據值縮放至 5mgdl、10mgdl 或 20mgdl),指針的旋轉應與縮放同步,還有檢視的不同圖層…

要管理此錶盤,請參閱以下包含於 zip 檔案中的所有圖片:

注意:為了顯示透明區域,所有這些圖片都有黃色背景並被紅色方框包圍。

蒸汽龐克圖片

  • 在第一排中,Background.jpg 和 CoverPlate.png 會自動映射至相關的檢視(預設檢視檔案名),而 steampunk_pointer.png 將由 dynData 管理。

  • 在第二排中,你可以看到動態範圍的 3 個 avg_delta 尺度,這些也將由 dynData 管理。

  • 在第三排中,chartBackground.jpg 會手動連結到圖表檢視,HourHand.png 和 MinuteHand.png 檔案將自動映射到相關的檢視。

背景管理

首先,關於血糖值圖像,這裡沒有選擇,它只能在背景層(否則將會蓋在圖表視圖上,圖表將不可見!)。 因此,我們必須將血糖值對應到背景,然後根據血糖值旋轉背景圖像。

"background"區塊內,我們將包括兩個專用的鍵來進行這個旋轉:

"background": {
    "width": 400,
    "height": 400,
    "topmargin": 0,
    "leftmargin": 0,
    "dynData": "rotateSgv",
    "rotationOffset": true,
    "visibility": "visible"
},

"dynData":鍵將定義哪個區塊用於定義動畫(值、範圍、轉換…)這裡這個區塊被命名為 「rotateSgv」(使用此功能時請選擇明確的名稱),

"rotationOffset": true, 將定義根據值期望的動畫應該是旋轉。 (其他可用的鍵還有"leftOffset""topOffset",如果你想建立滑塊的話)

現在,我們將在文件的末尾,在最後一個視圖之後進行操作:

"second_hand": {
    "width": 120,
    "height": 120,
    "topmargin": 140,
    "leftmargin": 140,
    "visibility": "gone"
},
"dynData": {
    "rotateSgv": {
        "valueKey": "sgv",
        "minData": 30,
        "maxData": 330
    },

你可以看到在最新的視圖("second_hand")之後,我們新增了一個新的"dynData": { ... }區塊,這將包含所有的動畫:

"background"視圖內定義的區塊被命名為"rotateSgv",這是你在"dynData"內找到的第一個區塊!

這個區塊很簡單:你有一個名為"valueKey":的第一個鍵,將用來定義應該使用哪個值。 在這種情況下,"sgv"是定義血糖值的 「keyValue」(請注意,在大多數情況下,keyValue與顯示此資訊的視圖名稱相同)。

關於血糖值,預設的最小資料設為 39mgdl,最大資料設為 400mgdl(請參閱 DynData 參考鍵值 下面的所有可用鍵值及其最小/最大資料值)。

"rotateSgv"區塊內,將使用兩個附加的鍵("minData":"maxData":)來調整最小和最大資料至30和330。 通過這些最小和最大值,我們將能夠直接使用數據值(無需任何轉換)來旋轉背景的角度。 在這種情況下,所有超過330 mg/dL的血糖值將被限制在圖像的上限330。

圖表管理

圖表的預設背景是透明的,因此為了隱藏包含於背景圖像中的血糖刻度,我們需要加入專用的背景圖像(此圖像將包含蒸汽龐克錶盤整體的陰影效果)。 連結到charBackground.jpg文件是透過"background":鍵完成的

當然,視圖的尺寸和定位必須精準到像素!

"chart": {
    "width": 216,
    "height": 107,
    "topmargin": 280,
    "leftmargin": 80,
    "visibility": "visible",
    "background": "chartBackground"
},

平均變化管理

為了能夠管理平均變化的動態範圍,我們將使用四個自由文字視圖。 freetext1將用來管理圖像刻度,freetext2至freetext4將根據刻度管理指針的旋轉。

freetext1

如前所述,自由文字視圖位於圖表和背景的前面,因此我們加入了透明區域以顯示這些圖像(圖像的右側和底部)。

請注意,這些圖像底部被移除的部分已用作圖表的背景,實現完美的整合。

"freetext1": {
    "width": 400,
    "height": 400,
    "topmargin": 0,
    "leftmargin": 0,
    "rotation": 0,
    "visibility": "visible",
    "dynData": "avgDeltaBackground"
},

在這個視圖中,我們將連結到另一個名為"avgDeltaBackground""dynData"區塊。 此區塊將根據平均變化值來管理avgDelta刻度。

"avgDeltaBackground": {
    "valueKey": "avg_delta",
    "minData": -20,
    "maxData": 20,
    "invalidImage": "steampunk_gauge_mgdl_5",
    "image1": "steampunk_gauge_mgdl_20",
    "image2": "steampunk_gauge_mgdl_20",
    "image3": "steampunk_gauge_mgdl_10",
    "image4": "steampunk_gauge_mgdl_5",
    "image5": "steampunk_gauge_mgdl_5",
    "image6": "steampunk_gauge_mgdl_10",
    "image7": "steampunk_gauge_mgdl_20",
    "image8": "steampunk_gauge_mgdl_20"
},
  • "valueKey":將與"avg_delta"值進行連結

  • 最小和最大資料也會將範圍限制在此錶盤內可用的最大值(從-20 mg/dL到20 mg/dL)。 對於mmol使用者,請記住,所有的內部值在AAPS中始終以mg/dL表示。

接下來我們將看到如何根據值來管理動態背景圖像。

"invalidImage":是管理當資料無效(或資料遺失)時顯示圖像的鍵。 這裡我們將連結到包含在zip文件中的5 mg/dL刻度的額外資源圖像

接著我們將使用一系列圖像,從"image1":"image8":。 提供的圖像數量將定義最小資料和最大資料之間的步驟數。

  • image1將定義當avg_delta等於或接近minData時顯示的圖像,而編號最高的圖像(此處為image8)將用於定義當avg_delta等於或接近maxData時應顯示的圖像。

  • 在 -20mgdl 和 20mgdl 之間,總範圍為 40mgdl,分為 8 部分(提供的圖像數量),我們將有 8 步 5mgdl。

  • 現在我們可以根據avg_delta值來映射背景圖像,從最低值開始:在-20和-15之間以及-15和-10之間,我們將使用steampunk_gauge_mgdl_20來顯示刻度,然後在-10和-5之間使用steampunk_gauge_mgdl_10,依此類推,直到+15和+20,我們再次使用steampunk_gauge_mgdl_20背景圖像。

freetext2 到 freetext4

對於這些視圖,我們將結合之前解釋過的動態圖片和旋轉功能:

"freetext2": {
    "width": 276,
    "height": 276,
    "topmargin": 64,
    "leftmargin": 64,
    "rotation": 0,
    "visibility": "visible",
    "dynData": "avgDelta5",
    "rotationOffset": true
},
"freetext3": {
    "width": 276,
    "height": 276,
    "topmargin": 64,
    "leftmargin": 64,
    "rotation": 0,
    "visibility": "visible",
    "dynData": "avgDelta10",
    "rotationOffset": true
},
"freetext4": {
    "width": 276,
    "height": 276,
    "topmargin": 64,
    "leftmargin": 64,
    "rotation": 0,
    "visibility": "visible",
    "dynData": "avgDelta20",
    "rotationOffset": true
},

這裡每個視圖專用於特定的縮放(因此與特定的 dynData 區塊相關聯),您還可以注意到"rotationOffset":鍵對這三個視圖啟用。現在看看第一個 dynData 區塊:

"avgDelta5": {
    "valueKey": "avg_delta",
    "minData": -20,
    "maxData": 20,
    "rotationOffset": {
        "minValue": -120,
        "maxValue": 120
    },
    "invalidImage": "null",
    "image1": "null",
    "image2": "null",
    "image3": "null",
    "image4": "steampunk_pointer",
    "image5": "steampunk_pointer",
    "image6": "null",
    "image7": "null",
    "image8": "null"
},

這裡,即使動態範圍僅用於 -5 到 +5 avg_delta 數據,但保持 -20, +20mgdl 的整體範圍非常重要,以確保指針在縮放切換期間與背景同步。 這就是為什麼我們保持與avgDeltaBackground相同的整體範圍以及相同的步數(8 張圖像)。

你可以注意到 "invalidImage" 或幾個 "圖片xx" 的鍵值為 "null"(這可以是 Zip 文件中不存在的任何文字)。 當找不到文件名時,視圖的背景圖片將變為透明。 因此,設定確保指針僅在步驟 4 和步驟 5(avg delta 在 -5mgdl 和 +5 mgdl 之間)可見,並且不會在此範圍之外顯示。

現在我們可以看到一個新的區塊 "rotationOffset",其中包含兩個鍵 "minValue""maxValue"。 這些值用於在內部數據(以 mgdl 為單位)和我們希望獲得的角度旋轉之間進行轉換。

  • 蒸汽朋克錶盤的設計使指針的最大旋轉角度從 -30 度到 30 度。 因此,根據刻度(此處從 -5mgdl 到 5mgdl),我們希望這些值具有 30 度的旋轉。 由於 最小資料最大資料 大 4 倍,則相應的最小值和最大值是 4 * 30 度,因此為 -120 度和 +120 度。 但對於所有超過或低於 ±30 度的旋轉,指針將被隱藏(無圖片可見),並且指針僅在 -5 到 +5mgdl 之間顯示… 所以這正是這裡的預期結果。

其他動態資料區塊定義的方式相同,用於調整 "avgDelt10""avgDelta20"

循環視圖

在蒸汽朋克錶盤的循環中,綠色和紅色箭頭(用於狀態)被停用,這也透過與循環視圖相關聯的專用動態資料區塊進行管理。

    "loopArrows": {
        "invalidImage": "greyArrows",
        "image1": "greenArrows",
        "image2": "redArrows"
    }

由於此區塊僅由循環視圖調用,並且此視圖管理的預設資料是循環資訊,因此 "數值鍵" 鍵是可選的。

循環的預設 最小資料最大資料 定義為 0 分鐘和 28 分鐘,因此使用兩張圖片,所有小於 14 分鐘的資料值將顯示背景 圖片1,所有大於 14 分鐘的資料值將顯示 圖片2。 14 分鐘正是從綠箭頭切換到紅箭頭的門檻值。

在此範例中,greyArrowsgreenArrowsredArrows 文件未包含在 ZIP 文件中,因此這些箭頭只是被移除(不可見),但如果你想用自訂的背景圖片調整狀態箭頭,可以「按原樣」使用此區塊。

rig_battery 和 uploader_battery 視圖

為了完成對動態資料功能的總覽,我們來看看電池管理。 這裡的想法是根據電池電量(從 0% 到 100%)自訂文字顏色。

"uploader_battery": {
    "width": 60,
    "height": 28,
    "topmargin": 100,
    "leftmargin": 170,
    "rotation": 0,
    "visibility": "visible",
    "textsize": 20,
    "gravity": "center",
    "font": "default",
    "fontStyle": "bold",
    "fontColor": "#00000000",
    "dynData": "batteryIcons",
    "twinView": "rig_battery",
    "topOffsetTwinHidden": -13
},
"rig_battery": {
    "width": 60,
    "height": 28,
    "topmargin": 74,
    "leftmargin": 170,
    "rotation": 0,
    "visibility": "visible",
    "textsize": 20,
    "gravity": "center",
    "font": "default",
    "fontStyle": "bold",
    "fontColor": "#00000000",
    "dynData": "batteryIcons",
    "twinView": "uploader_battery",
    "topOffsetTwinHidden": 13
},

你可以在這裡看到,這兩個視圖共用一個名為 batteryIcons 的動態資料區塊。 這是可能的,因為預設情況下,附加的資料是視圖的資料(因此不需要在 batteryIcons 區塊中指定 "valueKey" 鍵,他會根據視圖應用於 uploader_battery 資料或 rig_battery 資料)。

注意,這兩個視圖也使用了 這裡解釋的雙視圖功能。

現在來看看動態資料區塊:

"batteryIcons": {
    "invalidFontColor": "#00000000",
    "fontColor1": "#A00000",
    "fontColor2": "#000000",
    "fontColor3": "#000000",
    "fontColor4": "#000000",
    "fontColor5": "#000000"        
},

這裡我們使用與動態背景圖片完全相同的邏輯,但使用專用的鍵("invalidFontColor""fontColor1""fontColor5" 指定每個 20% 步驟)。

  • "fontColor1"(深紅色)將用於所有低於 20% 的值,而白色將用於所有高於該門檻值的值。

  • 如果你想將門檻值降低到「低於 10%」,只需添加 5 個額外的鍵,從 "fontColor6""fontColor6",但你也可以調整每種顏色,如果你想要從綠色到黃色、橙色和紅色的漸變……

動態偏好功能

在閱讀本章之前,必須了解動態資料的工作原理,因為動態偏好是動態資料的進階用法:現在你可以根據使用者設定的偏好來調整每個動態資料區塊:

為了說明動態偏好功能,我們將使用兩個範例:

  • 蒸汽朋克錶盤(簡單用法,包括在同一錶盤中 mgdl 和 mmol 版本,錶盤將根據 AAPS 中選擇的單位自動切換)。

  • AAPS V2 錶盤將結合不同的偏好來管理文字顏色和背景,根據黑暗和分隔符的偏好。

Steampunk 錶盤中的 dynPref 簡單使用

在 Steampunk 中,我們必須根據單位設置圖像:背景 圖像將具有血糖尺度,並根據血糖值旋轉。 以及 freeText1,其中包含根據 avgDelta 值的動態尺度。為了能夠擁有一個自動顯示正確單位的錶盤,我們應根據所選單位選擇圖像。

為了做到這一點,我們將在視圖區塊內將 dynData 鍵替換為 dynPref 鍵:

 "background": {
    "width": 400,
    "height": 400,
    "topmargin": 0,
    "leftmargin": 0,
    "dynPref": "rotateSgv",
    "rotationOffset": true,
    "visibility": "visible"
},

使用 dynPref 鍵的方式與前一章解釋的 dynData 鍵非常接近

現在我們來看看 json 文件末尾的部分,位於 dynData 區塊之後:

"dynData": {
    ...
},
"dynPref": {
    "rotateSgv": {
        "prefKey": "key_units",
        "true": {
            "valueKey": "sgv",
            "minData": 30,
            "maxData": 330,
            "invalidImage": "Background_mgdl",
            "image1": "Background_mgdl"
        },
        "false": {
            "valueKey": "sgv",
            "minData": 30,
            "maxData": 330,
            "invalidImage": "Background_mmol",
            "image1": "Background_mmol"
        }
    },
    ...
}

你可以看到在 background 視圖區塊中定義的 dynpref 鍵 ("dynPref": "rotateSgv") 存在於 json 文件末尾的 dynPref 區塊中:

此區塊應包含一個 "prefKey" 鍵,該鍵將定義應使用哪個偏好設定。 在此範例中,鍵 "key_units" 與電話中的 AAPS 所選的單位相關聯,如果所選單位是 mg/dL 則值為 "true",如果是 mmol 則為 "false"

然後你會發現兩個使用 「dynData」 格式的 json 區塊,這些區塊將根據所選的偏好設定使用。

請注意,背景圖像的「硬碼」文件名現在被動態圖像取代,無論血糖值如何,將保持一致(如果 key_units 為 「true」,則為Background_mgdl.png文件;如果 key_units 為 false,則為Background_mmol.png)。我們還包括了一個"invalidImage"鍵,以便即使未從手機接收到數據,仍然始終擁有背景圖像。

在 dynPref 中結合不同的偏好設定,使用 AAPS V2

大多數時候,當你設置一個偏好設定時,他只是根據你的選擇顯示結果,但在 dynPref 中,他被認為是一種動態功能…

  • 當在 dynData 中指定一整個參數區塊(包含圖像、字體顏色、顏色等)時,使用 dynPref,你將能根據特定偏好設定組合每個參數。

  • 在這裡,我們將看到如何匹配分隔符偏好設置與暗色偏好結合,以顯示何時啟用(為 true)在深色錶盤上顯示白色文本,或在淺色錶盤上顯示黑色文本(深色為 false)。

首先,讓我們看看 json 文件的開頭部分:

"dynPrefColor": "prefColorDark",
"pointSize": 2,
"enableSecond": false,
"background": {
    "width": 400,
    "height": 400,
    "topmargin": 0,
    "leftmargin": 0,
    "visibility": "visible",
    "dynPref": "dark"
},

"dynPrefColor": "prefColorDark" 將指定所有視圖外預設顏色的 dynPref 區塊。 這些顏色將根據 "prefColorDark" 中的暗色參數進行調整:

最後,在 dynPref 區塊內,將會有一個專門為預設顏色設置的 dynPref 區塊:

"prefColorDark": {
    "prefKey": "key_dark",
    "true": {
        "highColor": "#FFFF00",
        "midColor": "#00FF00",
        "lowColor": "#FF0000",
        "lowBatColor": "#E53935",
        "carbColor": "#FB8C00",
        "basalBackgroundColor": "#0000FF",
        "basalCenterColor": "#64B5F6",
        "gridColor": "#FFFFFF"
    },
    "false": {
        "highColor": "#A0A000",
        "midColor": "#00A000",
        "lowColor": "#A00000",
        "lowBatColor": "#E53935",
        "carbColor": "#D07C00",
        "basalBackgroundColor": "#0000A0",
        "basalCenterColor": "#64B5F6",
        "gridColor": "#303030"
    }
}

此 dynPref 區塊與用於視圖的其他標準 dynPref 區塊之間的區別在於,這裡沒有為 "key_dark" 參數的每個值設置 dynData 區塊,而只是列出主要顏色(highColormidColor 等)。

現在讓我們看看納入「分隔橫幅」的項目(在下面的例子中 "basalRate" 視圖連接到 "matchDivider" dynPref 視圖:

"basalRate": {
    "width": 90,
    "height": 32,
    "topmargin": 127,
    "leftmargin": 242,
    "rotation": 0,
    ...
    "leftOffsetTwinHidden": 33,
    "dynPref": "matchDivider"
},

然後在 dynPref 區塊內,您可以看到匹配分隔符參數(key_match_divider鍵),包括2個區塊「true」和「false」,但這兩個區塊僅用來定義視圖將使用「暗色」dynBlock(因此背景和文字顏色與其他視圖外側的顏色完全相同),或「白色」dynBLock,將為背景和文字設置相反的顏色。

"matchDivider": {
    "prefKey": "key_match_divider",
    "true": {
        "dynPref": "dark"
    },
    "false": {
        "dynPref": "white"
    }
},
"dark": {
    "prefKey": "key_dark",
    "true": {
        "color1": "#000000",
        "fontColor1": "#FFFFFF"
    },
    "false": {
        "color1": "#FFFFFF",
        "fontColor1": "#000000"
    }
},

請注意,這裡你位於 「dynData」 區塊中,然後要定義顏色或字體顏色,將使用 dynData(此處未指定),並使用單步驟 ("color1"'fontColor1' )。

  • 對於除 image 以外的所有參數,預設的 「無效值」(如果未由 "invalidColor" 鍵或 "invalidFontColor" 鍵專門設置)將是 "color1""fontColor1"

然後我們將看到第三個範例,包括 IOB 視圖(iob1iob2),我們將對詳細的 IOB 使用較小的文本,對總 IOB 使用較大的文本。

"iob1": {
    "width": 125,
    "height": 33,
    "topmargin": 168,
    "leftmargin": 275,
    "rotation": 0,
    "visibility": "visible",
    "textsize": 19,
    ...
    "dynPref": "prefIob1"
},
"iob2": {
    "width": 125,
    "height": 33,
    "topmargin": 196,
    "leftmargin": 275,
    "rotation": 0,
    "visibility": "visible",
    "textsize": 24,
    ...
    "leftOffsetTwinHidden": -10,
    "dynPref": "prefIob2"
},

在預設的視圖設定中,你會看到文字大小(在 iob1 上為 19,在 iob2 上為 24)以及兩個不同的 dynPref 區塊,這些應調整文字大小(根據詳細的 iob 參數)和顏色(根據深色參數)

"prefIob1": {
    "prefKey": "key_show_detailed_iob",
    "true": {
        "dynPref": "dark",
        "textsize1": 24
    },
    "false": {
        "dynPref": "dark"
    }
},
"prefIob2": {
    "prefKey": "key_show_detailed_iob",
    "true": {
        "dynPref": "dark",
        "textsize1": 19
    },
    "false": {
        "dynPref": "dark"
    }
},

你可以看到根據詳細 iob 參數("key_show_detailed_iob" 鍵),當他為 「true」 時,文字大小會被定義為比預設值更大的固定值(24 代替預設的 19):這是使用文字大小 「step」 功能完成的,並且只使用一個值,因此為單步驟…(請注意,對於除圖像外的所有參數,如果未設置 invalidTextSize,則將使用 textsize1 作為無效資料的文字大小)

然後 「dark」 dynPref 區塊將用來設置顏色和字體顏色

在此範例中,如果啟用了詳細 IOB 且啟用了暗色,將為 iob1 視圖使用的 dynData 區塊為:

{
    "color1": "#000000",
    "fontColor1": "#FFFFFF",
    "textsize1": 24
},

因此,文字將顯示為黑色背景上的白色,並且大小 24 將取代視圖中設置的預設大小 19

如果停用了詳細 IOB 且停用了暗色,則將為相同的 iob1 視圖使用的 dynData 區塊為:

{
    "color1": "#FFFFFF",
    "fontColor1": "#000000"
},

現在文字將顯示為白色背景上的黑色,並且大小為 19

dynPref 使用技巧與訣竅

  • 你可以結合任意多的偏好設定,但要小心,描述的區塊數量可能會快速增加(是指指數增長):如果你連接了3個參數並想要定義所有情況,則將需要8個區塊來描述,因為每個參數只有2個值…

  • 請注意不要建立「無限迴圈」(例如,如果 dynpref1 區塊必須由 dynpref2 區塊來完成,而 dynpref2 區塊又必須由 dynpref1 區塊來完成…)。 在這種情況下,dynpref 區塊將被視為無效…

  • 不要忘記在鍵後面包括數字索引(例如當你在視圖中使用 "textsize" 鍵時,你將不得不在 dynPref 值區塊中使用 "textsize1",因為這是 「dynData」 格式,因此在這種情況下鏈接到單步驟的值)

  • 每個視圖僅應設置一個鍵 "valueKey",因此如果最終 dynData 區塊是由幾個 dynPref 區塊構建,請不要包含多個 "valueKey"(以及相關的 "minData""maxData" 等)。

CustomWatchface V2 的新功能(AAPS V3.3.0 或以上版本)

請注意,使用這些新功能或視圖的錶盤將需要根據 AAPS 3.3.0 版本構建的最新 wear apk。

如果你使用包含 CustomWatchface V1 的 zip 「v2」,則你將在錶盤上缺少資訊或內容錯誤。

CustomWatchface V2 包含這些新功能:

新的狀態視圖

該視圖的鍵是 "status",相應的區塊自動包含在從 wear apk 「Custom Watchface V2」(基於 AAPS 3.3.0 版本或以上版本)導出的模板中

此視圖已納入之前的 AAPS(無圖表)、AAPS(大圖表)和 AAPS(大圖表)之前存在的錶盤中,並包含一個字符串值(在 wear apk 中構建)。

這些之前的錶盤已被刪除,並在 AAPS 3.3.0 中由 3 個新的自訂錶盤取代。

  • 最少的訊息是 IOB 值(無論錶上的 IOB 參數為何,始終可見)

  • 然後你可以看到詳細的 IOB 值(BolusIOB|BasalIOB),如果在偏好設定中啟用

  • 以及 BGI 值(同樣如果在偏好設定中啟用)

這個 "status" 視圖與 "key_show_loop_status" 鍵(在 dynPref 內)相關聯,用於管理可見性。

此視圖在 V1 中可通過 "iob1""iob2""bgi" 現有視圖進行管理,但需要複雜的 dynPref 設定,以根據不同的設定選擇進行每個資訊的間距管理。

新的臨時目標視圖

此視圖的關鍵是"tempTarget",並且相關區塊會自動包含在從 Wear APK 「Custom Watchface V2」 匯出的模板中(自 AAPS 3.3.0 版本或更高版本構建)。

它顯示在錶盤內:

  • 個人設定目標(單一數值或最小-最大目標數值)(預設顏色為白色)

  • 循環調整目標(預設顏色為綠色)

  • 使用者定義的臨時目標(預設顏色為黃色)

這個 "tempTarget" 視圖與 "key_show_temp_target" 鍵(在 dynPref 內)相關聯,以管理是否顯示。

DynData 鍵(與顏色資訊相關聯)為 "tempTarget"(預設 DynData 鍵與 TempTarget 視圖相關聯)

DynData 值等於:

  • 0(個人設定目標),

  • 1(循環目標)或

  • 2(使用者臨時目標)

請注意,這個視圖也可以顯示外部資料(請參閱 下方),使用 "tempTarget_Ext1""tempTarget_Ext2" 鍵(視圖和 DynData)

新的儲存槽水位視圖

這個視圖的鍵為 "reservoir",相關聯的區塊會自動包含在從 wear apk 「自訂錶盤 V2」 匯出的模板中(由 AAPS 3.3.0 版或以上版本建置)。

這個視圖顯示藥量水準(以 U 表示),預設顏色為白色,當 Warnning Level時為黃色,當 Urgent Level 時為紅色

這個 "reservoir" 視圖與 "key_show_reservoir_level" 鍵(在 dynPref 內)相關聯,以管理是否顯示。

與藥量水準相關的 DynData 鍵為:

  • "reservoir"(預設 DynData 鍵與藥量水準視圖相關聯),與胰島素水準 U 相關聯

  • 最小值為 0.0 U

  • 最大值為 500.0 U

  • "reservoirLevel"

  • 0(標準水準,預設為白色)

  • 1(警告水準,預設為黃色)

  • 2(緊急水準,預設為紅色)

請注意,這個視圖也可以顯示外部資料(請參閱 下方),使用 "reservoir_Ext1""reservoir_Ext2""reservoirLevel_Ext1""reservoirLevel_Ext2" 鍵(視圖和 DynData)。

針對 DynData 或 DynPref 的新排版功能

你現在可以管理手錶接收的原始值的自訂排版,並將其納入dyndata 鍵值表中。

為了示範此功能如何運作,讓我們以 AAPS(大圖表)錶盤為例,根據“時間前的值”和新的「狀態」視圖的可見性來查看結果:

AAPS(大圖表)

  • 在左側的第一張截圖中,狀態視圖是可見的(有 IOB、詳細 IOB 和 BGI),因此僅有 1/3 的行可用來顯示時間戳(非常緊湊的資訊,顯示為 1',以及上傳者的電池資訊 U: 55%

  • 在第二張截圖中,現在 status 視圖在錶參數中被隱藏,因此你有很多空間可以顯示完整的時間戳資訊和上傳者電池(1 minute agoUploader : 55%

  • 在右側的第三張截圖中,你在錶中擁有完全相同的設置,但現在時間戳已改變,顯示為「1」以上。 現在自訂錶盤能夠顯示更新的標籤,並具備複數管理功能(2 分鐘前

我不會在這裡解釋如何在壓縮檔中管理整個視圖(根據不同設定定位每個視圖),但我將專注於管理 AAPS(大型)錶盤中排版功能及其相關的動態值。

此功能需要「動態區塊」(可以是 dynData 區塊或 dynPref 區塊)

  • 對於 AAPS(大圖表)錶盤,我們希望根據參數調整格式(根據 status 視圖的可見性使用短或長格式),因此我們使用了 dynPref 區塊。

首先讓我們開始看這些視圖:

"uploader_battery": {
    "width": 200,
    "height": 50,
    "topmargin": 175,
    "leftmargin": 0,
    "rotation": 0,
    "visibility": "visible",
    "textsize": 25,
    "gravity": "center",
    "font": "roboto_condensed_light",
    "fontStyle": "normal",
    "dynPref": "uploader",
    "dynValue": false,
    "fontColor": "#BDBDBD"
},

"timestamp": {
    "width": 200,
    "height": 50,
    "topmargin": 175,
    "leftmargin": 0,
    "rotation": 0,
    "visibility": "visible",
    "textsize": 25,
    "gravity": "center",
    "font": "roboto_condensed_light",
    "fontStyle": "normal",
    "dynPref": "timestamp",
    "dynValue": false,
    "fontColor": "#FFFFFF"
},

這裡最重要的鍵是 "dynValue":擁有這個鍵的資料將啟用原始值的動態管理。 後面的布林值(true 或 false)將定義值是否應「轉換」或不轉換

  • false: 原始值將如實使用,沒有任何限制或轉換

  • true:原始值將被轉換(使用 dynData 區塊中的 minDatamaxData 鍵,並使用 dynData 中定義的 minValuemaxValue

對於這個錶盤,原始值不會進行轉換,因此在兩個視圖中,"dynValue" 鍵已設定為 false

現在我們來看看 "uploader" 區塊在 "dynPref" 中的定義:

"uploader": {
    "prefKey": "key_show_loop_status",
    "true": {
        "dynPref": "uploader_true_ago",
        "invalidTextvalue": "U: --",
        "textvalue1": "U: %.0f%%"
    },
    "false": {
        "dynPref": "uploader_false_ago",
        "invalidTextvalue": "Uploader: --",
        "textvalue1": "Uploader: %.0f%%"
    }
},

預設情況下 "uploader_battery" 視圖與 "uploader_battery" 連接,因此無需添加明確的行

"valueKey": "uploader_battery" (最小值 0,最大值 100,原始值為手機電池的百分比)

排版字串包含於 "textvalue1" 鍵中("textvalue1""textvalue2" 等鍵與 "textvalue" 鍵鏈結,該鍵可以納入 view 區塊中)

  • "textvalue" 鍵可以在視圖區塊中使用排版資訊(在這種情況下,格式將是靜態的,無論值或設定如何)

  • 如果你想根據設定或值來修改排版資訊,那麼所有的 dynData 功能都可以應用,專用鍵包括 "invalidTextValue" 鍵(因為值無效,所以沒有「排版資訊」)以及 "textvalue1""textvalue2"……(以及你想要管理的最小值和最大值之間的任意數量值)

  • 額外的 "dynPref" 鍵用於根據可見視圖、暗黑和分隔線設定定義其他區塊以改變位置和顏色

現在關於排版字串,語法如下: %[flags][width][.precision]f

  • % 是排版的開始,f 是結束,應用於雙精度值的轉換。

    • 請注意,如果你想在字符串中使用 % 字符,必須使用 %% 來指定這不是排版字串,而是百分比字符。

  • [flag] 是可選的,主要可以是 +,如果你始終想在數字前添加符號,或者 ( 如果你想將負值用括號括起來

  • [width] 是可選的,定義輸出中要寫入的最小字元數

  • [.precision] 用於定義小數點後的位數。

    • 請注意,值為 Double,因此最好總是設定精度(以避免因 Kotlin 精度導致的小數點後出現過多字元)

因此在上面的例子中,%.0f 將顯示 Double 值作為整數

現在讓我們看看時間戳 dynPref 區塊以管理複數:

"timestamp": {
    "prefKey": "key_show_loop_status",
    "true": {
        "dynPref": "timestamp_true_uploader",
        "invalidTextvalue": "U: --",
        "textvalue1": "%.0f'"
    },
    "false": {
        "dynPref": "timestamp_false_uploader",
        "minData": 0,
        "maxData": 3,
        "invalidTextvalue": "-- minute ago",
        "textvalue1": "%.0f minute ago",
        "textvalue2": "%.0f minutes ago"
    }
},
  • 如果 status 視圖是可見的(因此 "key_show_loop_status" 鍵為 true),則使用單一格式("textvalue1"),' 作為 「單位」

  • 如果 status 視圖是隱藏的,則有 2 種不同的格式,一種用於 0 或 1 的單數,另一種用於大於 2 的複數值

    • "minData""maxData" 用於定義範圍,並確保單數與複數之間的切換將在 1 和 2 值之間進行

    • 請注意,"maxData"(整數)設定為 3 而不是 2,僅僅因為系統中處理的 Double 資料不是整數,因此略高或略低於 1 的值無論如何都可能有單數或複數格式,即使經過四捨五入成為整數,值等於 1。

  • 對於 timestamp 視圖,將 "dynValue" 鍵設為 false 是很重要的,否則因為排版(單數/複數),所有超過3的值將被限制為 3 minutes ago,使用 maxData 進行轉換…

關於排版功能的附加說明

  • 請記住,唯一可用的動態值是這裡列出的這裡

  • 所有 血糖 值的單位是 mg/dl,如果你想使用排版功能顯示 mmol 單位的值,則必須管理 mg/dl 到 mmol 的轉換。 在 dynDatadynPref 區塊中,應該用來命名將包含 "minValue""maxValue" 的值轉換區塊的鍵應命名為 "dynValue": { ...  }。 (參見 Dyn Data Keys)

  • 如果在某個視圖中你想使用靜態的排版字串,利用 "textvalue" 鍵來定義格式,並利用 "dynValue" 鍵來定義動態值的使用,那麼你還需使用一個 "dynData""dynPref" 區塊(即使是空的),才能使用排版功能。

  • "textvalue1""textvalue2" 到 textvaluen 可以在不使用排版功能的情況下,用來替換雙精度值的步驟,並使用專用的文字標籤(例如,使用 "day_name" 鍵值和七個步驟定義自訂的星期幾名稱…)

  • 完整文件你可以查看Class Formatter

顯示跟隨者的外部資料

自訂錶盤現在能夠在同一錶盤上顯示多達三組資料:AAPS、AAPSCLIENT 和 AAPSCLIENT2

要使用此功能,你需要:

  • 需在手機上安裝至少以下三個應用中的兩個(AAPS、AAPSCLIENT、AAPSCLIENT2)

  • 在 AAPSCLIENT 和/或 AAPSCLIENT2 中啟用廣播資料,以廣播資料到主要應用程式,該應用程式用於與自訂錶盤同步(AAPS 或 AAPSCLIENT)

  • 使用實現包含 _Ext1_Ext2 鍵的視圖的自訂錶盤(請參閱 鍵和鍵值參考

請注意,如果手機上的主要應用是 AAPSCLIENT,而廣播數據的次要應用是 AAPSCLIENT2,則在使用帶有標準視圖和 Ext1 額外視圖的自訂錶盤時,你必須在自訂錶盤專用設定中啟用 切換錶盤中的外部資料 參數(Ext1 連結到 AAPSCLIENT,Ext2 連結到 AAPSCLIENT2)。

此外,增加了三個新視圖("patient_name""patient_name_Ext1""patient_name_Ext2" *),以便能夠自動在錶盤中包含患者姓名(設定於 AAPS 偏好設定中)(見下方範例)

CustomWatchface_7

鍵與鍵值參考

中繼資料鍵清單

標準資訊中繼資料鍵清單

Key

註解

"name"

自訂錶盤的名稱

"author"

作者的名字或別名

"created_at"

創建(或更新)日期,請小心 / 是一個特殊字符,因此如果你在日期中使用它,請在前面加上 \

"cwf_version"

錶盤外掛與你的錶盤設計相容

"author_version"

作者可以在此指定其錶盤的版本

"comment"

可以用來提供目前錶盤的一些資訊或限制的自由文本

偏好設定鍵

Key

預設值和註解

"key_show_detailed_iob"

如果為 true,將會在 iob2 視圖中鎖定詳細的 IOB 資料,然後 iob1(如果可見且未被圖示取代)將顯示 iob 總量。
如果為 false,則在 iob2 視圖中鎖定 iob 總量。 如果 iob2 的寬度太小,無法正確顯示詳細的 iob 資料,則可以使用

"key_show_detailed_delta"

false(僅當設計與 deltaavg_delta 視圖的詳細 delta 寬度不相容時)

"key_show_bgi"

如果你的設計需要 bgi 資訊,則為 true

"key_show_iob"

如果你的設計需要 iob1iob2 視圖,則為 true

"key_show_cob"

如果你的設計需要 cob1cob2 視圖,則為 true

"key_show_delta"

如果你的設計需要 delta 資訊,則為 true

"key_show_avg_delta"

如果你的設計需要 avg_delta 資訊,則為 true

"key_show_temp_target"

如果你的設計需要 tempTarget 資訊,則為 true

"key_show_reservoir_level"

如果你的設計需要 reservoir 資訊,則為 true

"key_show_uploader_battery"

如果你的設計需要 uploader_battery(電話電池)資訊,則為 true

"key_show_rig_battery"

如果你的設計需要 rig_battery 資訊,則為 true

"key_show_temp_basal"

如果你的設計需要 basalRate 資訊,則為 true

"key_show_direction"

如果你的設計需要 direction 資訊(血糖 變化箭頭),則為 true

"key_show_ago"

如果你的設計需要 timestamp 資訊(上次接收到血糖資料的分鐘數),則為 true

"key_show_bg"

如果你的設計需要 sgv 資訊(血糖 值),則為 true

"key_show_loop_status"

如果你的設計需要 loop 資訊(循環狀態和時間),則為 true

"key_show_week_number"

如果你的設計需要 week_number 資訊(循環狀態和時間),則為 true

"key_show_date"

如果你的設計需要 日期月份星期幾 資訊,則為 true

內部鍵

Key

註解

"filename"

當錶盤載入時,該鍵將自動建立(或更新),並將包含匯出資料夾中的本地 zip 檔案名稱

"cwf_authorization"

當錶盤載入時該鍵將被建立,並且每次在 Wear 設定中更改授權偏好設定時都會更新,並用於同步手錶授權

常規參數清單

Key

註解

"highColor"

"#FFFF00"(預設黃色):當血糖高於上限(高血糖)時,血糖 值、趨勢箭頭和圖表中的血糖值顏色

"midColor"

"#00FF00"(預設綠色):當血糖處於範圍內時,血糖 值、趨勢箭頭和圖表中的血糖值顏色

"lowColor"

"#FF0000"(預設紅色):當血糖低於下限(低血糖)時,血糖 值、趨勢箭頭和圖表中的血糖值顏色

"lowBatColor"

"#E53935"(預設深紅色):當 uploader_battery 值較低(低於 20%)時的顏色

"carbColor"

"#FB8C00"(預設橙色):圖表中的碳水化合物點的顏色

"basalBackgroundColor"

"#0000FF"(預設深藍色):圖表中的 TBR 曲線顏色

"basalCenterColor"

"#64B5F6"(預設淺藍色):圖表中的注射或 SMB 點的顏色

"gridColor"

"#FFFFFF"(預設白色):圖表中的線條和文字刻度的顏色

"pointSize"

2(預設值):圖表中點的大小(1 為小點,2 為大點)

"enableSecond"

false(預設值):指定錶盤是否在 時間秒針 視圖中顯示秒數。 在視圖的可見性和這個總體設定之間保持一致非常重要,這將允許每秒更新時間資訊

"dayNameFormat"

「E」(預設值):從 「E」 到 「EEEE」 指定日期格式(數字、簡稱、全名)

"monthFormat"

「MMM」(預設值):從 「M」 到 「MMMM」 指定月份格式(數字、簡稱、全名)

硬編碼資源檔案清單

對於大多數圖像,高和低後綴允許根據血糖數值(在範圍內、高血糖或低血糖)調整圖像

檔案名稱

註解

CustomWatchface

顯示在錶盤選擇和 Wear 外掛中的圖像

Background,
BackgroundHigh,
BackgroundLow

none(預設黑色):背景圖像。 背景始終是可見的,預設顏色為黑色,如果未提供圖像。 可以修改顏色以符合錶盤設計

CoverChart,
CoverChartHigh,
CoverChartLow

none(預設值):圖表前面的圖像(應具有透明度,以便看到後面的圖表)可用於限制圖表的邊界

CoverPlate,
CoverPlateHigh,
CoverPlateLow

簡單的錶盤(預設值):所有文字值前面的圖像。 必須透明,才能看到後面的所有值

HourHand,
HourHandHigh,
HourHandLow

hour_hand(預設值):時針圖像。 提供了一個預設圖像,可以著色以符合類比設計。 請注意,旋轉的軸心將是圖像的中心

MinuteHand,
MinuteHandHigh,
MinuteHandLow

minute_hand(預設值):分針圖像。 提供了一個預設圖像,可以著色以符合類比設計。 請注意,旋轉的軸心將是圖像的中心

SecondHand,
SecondHandHigh,
SecondHandLow

second_hand(預設值):秒針圖像。 提供了一個預設圖像,可以著色以符合類比設計。 請注意,旋轉的軸心將是圖像的中心

ArrowNone

?? (預設值):當沒有可用的有效箭頭時顯示的圖像。

ArrowDoubleUp

↑↑(預設值):向上雙箭頭圖像

ArrowSingleUp

↑(預設值):單箭頭向上圖像

Arrow45Up

↗(預設值):四十五度向上箭頭圖像

ArrowFlat

→(預設值):數值箭頭圖像

Arrow45Down

↘(預設值):四十五度向下箭頭圖像

ArrowSingleDown

↓(預設值):單箭頭向下圖像

ArrowDoubleDown

↓↓(預設值):向下雙箭頭圖像

對於上述的每個檔名,副檔名可以是 .jpg.png.svg。 但請小心,.jpg 無法管理透明度(因此大部分文件應該使用 .png 或 .svg,以免遮蓋背景後的視圖…)

視圖鍵清單

此清單從背景到前景排序,這在你組織錶盤時非常重要,因為某些圖像或文字可能會被其他圖像遮住.

注意:所有結尾包含 _Ext1_Ext2 的鍵都是新的,並專為多使用者錶盤而設計。

Key

視圖類型

相關資料

DynData 鍵

"background"

圖像視圖

"chart"

專用圖表視圖

圖形曲線

"cover_chart"

圖像視圖

"freetext1"

文字視圖

"freetext2"

文字視圖

"freetext3"

文字視圖

"freetext4"

文字視圖

"patient_name" *
"patient_name_Ext1" *
"patient_name_Ext2" *

文字視圖

患者姓名

"iob1"
"iob1_Ext1" *
"iob1_Ext2" *

文字視圖

IOB 標籤或 IOB 總量

"iob2"
"iob2_Ext1" *
"iob2_Ext2" *

文字視圖

IOB 總量或 IOB 詳細資訊

"cob1"
"cob1_Ext1" *
"cob1_Ext2" *

文字視圖

碳水化合物標籤

"cob2"
"cob2_Ext1" *
"cob2_Ext2" *

文字視圖

COB 值

"delta"
"delta_Ext1" *
"delta_Ext2" *

文字視圖

短期 delta(5 分鐘)

delta

delta_Ext1
delta_Ext2

"avg_delta"
"avg_delta_Ext1" *
"avg_delta_Ext2" *

文字視圖

平均 Delta(15 分鐘)

avg_delta
avg_delta_Ext1
avg_delta_Ext2

"tempTarget"*
"tempTarget_Ext1" *
"tempTarget_Ext2" *

文字視圖

血糖目標(單一數值或最小 - 最大目標值)

臨時目標
臨時目標_Ext1
臨時目標_Ext2

"藥量"*
"藥量_Ext1" *
"藥量_Ext2" *

文字視圖

儲液槽液面

藥量
藥量水平
藥量_Ext1
藥量水平_Ext1
藥量_Ext2
藥量水平_Ext2

"uploader_battery"

文字視圖

電話電池電量(百分比)

uploader_battery

"機械電池"
"機械電池_Ext1" *
"機械電池_Ext2" *

文字視圖

rig 電池電量(百分比)

機械電池
機械電池_Ext1
機械電池_Ext2

"基礎率"
"基礎率_Ext1" *
"基礎率_Ext2" *

文字視圖

百分比或絕對值

"bgi"
"bgi_Ext1" *
"bgi2_Ext2" *

文字視圖

mg/dL/(5 分鐘) 或 mmol/(5 分鐘)

"狀態" *
"狀態_Ext1" *
"狀態_Ext2" *

文字視圖

IOB的合成(根據手錶中的IOB設定),詳細的IOB(根據手錶中的設定和BGI(根據手錶中的設定))

"time"

文字視圖

HH:MM 或 HH:MM:SS

"hour"

文字視圖

HH

"minute"

文字視圖

MM

"second"

文字視圖

SS

"timePeriod"

文字視圖

上午或下午

""day_name""

文字視圖

星期幾名稱(參考 dayNameFormat)

星期名稱

"day"

文字視圖

DD 日期

日期

"week_number"

文字視圖

(WW)週數

週數

"month"

文字視圖

月份名稱(參考 monthFormat)

"循環"
"循環_Ext1" *
"循環_Ext2" *

文字視圖

自上次執行後的分鐘數和狀態(背景中的彩色箭頭),可以使用 DynData 調整彩色箭頭

循環

"方向"
"方向_Ext1" *
"方向_Ext2" *

圖像視圖

趨勢箭頭

趨勢方向

"時間戳"
"時間戳_Ext1" *
"時間戳_Ext2" *

文字視圖

整數(自上次接收資料後的分鐘數)

時間戳

"sgv"
"sgv_Ext1" *
"sgv_Ext2" *

文字視圖

sgv 值(mg/dL 或 mmol)

sgv
sgv水平
sgv_Ext1
sgv水平_Ext1
sgv_Ext2
sgv水平_Ext2

"cover_plate"

圖像視圖

"hour_hand"

圖像視圖

"minute_hand"

圖像視圖

"second_hand"

圖像視圖

*自Custom Watchface V2.0或以上版本中新增的視圖(可用於AAPS 3.3.0穿戴apk或以上版本)

Json 鍵清單

通用鍵

可用於所有視圖類型(文字視圖、圖像視圖、圖表視圖)

Key

類型

註解 / 值

"width"

整數

視圖寬度(像素)

"height"

整數

視圖的高度,以像素為單位

"topmargin"

整數

頂端邊距(像素)

"leftmargin"

整數

左側邊距(像素)

"rotation"

整數

旋轉角度(度數)

"visibility"

文字

請參閱鍵值表

"dynData"

文字

鍵區塊名稱,將指定要連結的動態資料和相關動畫(顏色、圖像、位移、旋轉)
"dynData": "customName", (見下文)

"leftOffset"

布林值

如果希望啟用由 dynData 值引起的數值位移(正值或負值),請包含此鍵並將鍵值設為 true

"topOffset"

布林值

如果希望啟用由 dynData 值引起的垂直位移(正值或負值),請包含此鍵並將鍵值設為 true

"rotationOffset"

布林值

如果希望啟用由 dynData 值引起的旋轉(正值或負值),請包含此鍵並將鍵值設為 true

"twinView"

文字

另一個視圖的鍵(通常另一個視圖也會包含雙視圖參數,並包含此視圖的鍵)

"topOffsetTwinHidden"

整數

如果雙視圖被隱藏,則將視圖位置垂直移動的像素數(正值或負值)
topOffsetTwinHidden = (topOffset twinView - topOffset thisView)/2

"leftOffsetTwinHidden"

整數

如果雙視圖被隱藏,則將視圖位置數值移動的像素數(正值或負值)
隱藏雙視圖時的leftOffsetTwinHidden =(leftOffset twinView - leftOffset thisView))/2

"dynPref"

文字

鍵區塊名稱,將指定要連結的動態偏好設定和相關動畫(顏色、圖像、位移、旋轉)
"dynPref": "customName", (見下文)

文字視圖鍵

Key

類型

註解

"textsize"

整數

字體大小(像素)(請記住字體可能包含頂部和底部邊距,因此實際文字大小通常小於設定的像素數)。 請注意,大小應小於視圖高度,以避免被截斷

"gravity"

文字

請參閱鍵值表

"font"

文字

請參閱鍵值表以查看可用字體。
也可以是 zip 檔案中包含的字體檔名(無副檔名)

"fontStyle"

文字

請參閱鍵值表

"fontColor"

文字

管理字型顏色
"#RRVVBB": RVB 格式的顏色代碼,十六進制值 #FF0000 是紅色
"#AARRVVBB": AA 包含透明度資訊,00 是透明,FF 是不透明
"bgColor": 鍵值 bgColor 是根據血糖值使用 highColor、midColor 或 lowColor 的簡單方法

"allCaps"

布林值

如果希望文字為大寫(主要用於星期名稱或月份名稱),請設為 true

"background"

文字

resource_filename 你可以將資源圖像納入文字視圖的背景(資源檔案將被調整為符合文字視圖的高度和寬度,但保持圖像比例)。 文字值將顯示在背景圖像的前面。
- 請注意,此鍵也可用於 chart 視圖,以設置自訂背景於圖表中,顯示在背景圖像前面

"color"

文字

管理視圖背景的顏色或者調整圖像顏色(僅適用於位圖)
"#RRVVBB": RVB 格式的顏色代碼,十六進制值 #FF0000 是紅色
"#AARRVVBB": AA 包含透明度資訊,00 是透明,FF 是不透明
"bgColor": 鍵值 bgColor 是根據血糖值使用 highColor、midColor 或 lowColor 的簡單方法
- 對於預設嵌入的圖像(手、錶盤),顏色將直接應用,對於位圖圖像(jpg 或 png),這將對圖像應用飽和度漸層濾鏡
- 對於 svg,這個參數將無效(svg 檔案的顏色不能被修改)
- 請注意,此鍵也可用於 chart 視圖,以設置自訂背景於圖表中,顯示在背景圖像前面

"textvalue"

文字

此鍵特定於佈局中包含的四個自由文字視圖(從freetext1到freetext4),這允許你設定要包含的文字(可以是標籤,或只是:以便在小時視圖和分鐘視圖之間添加分隔符…)

從Custom Watchface外掛v2(AAPS 3.3)開始,textvalue可用於包括其他文字視圖的格式字串(可與dynValue鍵和dynDatadynPref一起使用)。 例如

"dynValue"*

布林值

如果你希望在(double)中包含原始值則為真。 如果你希望有專用格式來顯示數值,這在使用 texvalue 鍵時非常有用

*自Custom Watchface V2.0或以上版本中新增的鍵(可用於AAPS 3.3.0穿戴apk或以上版本)

圖像視圖鍵

Key

類型

註解

"color"

文字

管理視圖背景的顏色或者調整圖像顏色(僅適用於位圖)
"#RRVVBB": RVB 格式的顏色代碼,十六進制值 #FF0000 是紅色
"#AARRVVBB": AA 包含透明度資訊,00 是透明,FF 是不透明
"bgColor": 鍵值 bgColor 是根據血糖值使用 highColor、midColor 或 lowColor 的簡單方法
- 對於預設嵌入的圖像(手、錶盤),顏色將直接應用,對於位圖圖像(jpg 或 png),這將對圖像應用飽和度漸層濾鏡
- 對於 svg,這個參數將無效(svg 檔案的顏色不能被修改)
- 請注意,此鍵也可用於 chart 視圖,以設置自訂背景於圖表中,顯示在背景圖像前面

圖表視圖鍵

Key

類型

註解

"color"

文字

管理視圖背景的顏色或者調整圖像顏色(僅適用於位圖)
"#RRVVBB": RVB 格式的顏色代碼,十六進制值 #FF0000 是紅色
"#AARRVVBB": AA 包含透明度資訊,00 是透明,FF 是不透明
"bgColor": 鍵值 bgColor 是根據血糖值使用 highColor、midColor 或 lowColor 的簡單方法
- 對於預設嵌入的圖像(手、錶盤),顏色將直接應用,對於位圖圖像(jpg 或 png),這將對圖像應用飽和度漸層濾鏡
- 對於 svg,這個參數將無效(svg 檔案的顏色不能被修改)
- 請注意,此鍵也可用於 chart 視圖,以設置自訂背景於圖表中,顯示在背景圖像前面

"background"

文字

resource_filename 你可以將資源圖像納入文字視圖的背景(資源檔案將被調整為符合文字視圖的高度和寬度,但保持圖像比例)。 文字值將顯示在背景圖像的前面。
- 請注意,此鍵也可用於 chart 視圖,以設置自訂背景於圖表中,顯示在背景圖像前面

鍵值

鍵值

註解

"gone"

可見性

視圖隱藏

"visible"

可見性

視圖在錶盤上可見(但可在參數中啟用或停用可見性)

"center"

對齊

文字在視圖中垂直和數值置中

"center"

對齊

文字在視圖中垂直置中但靠左對齊

"right"

對齊

文字在視圖中垂直置中但靠右對齊

"sans_serif"

字體

"default"

字體

"default_bold"

字體

"monospace"

字體

"serif"

字體

"Roboto Condensed Bold"

字體

"Roboto Condensed Light"

字體

"Roboto Condensed Regular"

字體

"roboto_slab_light"

字體

"normal"

字體樣式

"bold"

字體樣式

"bold_italic"

字體樣式

"italic"

字體樣式

DynData 鍵

Key

類型

註解

"dynData"

區塊

定義所有動態資料區塊的區塊,將用於視圖。 通常位於最後一個視圖之後。
在此區塊中定義的所有鍵將用作視圖區塊中的鍵值:
"dynData": { dynData 區塊 }
每個區塊由自訂名稱和若干內部鍵定義:
"customName": { 一個 dynData 區塊 }

"valueKey"

文字

要使用的動態資料名稱(通常與相關的視圖鍵相同)。
如果不存在,則預設值將是使用此區塊的視圖所使用的值。
例如,你可以定義一個區塊來自訂電池電量百分比而不指定 valueKey,然後使用相同的區塊來自訂上傳器電池和 rig 電池。

"minData"

整數

指定要考慮的 AAPS 資料的最小值:例如,如果值是 sgv(單位是 mg/dl,內部使用),如果 minData 設定為 50,則所有血糖值低於 50 mg/dl 的將被設置為 50。
- 請注意 minData 和 maxData 將用於計算動態值(以像素或度數表示)。

"maxData"

整數

指定要考慮的 AAPS 資料的最大值:例如,如果值是 sgv(單位是 mg/dl,內部使用),如果 maxData 設定為 330,則所有血糖值高於 330 mg/dl 的將被設置為 330。

"leftOffset"

區塊

指定視圖的數值偏移,根據最小值和最大值的像素數量。
- 這包括 minValue 鍵、maxValue 鍵和 invalidValue 鍵(可選)
- 如果資料低於或等於 minData,則視圖將偏移到 minValue 像素;如果資料高於或等於 maxData,則視圖將偏移到 maxValue 像素
注意,要應用此偏移,leftOffset 必須設定為 true

"topOffset"

區塊

根據最小值和最大值(以像素表示)指定視圖的垂直位移。
- 他包括 minValue 鍵、maxValueKey 和 invalidValue 鍵(可選)。
- 如果資料小於或等於 minData,則視圖將移動到 minValue 像素,如果資料大於或等於 maxData,則視圖將移動到 maxValue 像素。
請注意,要應用此位移,應在視圖中將 topOffset 設置為 true。

"rotationOffset"

區塊

指定視圖的旋轉角度,根據最小值和最大值的像素數量。
- 這包括 minValue 鍵、maxValue 鍵和 invalidValue 鍵(可選)
- 如果資料低於或等於 minData,則視圖將旋轉 minValue 度;如果資料高於或等於 maxData,則視圖將旋轉 maxValue
注意,要應用此旋轉,rotationOffset 必須設定為 true

"dynValue"*

區塊

指定從最小和最大範圍到像素的最小和最大值之間的 dynValue 轉換。
- 這包括 minValue 鍵、maxValue 鍵和 invalidValue 鍵(可選)
- 如果資料低於或等於 minData,則發送的 dynValue 將是 minValue(轉換為雙精度),如果資料高於或等於 maxData,則計算的 dynValue 將是 maxValue(轉換為雙精度)
請注意,要應用此轉換,dynValue 鍵應在視圖內設置為 true

"minValue"

整數

要應用於視圖的結果值(此鍵僅適用於 leftOffset、topOffset 或 rotationOffset 區塊內)

"maxValue"

整數

要應用於視圖的結果值(此鍵僅適用於 leftOffset、topOffset 或 rotationOffset 區塊內)

"invalidValue"

整數

如果資料無效,則要應用於視圖的結果值(此鍵僅適用於 leftOffset、topOffset 或 rotationOffset 區塊內)

"invalidImage"

文字

如果資料無效,則用於 ImageView 或背景 TextView 的 resource_filename

image1_to_n

文字

resource_filename 圖片用於每個步驟在 minData(或接近 minData)與 "image1" 和 maxData(或接近 maxData)之間的影像n
例如,如果你放了 5 張圖片(從 image1 到 image5),則 minData 和 maxData 之間的範圍將被分為 5 個步驟,根據資料值,將顯示相應的圖片

"invalidFontColor"

文字

如果資料無效,管理字體顏色的步驟
"#RRVVBB""#AARRVVBB":如果接收到無效資料,則使用的顏色(如果 AA=00,則可以透明)

fontColor1_to_n

文字

管理字型顏色步驟
"#RRVVBB""#AARRVVBB": 用於 minData(或接近 minData)與 "fontColor1" 以及 maxData(或接近 maxData)與 fontColorn 之間的步驟顏色

"invalidColor"

文字

如果資料無效,管理背景顏色或圖像顏色的步驟
"#RRVVBB""#AARRVVBB":如果接收到無效資料,則使用的顏色(如果 AA=00,則可以透明)

color1_to_n

文字

管理背景顏色或圖像顏色步驟
"#RRVVBB""#AARRVVBB": 用於 minData(或接近 minData)與 "color1" 以及 maxData(或接近 maxData)與 colorn 之間的步驟顏色

"invalidTextSize"

整數

如果資料無效,管理文字大小的步驟

textsize1_to_n

整數

管理文字大小,用於 minData(或接近 minData)與 "textsize1" 以及 maxData(或接近 maxData)與 textsizen 之間的步驟

"invalidLeftOffset"

整數

如果資料無效,管理 leftOffset 的步驟

左偏移1_to_n

整數

管理左偏移以用於每個步驟,介於最小資料(或接近最小資料)與"leftOffset1"及最大資料(或接近最大資料)與leftOffsetn
注意,可以與dynPref一起使用,當另一個隱藏時來移動視圖…

"invalidTopOffset"

整數

如果資料無效,管理 topOffset 的步驟

topOffset1_to_n

整數

管理每個步驟要使用的 topOffset,從 minData(或接近 minData)開始為 topOffset1,maxData(或接近 maxData)為 topOffsetn
請注意,可以與 dynPref 一起使用,當另一個視圖被隱藏時移動視圖…

"invalidRotationOffset"

整數

如果資料無效,管理 rotationOffset 的步驟

rotationOffset1_to_n

整數

管理每個步驟要使用的 rotationOffset,從 minData(或接近 minData)開始為 rotationOffset1,maxData(或接近 maxData)為 rotationOffsetn

"invalidTextvalue"*

文字

如果資料無效,管理textvalue

textvalue1_to_n *

文字

管理 textvalue,用於在 minData(或接近 minData)與 textvalue1 之間按步驟顯示,與 maxData(或接近 maxData)使用 textvaluen
注意,如果在視圖中設置了 "dynValue" 為 true,則可包含格式化字串

*自Custom Watchface V2.0或以上版本中新增的鍵(可用於AAPS 3.3.0穿戴apk或以上版本)

DynData 鍵值

鍵值

註解

"sgv"
"sgv_Ext1" *
"sgv_Ext2" *

valueKey

預設 minData = 39 mg/dL
預設 maxData = 400 mg/dL
- 請注意,實際的 maxData 與你的傳感器相關,內部值的單位始終為 mg/dL

"sgv水平"
"sgv水平_Ext1" *
"sgv水平_Ext2" *

valueKey

預設 minData = -1(低血糖)
預設 maxData = 1(高血糖)
如果血糖在範圍內 = 0

"方向"
"方向_Ext1" *
"方向_Ext2" *

valueKey

預設 minData = 1(雙箭頭向下)
預設 maxValue = 7(雙箭頭向上)
數值箭頭資料 = 4
錯誤或遺失資料 = 0(??)

"delta"
"delta_Ext1" *
"delta_Ext2" *

valueKey

預設 minData = -25 mg/dL
預設 maxData = 25 mg/dL
- 請注意,實際的 minData 和 maxData 可能會超出上述範圍,內部值的單位始終為 mg/dL

"avg_delta"
"avg_delta_Ext1" *
"avg_delta_Ext2" *

valueKey

預設 minData = -25 mg/dL
預設 maxData = 25 mg/dL
- 請注意,實際的 minData 和 maxData 可能會超出上述範圍,內部值的單位始終為 mg/dL

"tempTarget"*
"tempTarget_Ext1" *
"tempTarget_Ext2" *

valueKey

預設最小資料 = 0(個人設定目標)
預設最大資料 = 2(臨時目標)
目標通過循環調整 = 1
預設或缺失資訊 = 0

"藥量"*
"藥量_Ext1" *
"藥量_Ext2" *

valueKey

預設最小資料 = 0 U
預設最大資料 = 500 U

"藥量水平"*
"藥量水平_Ext1" *
"藥量水平_Ext2" *

valueKey

預設最小資料 = 0(標準顏色)
預設最大資料 = 2(緊急顏色)
警告顏色 = 1

"uploader_battery"

valueKey

預設 minData = 0%
預設 maxData = 100%

"機械電池"
"機械電池_Ext1" *
"機械電池_Ext2" *

valueKey

預設 minData = 0%
預設 maxData = 100%

"時間戳"
"時間戳_Ext1" *
"時間戳_Ext2" *

valueKey

預設 minData = 0 分鐘
預設 maxData = 60 分鐘

"循環"
"循環_Ext1" *
"循環_Ext2" *

valueKey

預設 minData = 0 分鐘
預設 maxData = 28 分鐘
- 請注意,狀態箭頭在 14 分鐘以下顯示為綠色,14 分鐘以上顯示為紅色,因此如果你放置兩個圖像,可以使用預設的 minData 和 maxData 來替換狀態背景為自訂圖像。

"day"

valueKey

預設 minData = 1
預設 maxData = 31

""day_name""

valueKey

預設 minData = 1
預設 maxData = 7

"month"

valueKey

預設 minData = 1
預設 maxData = 12

"week_number"

valueKey

預設 minData = 1
預設 maxData = 53

*自Custom Watchface V2.0或以上版本中新增的鍵(可用於AAPS 3.3.0穿戴apk或以上版本)

DynPref 鍵

Key

類型

註解

"dynPref"

區塊

定義所有動態偏好設定區塊的區塊,將用於視圖。 通常位於最後一個視圖或 dynData 區塊之後。
在此區塊中定義的所有鍵將用作視圖區塊中的鍵值:
"dynPref": { dynPref 區塊 }
每個區塊由自訂名稱和若干內部鍵定義:
"customName": { 一個 dynPref 區塊 }

"dynPref"

文字

在視圖區塊中
要使用的動態 dynPref 區塊名稱(通常與相關的視圖鍵或相關的偏好設定相同)。

"dynPref"

文字

在 dynPref 區塊中包含的部分 dynData 區塊內
要使用的動態 dynPref 區塊名稱,用於補全 dynData 區塊。 這使你可以根據多個偏好設定調整 dynData 區塊。

"dynPrefColor"

文字

此鍵專用於包含所有主顏色的主區塊(highColor、midColor、lowColor、圖表顏色…)。 如果你希望根據偏好設定調整主顏色,將使用此鍵。

"prefKey"

文字

指定偏好設定鍵值,用以獲得用戶偏好設定(請參見下方的 PrefKey 值)。 此鍵應用於 dynPref 區塊內。
然後根據偏好鍵,dynPref 區塊應包含與 prefKey 值數量相同的鍵。
請注意,大多數偏好設定是 「布林值」,因此你應在 dynPref 區塊中找到這兩個 dynData 區塊:
"true": { dynData 區塊 },
"false": { dynData 區塊 }

"true"

區塊

大多數偏好設定將設置布林值 "true""false"。 當用戶選擇的偏好為 true 時,你將指定要使用的 dynData 區塊。
請注意,如果該區塊還包含 "dynPref": 鍵,則此 dynData 區塊將與其他區塊合併。 這允許你根據一個偏好設定調整顏色,並根據另一個偏好設定調整文字大小

"false"

區塊

大多數偏好設定將設置布林值 "true""false"。 當用戶選擇的偏好為 false 時,你將指定要使用的 dynData 區塊。
請注意,如果該區塊還包含 "dynPref": 鍵,則此 dynData 區塊將與其他區塊合併。 這允許你根據一個偏好設定調整顏色,並根據另一個偏好設定調整文字大小

偏好設定鍵值

所有包含在 偏好設定鍵 章節中的鍵都可以用來調整視圖參數

你也可以使用以下 AAPS(自訂)特定參數中包含的附加鍵:

Key

類型

註解

"key_units"

布林值

true:如果 AAPS 上選擇的單位為 mg/dL
false:如果 AAPS 上選擇的單位為 mmol

"key_dark"

布林值

true:使用深色背景
false:使用淺色背景
注意:此參數通常用於先前的 AAPS 錶盤(AAPS、AAPS V2…)

"key_match_divider"

布林值

true:在 AAPS、AAPS v2 錶盤中包含的分隔線將不可見
false:在 AAPS、AAPS v2 錶盤中包含的分隔線將可見
注意:此設置通常與深色偏好設定結合(在 dynData 區塊中使用 dynPref 鍵)來設置文字顏色(和背景),使其與深色參數相同或相反的顏色…