iT邦幫忙

2023 iThome 鐵人賽

DAY 30
0
SideProject30

拿到一支Garmin錶,要怎麼開發app?系列 第 30

[Day-30] 將我的錶面上架到Connect IQ

  • 分享至 

  • xImage
  •  

最後一天,來試著上架這個錶面吧

在開始之前,先實際測試一下在實機的效果怎麼樣
ctrl+shift+p 輸入Monkey C: Build for Device
https://ithelp.ithome.com.tw/upload/images/20231014/20128973aTpbyPSPAK.png
選擇編譯檔的輸出目錄之後,按下release
編譯完成
https://ithelp.ithome.com.tw/upload/images/20231014/20128973dAobu4m5HF.png
接著將手錶連接到電腦,
把MyFirstWatchFace.prg丟到我的garmin錶的GARMIN/APPS目錄
https://ithelp.ithome.com.tw/upload/images/20231014/20128973bymWc7tSoR.png
就完成了

實際運作發現,錶面的秒數在走個幾秒之後就會停下來,
查了一下才知道,原來手錶會自動進入low power mode,
每隔一分鐘才會再重新刷新螢幕,
除非偵測到使用者在使用,否則不會每秒刷新一次螢幕,
因此大多數開發者都會寫成進入low power mode之後隱藏秒數,
避免因為刷新速度慢導致秒數有誤的尷尬情況

簡單處理一下,在MyFirstWatchFaceView.mc增加一個全域變數

var isHighPower = true;

加個判斷只有在HighPower時顯示秒數

        if(isHighPower==true){
            dc.drawText(dc.getWidth()/2, dc.getHeight()/5*3, 
            Graphics.FONT_SYSTEM_MEDIUM, Lang.format("=$1$=",[currentSec]), Graphics.TEXT_JUSTIFY_CENTER);
        }

然後在onExitSleep()、onEnterSleep()
簡單加個一段就可以解決了

    function onExitSleep() as Void {
        isHighPower = true;
    }

    function onEnterSleep() as Void {
        isHighPower = false;
    }

除此之外,看起來沒什麼大問題,再次按下ctrl+shift+p
輸入Monkey C: Export Project
選擇輸出資料夾之後,會產生一個.iq檔案
我的是MyFirstWatchFace.iq
到https://developer.garmin.com/connect-iq/submit-an-app/
上傳檔案
https://ithelp.ithome.com.tw/upload/images/20231014/20128973c3JPI2FEUf.png
接著填寫一些文字敘述跟上傳圖片,就完成了


上一篇
[Day-29] 開發新的錶面-10
系列文
拿到一支Garmin錶,要怎麼開發app?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言