我正在使用 Ubuntu SDK 开发一款可在桌面和移动设备上运行的 QML 应用。根据它在桌面或设备上的运行位置,某些行为应该有所不同。
以编程方式检测应用程序是在桌面还是在移动设备上运行的推荐方法是什么?
答案1
目前,检测它的唯一方法是检查应用程序的宽度和高度。例如,假设手机的宽度 x 高度为 40x71 GU(默认纵向),平板电脑为 160x100 GU(默认横向),任何超过 160x100 GU 的东西都可以被视为桌面。
有计划提供标志来识别例如是否连接了硬件键盘、指点设备、ASO,但是这些标志不应单独用于识别桌面外形尺寸,因为您可以通过蓝牙将鼠标/硬件键盘连接到手机/平板电脑。
答案2
@zsombi 所以是这样的吗?
MainView {
id: mainView
objectName: "mainView"
applicationName: "myapp"
automaticOrientation: true
width: units.gu(40)
height: units.gu(71)
//detect whether an app is running on a mobile device or on the desktop, base on screen-size
property bool desktop: false;
function sizeChanged()
{
if(mainView.width > units.gu(160) && mainView.height < units.gu(100))
desktop = true;
else
desktop = false;
}
onWidthChanged: {
sizeChanged();
}
onHeightChanged: {
sizeChanged();
}
}
然后你可以做一个
if(desktop)
//Desktop
else
//mobil