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
...
}
}
如果您愿意,您可以稍微抽象一下,使用更通用的设备类型(如“圆形”、“方形”等)购买,这样您就不必编写逻辑来处理每个独特的设备模型。
似乎没有直接功能,但您始终可以检查表盘的宽度和高度:
dc.getWidth(), dc.getHeight()
如果它们相等,例如 218 像素,则您拥有Fenix 3并且显然是圆脸。如果它们是 205 像素 x 148 像素,那么您正在处理一个方形的vívoactive。
也许写一个你可以从 onLayout 调用的函数:
function isRoundFace (dc) {
return dc.getWidth() == dc.getHeight();
}