3

connectIQ API から時計が丸いか正方形かを確認する可能性はありますか?

私のアプリはタイマーの進行状況バーを描画しています。画面が丸いか正方形かを判断する方法を見つけたら、それを汎用にすることができます

4

3 に答える 3

4

クラスToybox::System::DeviceSettingsにはメソッドがありscreenShape()ます。

次の戻り値があります。

  • SCREEN_SHAPE_ROUND = 1
  • SCREEN_SHAPE_SEMI_ROUND = 2
  • SCREEN_SHAPE_RECTANGLE = 3
于 2016-11-04T08:19:04.073 に答える
2

リソース コンパイラを使用して、さまざまな画面ジオメトリのリソースを指定できます。これを利用して、アプリが実行されているデバイスを特定できます。

プロジェクトでは、プロジェクトのルートにデバイス固有のディレクトリを作成して、サポートするデバイスごとに一意のリソース セット (文字列、画像、メニューなどを含む) を指定します (例: 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 を使用して購入することもできます。これにより、すべての固有のデバイス モデルを処理するロジックを記述する必要がなくなります。

于 2015-12-21T20:40:41.873 に答える
1

直接的な機能はないようですが、ウォッチフェイスの幅と高さをいつでも確認できます。

dc.getWidth(), dc.getHeight()

たとえば 218px のように等しい場合は、Fenix 3であり、明らかに丸い顔です。205px x 148px の場合は、正方形のvívoactiveを扱っています。

onLayoutから呼び出すことができる関数を書くかもしれません:

function isRoundFace (dc) {
    return dc.getWidth() == dc.getHeight();
}
于 2015-10-02T20:05:52.860 に答える