connectIQ API から時計が丸いか正方形かを確認する可能性はありますか?
私のアプリはタイマーの進行状況バーを描画しています。画面が丸いか正方形かを判断する方法を見つけたら、それを汎用にすることができます
クラスToybox::System::DeviceSettings
にはメソッドがありscreenShape()
ます。
次の戻り値があります。
SCREEN_SHAPE_ROUND = 1
SCREEN_SHAPE_SEMI_ROUND = 2
SCREEN_SHAPE_RECTANGLE = 3
リソース コンパイラを使用して、さまざまな画面ジオメトリのリソースを指定できます。これを利用して、アプリが実行されているデバイスを特定できます。
プロジェクトでは、プロジェクトのルートにデバイス固有のディレクトリを作成して、サポートするデバイスごとに一意のリソース セット (文字列、画像、メニューなどを含む) を指定します (例: resources-vivoactiveまたはresources-fenix3)。)。
次に、各デバイスのリソース ディレクトリ内のresources.xmlファイルに、デバイス タイプを指定する文字列リソースを作成します。
<resources>
<bitmap id="LauncherIcon" filename="images/launcher_icon.png" />
<string id="AppName">MyApp</string>
<string id="deviceType">vivoactive</string>
</resources>
アプリが起動したら、簡単なチェックを行って、アプリが実行されているデバイスを取得します。
function onStart() {
deviceType = Ui.loadResource(Rez.Strings.deviceType);
}
次に、特定のデバイスに固有の何かを行う必要がある場合は、常にdeviceTypeを確認します。
function drawProgressBar() {
if (deviceType.equals("vivoactive")) {
// Do vivoactive-specific stuff here
...
}
}
必要に応じてこれを少し抽象化し、「round」、「square」などのより一般的な deviceType を使用して購入することもできます。これにより、すべての固有のデバイス モデルを処理するロジックを記述する必要がなくなります。
直接的な機能はないようですが、ウォッチフェイスの幅と高さをいつでも確認できます。
dc.getWidth(), dc.getHeight()
たとえば 218px のように等しい場合は、Fenix 3であり、明らかに丸い顔です。205px x 148px の場合は、正方形のvívoactiveを扱っています。
onLayoutから呼び出すことができる関数を書くかもしれません:
function isRoundFace (dc) {
return dc.getWidth() == dc.getHeight();
}