Как определить, запущено ли приложение на мобильном устройстве или на рабочем столе

Я использую Ubuntu SDK для разработки приложения QML, которое работает как на настольном компьютере, так и на мобильных устройствах. В зависимости от того, где он работает на настольном компьютере или на устройстве, определенное поведение должно отличаться.

Каков рекомендуемый способ программного определения, запущено ли приложение на рабочем столе или на мобильном устройстве?

2
задан 9 June 2013 в 16:44

2 ответа

На данный момент единственный способ обнаружить это - проверить ширину и высоту приложения. Например, предполагая, что ширина телефона xxheight составляет 40x71 GU (портрет по умолчанию), планшет - 160x100 GU (пейзаж по умолчанию), все, что выше 160x100 GU, может рассматриваться как рабочий стол.

Существуют планы предоставления флагов, например, для определения того, подключена ли HW-клавиатура, указывающее устройство, ASO, однако эти флаги не следует использовать отдельно для определения форм-фактора рабочего стола, поскольку вы можете подключить клавиатуру мыши / HW к телефону. / планшет через блютус.

0
ответ дан 9 June 2013 в 16:44

@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 
0
ответ дан 9 June 2013 в 16:44

Другие вопросы по тегам:

Похожие вопросы: