C

Embedded Clock and Contacts Apps

An app that embeds the Clock and Contacts apps in floating window using the Qt for Android Automotive ActivityView type.

"ActivityView Dialogs Example Screenshot"

Building and deploying the example

See specific steps relating to building and deploying Qt for Android Automotive examples.

Including the API

To use the ActivityView plugin in Qt Quick application, first, we have to import the Qt for Android Automotive ActivityView module in QML:

import QtAndroidAutomotive.ActivityView

Wrapping an application inside the floating window

In the example, we implement a floating window QML type. This type is defined in DialogWindow.qml and it encapsulates the visual appearance and behavior.

Next, in ContainerWindow.qml, we will declare a ListModel as activitiesModel, with two elements of ListElement type, which holds properties required to create DialogWindow instance.

ListModel {
    id: activitiesModel

    ListElement {
        maximized: false
        minimized: false
        packageName: "com.android.deskclock"
        running: false
        symbol: "🕑"
        title: "Clock"
    }

    ListElement {
        maximized: false
        minimized: false
        packageName: "com.android.contacts"
        running: false
        symbol: "👤"
        title: "Contacts"
    }
}

Using ActivityView

The ActivityView QML API related functionality is covered by the ActivityView item placed inside DialogWindow, and by setting parameters of each embedded Activity.

ActivityView {
    id: activityView

    packageName: root.running ? root.packageName : ""
    usePlaceholder: edgeBottomRight.active

    placeholder: Text {
        id: activitySymbol

        font.pixelSize: 64
        horizontalAlignment: Text.AlignHCenter
        text: root.symbol
        verticalAlignment: Text.AlignVCenter
    }

    anchors {
        bottom: parent.bottom
        bottomMargin: root.radius / 2
        left: parent.left
        leftMargin: root.radius / 2
        right: parent.right
        rightMargin: root.radius / 2
        top: titleBar.bottom
    }
}

By using the DialogWindow component as a Repeater delegate, we can now instantiate floating windows, which will wrap the Activities of Android Applications. In this example we are embedding the Clock and Contacts applications inside these two windows.

Repeater {
    id: dialogRepeater
    model: activitiesModel

    DialogWindow {
        id: dialogWindow

        required property int index
        property rect lastSize: Qt.rect(x, y, width, height)

        titleBar.dragArea.target: dialogWindow
        height: (Window.height * 2) / 3
        width: Window.width / 2
        x: (index + 1) * 32
        y: (index + 1) * 32

    }
}

Available under certain Qt licenses.
Find out more.