如何检查手表是圆形还是方形

时间:2015-07-28 09:56:58

标签: garmin connectiq

connectIQ API是否有可能检查手表是圆形还是方形?

我的应用正在为计时器绘制一个进度条,如果我找到一种方法来确定屏幕是圆形还是方形,我可以将其设为通用

3 个答案:

答案 0 :(得分:3)

在课堂上:Toybox::System::DeviceSettings是一种方法screenShape(),看起来像你想要的。

答案 1 :(得分:2)

似乎没有直接的功能,但您可以随时检查表面的宽度和高度:

dc.getWidth(), dc.getHeight()

如果它们相等,比如218px,你有一个 Fenix 3 ,显然是圆脸。如果它们是205px x 148px,那么你正在处理一个正面vívoactive

也许写一个你可以从onLayout调用的函数:

function isRoundFace (dc) {
    return dc.getWidth() == dc.getHeight();
}

答案 2 :(得分:2)

可以使用resource compiler为不同的屏幕几何体指定资源。这可以用来识别应用程序在哪个设备上运行。

在项目中,通过在项目的根目录中创建特定于设备的目录,为要支持的每个设备指定一组唯一的资源(包括字符串,图像和菜单等)(例如资源-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
        ...
    }
}

如果您愿意,可以稍微抽象一下,使用更通用的设备类型购买,例如&#39; round&#39; square&#39; square&#39;等,这样您就不必写了处理每个独特设备模型的逻辑。